TEST: Set up for testing via zuul/sauce labs (#86)

This requires the .travis.yml to be updated with the open sauce credentials
as explained at https://github.com/defunctzombie/zuul/wiki/Travis-ci#5-final-step
This commit is contained in:
Todd Kennedy
2016-06-29 08:06:04 -07:00
committed by GitHub
parent 31d863fdad
commit 64436a2a80
7 changed files with 131 additions and 9 deletions
+60
View File
@@ -0,0 +1,60 @@
const tape = require('tape')
const choo = require('../../')
tape('should render on the client', function (t) {
t.test('state should not be mutable', function (t) {
t.plan(4)
const app = choo()
const state = {
foo: 'baz',
beep: 'boop'
}
app.model({
state: state,
namespace: 'test',
reducers: {
'no-reducer-mutate': (action, state) => {
return {}
},
'mutate-on-return': (action, state) => {
delete action.type
return action
}
},
effects: {
'triggers-reducers': (action, state, send) => {
send('test:mutate-on-return', {beep: 'barp'})
}
}
})
let loop = -1
const asserts = [
(state) => t.deepEqual(state, {foo: 'baz', beep: 'boop'}, 'intial state'),
(state) => t.deepEqual(state, {foo: 'baz', beep: 'boop'}, 'no change in state'),
(state) => t.deepEqual(state, {foo: 'oof', beep: 'boop'}, 'change in state from reducer'),
(state) => t.deepEqual(state, {foo: 'oof', beep: 'barp'}, 'change in state from effect')
]
const triggers = [
(send) => send('test:no-reducer-mutate'),
(send) => send('test:mutate-on-return', {foo: 'oof'}),
(send) => send('test:triggers-reducers')
]
app.router((route) => [
route('/', function (params, state, send) {
++loop
asserts[loop] && asserts[loop](state.test)
setTimeout(() => triggers[loop] && triggers[loop](send), 5)
return choo.view`<div><span class="test">${state.foo}:${state.beep}</span></div>`
})
])
const tree = app.start()
document.body.appendChild(tree)
})
})