UNPKG

1.66 kBJavaScriptView Raw
1"use strict"
2var test = require("tap").test
3var Tracker = require("../index.js").Tracker
4
5var timeoutError = new Error("timeout")
6var testEvent = function (obj,event,next) {
7 var timeout = setTimeout(function(){
8 obj.removeListener(event, eventHandler)
9 next(timeoutError)
10 }, 10)
11 var eventHandler = function () {
12 var args = Array.prototype.slice.call(arguments)
13 args.unshift(null)
14 clearTimeout(timeout)
15 next.apply(null, args)
16 }
17 obj.once(event, eventHandler)
18}
19
20test("Tracker", function (t) {
21 t.plan(10)
22
23 var name = "test"
24 var track = new Tracker(name)
25
26 t.is(track.completed(), 0, "Nothing todo is 0 completion")
27
28 var todo = 100
29 track = new Tracker(name, todo)
30 t.is(track.completed(), 0, "Nothing done is 0 completion")
31
32 testEvent(track, "change", afterCompleteWork)
33 track.completeWork(100)
34 function afterCompleteWork(er, onChangeName) {
35 t.is(er, null, "completeWork: on change event fired")
36 t.is(onChangeName, name, "completeWork: on change emits the correct name")
37 }
38 t.is(track.completed(), 1, "completeWork: 100% completed")
39
40 testEvent(track, "change", afterAddWork)
41 track.addWork(100)
42 function afterAddWork(er, onChangeName) {
43 t.is(er, null, "addWork: on change event fired")
44 t.is(onChangeName, name, "addWork: on change emits the correct name")
45 }
46 t.is(track.completed(), 0.5, "addWork: 50% completed")
47
48
49 track.completeWork(200)
50 t.is(track.completed(), 1, "completeWork: Over completion is still only 100% complete")
51
52 track = new Tracker(name, todo)
53 track.completeWork(50)
54 track.finish()
55 t.is(track.completed(), 1, "finish: Explicitly finishing moves to 100%")
56})