tracker.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. 'use strict'
  2. var test = require('tap').test
  3. var Tracker = require('../index.js').Tracker
  4. var testEvent = require('./lib/test-event.js')
  5. var name = 'test'
  6. test('initialization', function (t) {
  7. var simple = new Tracker(name)
  8. t.is(simple.completed(), 0, 'Nothing todo is 0 completion')
  9. t.done()
  10. })
  11. var track
  12. var todo = 100
  13. test('completion', function (t) {
  14. track = new Tracker(name, todo)
  15. t.is(track.completed(), 0, 'Nothing done is 0 completion')
  16. testEvent(track, 'change', afterCompleteWork)
  17. track.completeWork(todo)
  18. t.is(track.completed(), 1, 'completeWork: 100% completed')
  19. function afterCompleteWork (er, onChangeName) {
  20. t.is(er, null, 'completeWork: on change event fired')
  21. t.is(onChangeName, name, 'completeWork: on change emits the correct name')
  22. t.done()
  23. }
  24. })
  25. test('add more work', function (t) {
  26. testEvent(track, 'change', afterAddWork)
  27. track.addWork(todo)
  28. t.is(track.completed(), 0.5, 'addWork: 50% completed')
  29. function afterAddWork (er, onChangeName) {
  30. t.is(er, null, 'addWork: on change event fired')
  31. t.is(onChangeName, name, 'addWork: on change emits the correct name')
  32. t.done()
  33. }
  34. })
  35. test('complete more work', function (t) {
  36. track.completeWork(200)
  37. t.is(track.completed(), 1, 'completeWork: Over completion is still only 100% complete')
  38. t.done()
  39. })
  40. test('finish is always 100%', function (t) {
  41. var finishtest = new Tracker(name, todo)
  42. finishtest.completeWork(50)
  43. finishtest.finish()
  44. t.is(finishtest.completed(), 1, 'finish: Explicitly finishing moves to 100%')
  45. t.done()
  46. })