update docs
This commit is contained in:
		
							
								
								
									
										3
									
								
								dist/tapbundle.classes.taptest.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								dist/tapbundle.classes.taptest.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +1,6 @@ | |||||||
| import { TapTools } from './tapbundle.classes.taptools'; | import { TapTools } from './tapbundle.classes.taptools'; | ||||||
| import { HrtMeasurement } from 'early'; | import { HrtMeasurement } from 'early'; | ||||||
|  | import { Deferred } from 'smartq'; | ||||||
| export declare type TTestStatus = 'success' | 'error' | 'pending' | 'errorAfterSuccess' | 'timeout'; | export declare type TTestStatus = 'success' | 'error' | 'pending' | 'errorAfterSuccess' | 'timeout'; | ||||||
| export interface ITestFunction { | export interface ITestFunction { | ||||||
|     (tapTools?: TapTools): Promise<any>; |     (tapTools?: TapTools): Promise<any>; | ||||||
| @@ -12,6 +13,8 @@ export declare class TapTest { | |||||||
|     status: TTestStatus; |     status: TTestStatus; | ||||||
|     tapTools: TapTools; |     tapTools: TapTools; | ||||||
|     testFunction: ITestFunction; |     testFunction: ITestFunction; | ||||||
|  |     testDeferred: Deferred<TapTest>; | ||||||
|  |     testPromise: Promise<TapTest>; | ||||||
|     /** |     /** | ||||||
|      * constructor |      * constructor | ||||||
|      */ |      */ | ||||||
|   | |||||||
							
								
								
									
										9
									
								
								dist/tapbundle.classes.taptest.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								dist/tapbundle.classes.taptest.js
									
									
									
									
										vendored
									
									
								
							| @@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | |||||||
|     }); |     }); | ||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | const plugins = require("./tapbundle.plugins"); | ||||||
| const tapbundle_classes_taptools_1 = require("./tapbundle.classes.taptools"); | const tapbundle_classes_taptools_1 = require("./tapbundle.classes.taptools"); | ||||||
| // imported interfaces | // imported interfaces | ||||||
| const early_1 = require("early"); | const early_1 = require("early"); | ||||||
| @@ -16,6 +17,8 @@ class TapTest { | |||||||
|      * constructor |      * constructor | ||||||
|      */ |      */ | ||||||
|     constructor(optionsArg) { |     constructor(optionsArg) { | ||||||
|  |         this.testDeferred = plugins.smartq.defer(); | ||||||
|  |         this.testPromise = this.testDeferred.promise; | ||||||
|         this.description = optionsArg.description; |         this.description = optionsArg.description; | ||||||
|         this.hrtMeasurement = new early_1.HrtMeasurement(); |         this.hrtMeasurement = new early_1.HrtMeasurement(); | ||||||
|         this.parallel = optionsArg.parallel; |         this.parallel = optionsArg.parallel; | ||||||
| @@ -37,14 +40,18 @@ class TapTest { | |||||||
|                 this.hrtMeasurement.stop(); |                 this.hrtMeasurement.stop(); | ||||||
|                 console.log(`ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`); |                 console.log(`ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`); | ||||||
|                 this.status = 'success'; |                 this.status = 'success'; | ||||||
|  |                 this.testDeferred.resolve(this); | ||||||
|             } |             } | ||||||
|             catch (err) { |             catch (err) { | ||||||
|                 this.hrtMeasurement.stop(); |                 this.hrtMeasurement.stop(); | ||||||
|                 console.log(`not ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`); |                 console.log(`not ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`); | ||||||
|  |                 this.testDeferred.reject(); | ||||||
|  |                 // if the test has already succeeded before | ||||||
|                 if (this.status === 'success') { |                 if (this.status === 'success') { | ||||||
|                     this.status = 'errorAfterSuccess'; |                     this.status = 'errorAfterSuccess'; | ||||||
|                     console.log('!!! ALERT !!!: weird behaviour, since test has been already successfull'); |                     console.log('!!! ALERT !!!: weird behaviour, since test has been already successfull'); | ||||||
|                 } |                 } | ||||||
|  |                 // if the test is allowed to fail | ||||||
|                 if (this.failureAllowed) { |                 if (this.failureAllowed) { | ||||||
|                     console.log(`please note: failure allowed!`); |                     console.log(`please note: failure allowed!`); | ||||||
|                 } |                 } | ||||||
| @@ -54,4 +61,4 @@ class TapTest { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| exports.TapTest = TapTest; | exports.TapTest = TapTest; | ||||||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLmNsYXNzZXMudGFwdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RhcGJ1bmRsZS5jbGFzc2VzLnRhcHRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBLDZFQUF1RDtBQUV2RCxzQkFBc0I7QUFDdEIsaUNBQXNDO0FBVXRDO0lBUUU7O09BRUc7SUFDSCxZQUFhLFVBSVo7UUFDQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUE7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHNCQUFjLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUE7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHFDQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFBO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNHLEdBQUcsQ0FBRSxVQUFrQjs7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUMzQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDdEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUM5QixNQUFNLElBQUksS0FBSyxDQUFFLGtDQUFrQyxDQUFDLENBQUE7Z0JBQ3RELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsV0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUE7Z0JBQ3RHLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFBO1lBQ3pCLENBQUM7WUFBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUE7Z0JBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxVQUFVLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxXQUFXLFdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFBO2dCQUMxRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUE7b0JBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUVBQXlFLENBQUMsQ0FBQTtnQkFDeEYsQ0FBQztnQkFDRCxFQUFFLENBQUEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO2dCQUM5QyxDQUFDO2dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDbEIsQ0FBQztRQUNILENBQUM7S0FBQTtDQUNGO0FBbERELDBCQWtEQyJ9 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLmNsYXNzZXMudGFwdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RhcGJ1bmRsZS5jbGFzc2VzLnRhcHRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLCtDQUE4QztBQUU5Qyw2RUFBdUQ7QUFFdkQsc0JBQXNCO0FBQ3RCLGlDQUFzQztBQVd0QztJQVVFOztPQUVHO0lBQ0gsWUFBYSxVQUlaO1FBVEQsaUJBQVksR0FBc0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUN4RCxnQkFBVyxHQUFxQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQTtRQVN2RCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUE7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHNCQUFjLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUE7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHFDQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFBO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNHLEdBQUcsQ0FBRSxVQUFrQjs7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUMzQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDdEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUM5QixNQUFNLElBQUksS0FBSyxDQUFFLGtDQUFrQyxDQUFDLENBQUE7Z0JBQ3RELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsV0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUE7Z0JBQ3RHLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFBO2dCQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxDQUFDO1lBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDYixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFBO2dCQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsVUFBVSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsV0FBVyxXQUFXLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQTtnQkFDMUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtnQkFFMUIsMkNBQTJDO2dCQUMzQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUE7b0JBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUVBQXlFLENBQUMsQ0FBQTtnQkFDeEYsQ0FBQztnQkFFRCxpQ0FBaUM7Z0JBQ2pDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO29CQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUE7Z0JBQzlDLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsQixDQUFDO1FBQ0gsQ0FBQztLQUFBO0NBQ0Y7QUExREQsMEJBMERDIn0= | ||||||
| @@ -24,16 +24,51 @@ Use TypeScript for best in class instellisense. | |||||||
| This package includes | This package includes | ||||||
|  |  | ||||||
| * tap compatible testing framework written in TypeScript | * tap compatible testing framework written in TypeScript | ||||||
| * npm package chai | * npm package chai (through smartchai) | ||||||
| * npm package chai-as-promised | * npm package chai-as-promised (through smartchai) | ||||||
| * npm package @types/tap | * npm package chai-string (through smartchai) | ||||||
| * npm pacakge @types/chai | * npm pacakge @types/chai (through smartchi) | ||||||
| * npm package @types/chai-as-promised | * npm package @types/chai-as-promised (through smartchai) | ||||||
|  | * npm package @types/chai-string (through smartchai) | ||||||
|  |  | ||||||
| In other words: This pacakge is fully typed :) | It also implements its own tap testing engine, that is fully typed. | ||||||
|  |  | ||||||
|  | In other words: This package is fully typed :) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### Get started with writing your first test file. | ||||||
| ```javascript | ```javascript | ||||||
| import {tap, expect} from 'tapbundle' // has typings in place | import {tap, expect} from 'tapbundle' // has typings in place | ||||||
|  |  | ||||||
|  | import * as myAwesomeModuleToTest from '../dist/index' // '../dist/index' is the standard path for npmts modules | ||||||
|  |  | ||||||
|  | tap.test('my awesome description', async (tools) => { // tools are optional parameter | ||||||
|  |   tools.timeout(2000) // test will fail if it takes longer than 2000 millisenconds | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | let myTest2 = tap.test('my awesome test 2', async (tools) => { | ||||||
|  |   myAwsomeModuleToTest.doSomethingAsync() // we don't wait here | ||||||
|  |   await tools.delayFor(3000) // yay. promise based timeouts :) | ||||||
|  |   console.log('This gets logged 3000 ms into the test') | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | tap.test('my awesome test 3', async (tools) => { | ||||||
|  |   expect(true).to.be.true // will not throw | ||||||
|  |   await expect(tools.delayFor(2000)).to.eventuall.be.fulfilled // yay expect promises :) | ||||||
|  |   expect((await myTest2.promise).hrtMeasurement.milliSeconds > 1000).to.be.true // access other tests metadata :) | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | let myTest4 = tap.testParallel('my awesome test 4', async (tools) => { | ||||||
|  |   await tools.delayFor(4000) | ||||||
|  |   console.log('logs to console after 4 seconds into this test') | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | tap.test('my awesome test 5', async () => { | ||||||
|  |   expect(myTest4.status).to.equal('pending') // since this test will likely finish before myTest4. | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | tap.start() // start the test, will automtically plan tests for you (so the tap parser knows when tests exit bofore they are finished) | ||||||
|  |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For further information read the linked docs at the top of this README. | For further information read the linked docs at the top of this README. | ||||||
|   | |||||||
| @@ -1,8 +1,10 @@ | |||||||
|  | import * as plugins from './tapbundle.plugins' | ||||||
| import { tapCreator } from './tapbundle.tapcreator' | import { tapCreator } from './tapbundle.tapcreator' | ||||||
| import { TapTools } from './tapbundle.classes.taptools' | import { TapTools } from './tapbundle.classes.taptools' | ||||||
|  |  | ||||||
| // imported interfaces | // imported interfaces | ||||||
| import { HrtMeasurement } from 'early' | import { HrtMeasurement } from 'early' | ||||||
|  | import { Deferred } from 'smartq' | ||||||
|  |  | ||||||
| // interfaces | // interfaces | ||||||
| export type TTestStatus = 'success' | 'error' | 'pending' | 'errorAfterSuccess' | 'timeout' | export type TTestStatus = 'success' | 'error' | 'pending' | 'errorAfterSuccess' | 'timeout' | ||||||
| @@ -20,6 +22,8 @@ export class TapTest { | |||||||
|   status: TTestStatus |   status: TTestStatus | ||||||
|   tapTools: TapTools |   tapTools: TapTools | ||||||
|   testFunction: ITestFunction |   testFunction: ITestFunction | ||||||
|  |   testDeferred: Deferred<TapTest> = plugins.smartq.defer() | ||||||
|  |   testPromise: Promise<TapTest> = this.testDeferred.promise | ||||||
|   /** |   /** | ||||||
|    * constructor |    * constructor | ||||||
|    */ |    */ | ||||||
| @@ -49,13 +53,19 @@ export class TapTest { | |||||||
|       this.hrtMeasurement.stop() |       this.hrtMeasurement.stop() | ||||||
|       console.log(`ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`) |       console.log(`ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`) | ||||||
|       this.status = 'success' |       this.status = 'success' | ||||||
|  |       this.testDeferred.resolve(this) | ||||||
|     } catch (err) { |     } catch (err) { | ||||||
|       this.hrtMeasurement.stop() |       this.hrtMeasurement.stop() | ||||||
|       console.log(`not ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`) |       console.log(`not ok ${testKeyArg + 1} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`) | ||||||
|  |       this.testDeferred.reject() | ||||||
|  |  | ||||||
|  |       // if the test has already succeeded before | ||||||
|       if (this.status === 'success') { |       if (this.status === 'success') { | ||||||
|         this.status = 'errorAfterSuccess' |         this.status = 'errorAfterSuccess' | ||||||
|         console.log('!!! ALERT !!!: weird behaviour, since test has been already successfull') |         console.log('!!! ALERT !!!: weird behaviour, since test has been already successfull') | ||||||
|       } |       } | ||||||
|  |  | ||||||
|  |       // if the test is allowed to fail | ||||||
|       if (this.failureAllowed) { |       if (this.failureAllowed) { | ||||||
|         console.log(`please note: failure allowed!`) |         console.log(`please note: failure allowed!`) | ||||||
|       } |       } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user