drews-mixins
Version:
A couple underscore.js mixins
206 lines (159 loc) • 5.37 kB
text/coffeescript
module "My mixins"
causesError = (func) ->
_.wait 100, () -> func "there was an error"
doesntCauseError = (func) ->
_.wait 100, () -> func null, "success", "you did it"
asyncTest "error helper with error ", () ->
errors = []
results = []
done = (error, result) ->
errors.push error
equal errors.length, 1
equal errors[0], "there was an error"
equal results.length, 0
start()
causesError _.graceful done, (result) ->
results.push result
equal true, false # should never get here
start()
asyncTest "error helper with error alternate", () ->
errors = []
results = []
done = (error) ->
errors.push error
equal errors.length, 1
equal errors[0], "there was an error"
equal results.length, 0
start()
causesError _.graceful(done) (result) ->
result.push result
equal true, false # should never get here
start()
asyncTest "error helper with error and extra param ", () ->
errors = []
results = []
done = (error, extra...) ->
errors.push error
equal errors.length, 1
equal errors[0], "there was an error"
equal results.length, 0
equal extra[0], "extra"
equal extra[1], "params"
start()
causesError _.graceful [done, "extra", "params" ], (result) ->
results.push result
equal true, false # should never get here
start()
asyncTest "error helper with error alternate and extra param", () ->
errors = []
results = []
done = (error, extra...) ->
errors.push error
equal errors.length, 1
equal errors[0], "there was an error"
equal results.length, 0
equal extra[0], "extra"
equal extra[1], "params"
start()
causesError _.graceful([done, "extra", "params"]) (result) ->
result.push result
equal true, false # should never get here
start()
asyncTest "error helper good ", () ->
errors = []
results = []
done = (error) ->
errors.push error
equal true, false # should never get here
start()
doesntCauseError _.graceful done, (result, result2) ->
results.push result
equal results.length, 1
equal results[0], "success"
equal result2, "you did it"
equal errors.length, 0
start()
asyncTest "error helper good alternate", () ->
errors = []
results = []
done = (error) ->
errors.push error
equal true, false # should never get here
start()
doesntCauseError _.graceful(done) (result, result2) ->
results.push result
equal results.length, 1
equal results[0], "success"
equal result2, "you did it"
equal errors.length, 0
start()
test "Populate Array", () ->
obj = {}
_.populateArray obj, "info", "the value"
_.populateArray obj, "info", "another"
equal obj.info[0], "the value", "populating blank array"
equal obj.info[1], "another", "populating existing array"
obj.there = []
_.populateArray obj, "there", "stuff"
equal obj.there[0], "stuff", "array existed from the get-go"
try
_.assertFail "got this", "exptected this", "_.assertFail works", "=="
catch e
_.assertEqual e.message, "_.assertFail works"
_.assertEqual e.expected, "exptected this"
_.assertEqual e.actual, "got this"
_.assertEqual e.operator, "=="
_.assertOk 1, 1, "these equal"
try
_.assertOk false, "don't equal"
catch e
_.assertEqual e.toString(), "AssertionError: don't equal", "Assert ok on false works"
_.assertEqual e.actual,false
_.assertEqual e.expected, true, "should have expected true"
_.assertEqual e.message, "don't equal"
_.assertEqual e.operator, "=="
_.assertOk 1, "should be ok"
_.assertEqual true, true, "true is true"
try
_.assertEqual false, true, "true isn't false!"
catch e
_.assertEqual e.expected, true
_.assertEqual e.actual, false
_.assertEqual e.message, "true isn't false!"
_.assertEqual e.toString(), "AssertionError: true isn't false!"
_.assertEqual e.operator, "=="
_.assertNotEqual false, true, "true isn't false on notEqual"
try
_.assertNotEqual false, false, "notEqual error"
catch e
_.assertEqual e.expected, false
_.assertEqual e.actual, false
_.assertEqual e.operator, "!="
console.log "pass #{_.getPassCount()}, fail #{_.getFailCount()}, total #{_.getAssertCount()}"
_.assertEqual _.getAssertCount(), 25, "There should be 25 tests"
_.assertEqual _.getFailCount(), 4, "4 failed tests"
_.assertEqual _.getPassCount(), 23, "23 passed tests. There was 21 but 2 more tests since"
fakeGetVideos = (url, done) ->
_.wait 100, -> done "no videos allowed"
fakeGetPictures = (accountId, done) ->
_.wait 200, -> done null, ["pic1", "pic2"]
fakeGetAudio = (tagName, done) ->
_.wait 300, -> done null, ["hello.wav"]
tasks =
videos: (done) ->
fakeGetVideos "http://.com", _.graceful done, (videos) ->
done null, videos
pics: (done) ->
fakeGetPictures "xyzzy", _.graceful done, (pics) ->
done null, pics
audio: (done) ->
fakeGetAudio "trees", _.graceful done, (audio) ->
done null, audio
_.parallel tasks, (err, values) ->
_.assertEqual err, null, "final error should be null"
_.assertEqual values.videos, null, "videos should be null"
_.assertOk _.isEqual values.pics, ["pic1", "pic2"]
_.assertOk _.isEqual values.audio, ["hello.wav"]
console.log "#{_.getAssertCount()} tests ran. #{_.getFailCount()} tests failed.
4 were supposed to fail because were testing the tests.
"