Skip to content

Instantly share code, notes, and snippets.

@balupton balupton/README.md
Last active Dec 12, 2015

Embed
What would you like to do?
@balupton's flow control and testing approach

@balupton's flow control and testing approach

Uses bal-util for flow and joe for testing. Feedback welcome. Inspired by this gist.

Pre-Requisites

npm install -g coffee-script
npm install bal-util joe

Example 1 returns:

$ coffee bal-util-flow-1.coffee
joe
joe ➞  moods tests
joe ➞  moods tests ➞  should do something useful with moods
joe ➞  moods tests ➞  should do something useful with moods ✔   
joe ➞  moods tests ✔  
joe ✔  

1/1 tests ran successfully, everything passed

Example 2 returns:

$ coffee bal-util-flow-2.coffee
joe
joe ➞  moods tests
joe ➞  moods tests ➞  should do something useful with moods
joe ➞  moods tests ➞  should do something useful with moods ✔   
joe ➞  moods tests ✔  
joe ✔  

1/1 tests ran successfully, everything passed
balUtil = require('bal-util')
joe = require('joe')
assert = require('assert')
# next is given (err,result)
store = (fixture,next) ->
return next(null,fixture) # example
# next is given (err,results)
load = (fixtures,next) ->
# Prepare
results = []
tasks = new balUtil.Group (err) ->
return next(err,results)
# Cycle
balUtil.each fixtures, (fixture) -> tasks.push (complete) ->
store fixture, (err,result) ->
return complete(err) if err
results.push(result)
return complete()
# Run
tasks.run('serial')
@
joe.describe "moods tests", (describe,it) ->
moods = [
"2013-02-01:n1k0:sunny"
"2013-02-02:n1k0:cloudy"
"2013-02-03:n1k0:stormy"
"2013-02-04:n1k0:rainy"
# … we could add many more
]
it "should do something useful with moods", (done) ->
load moods, (err,results) ->
return done(err) if err
assert.deepEqual(moods,results)
return done()
balUtil = require('bal-util')
joe = require('joe')
assert = require('assert')
# next is given (err,result)
store = (fixture,next) ->
return next(null,fixture) # example
# next is given (err,results)
load = (fixtures,next) ->
# Prepare
tasks = new balUtil.Group (err,lastTaskResult,taskResults) ->
results = (taskResult[1] for taskResult in taskResults)
return next(err,results)
# Cycle
balUtil.each fixtures, (fixture) -> tasks.push (complete) ->
store(fixture,complete) # complete is given (err,result)
# Run
tasks.run('serial')
@
joe.describe "moods tests", (describe,it) ->
moods = [
"2013-02-01:n1k0:sunny"
"2013-02-02:n1k0:cloudy"
"2013-02-03:n1k0:stormy"
"2013-02-04:n1k0:rainy"
# … we could add many more
]
it "should do something useful with moods", (done) ->
load moods, (err,results) ->
return done(err) if err
assert.deepEqual(moods,results)
return done()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.