Skip to content

Commit 82481b4

Browse files
Merge pull request #124 from eduardobs79/master
Initial testing commit for latest developed components
2 parents f18d673 + 870177c commit 82481b4

3 files changed

Lines changed: 115 additions & 1 deletion

File tree

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
"react-addons-test-utils": "15.1.x",
8888
"stylus-loader": "1.4.3",
8989
"url-loader": "0.5.7",
90-
"webpack": "1.12.x"
90+
"webpack": "1.12.x",
91+
"mockery": "^1.7.0"
9192
}
9293
}

test/login.test.js

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import * as App from './start-app'
2+
3+
import { expect } from 'chai'
4+
import { describe, it, before } from 'mocha'
5+
import { renderIntoDocument, findAllInRenderedTree, isDOMComponent, Simulate } from 'react-addons-test-utils'
6+
7+
describe('Login', function () {
8+
this.timeout(0)
9+
10+
it('/auth/login should redirect to / if already logged in', function () {
11+
App.registerMock('../lib/auth', { getUserInfo: () => { return { fullName: 'Admin' } }})
12+
App.start()
13+
14+
App.store.dispatch(require('redux-simple-router').pushPath('/auth/login', App.store.getState().routing))
15+
let app = renderIntoDocument(App.root)
16+
17+
expect(App.store.getState().login.userInfo).to.not.be.null
18+
expect(App.store.getState().routing.path).to.equal('/')
19+
expect(App.store.getState().routing.replace).to.equal(true)
20+
})
21+
22+
it('user is redirected to previous page after authentication', function () {
23+
App.registerMock('../lib/auth', {
24+
getUserInfo: () => { return null },
25+
doLogin: (u, p, cb) => { cb(null, { fullName: 'Test'}) }
26+
})
27+
App.start()
28+
29+
App.store.dispatch(require('redux-simple-router').pushPath('/profile', App.store.getState().routing))
30+
let app = renderIntoDocument(App.root)
31+
32+
expect(App.store.getState().login.userInfo).to.be.null
33+
expect(App.store.getState().routing.path).to.equal('/auth/login')
34+
expect(App.store.getState().routing.replace).to.equal(true)
35+
36+
Simulate.submit(findAllInRenderedTree(app, (c) => { return isDOMComponent(c) && c.id == 'login-form' })[0])
37+
38+
expect(App.store.getState().login.userInfo).to.not.be.null
39+
expect(App.store.getState().routing.path).to.equal('/profile')
40+
expect(App.store.getState().routing.replace).to.equal(true)
41+
})
42+
43+
it('an alert is displayed if authentication fails', function () {
44+
App.registerMock('../lib/auth', {
45+
getUserInfo: () => { return null },
46+
doLogin: (u, p, cb) => { cb('Error') }
47+
})
48+
App.start()
49+
50+
App.store.dispatch(require('redux-simple-router').pushPath('/auth/login', App.store.getState().routing))
51+
let app = renderIntoDocument(App.root)
52+
53+
Simulate.submit(findAllInRenderedTree(app, (c) => { return isDOMComponent(c) && c.id == 'login-form' })[0])
54+
55+
expect(App.store.getState().login.userInfo).to.be.null
56+
expect(findAllInRenderedTree(app, (c) => { return isDOMComponent(c) && c.className.indexOf('alert') >= 0 }).length).to.equal(1)
57+
})
58+
59+
it('link to reset password is displayed', function () {
60+
App.registerMock('../lib/auth', {
61+
getUserInfo: () => { return null }
62+
})
63+
App.start()
64+
65+
App.store.dispatch(require('redux-simple-router').pushPath('/auth/login', App.store.getState().routing))
66+
let app = renderIntoDocument(App.root)
67+
68+
expect(App.store.getState().login.userInfo).to.be.null
69+
expect(findAllInRenderedTree(app, (c) => { return isDOMComponent(c) && c.href == '/auth/reset' }).length).to.equal(1)
70+
})
71+
})

test/start-app.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
require('./utils/test-dom')()
2+
3+
import mockery from 'mockery'
4+
import { createMemoryHistory } from 'history'
5+
6+
mockery.enable({
7+
warnOnUnregistered: false,
8+
warnOnReplace: false
9+
})
10+
11+
mockery.registerMock('../lib/auth', {
12+
getUserInfo: () => { return null }
13+
})
14+
15+
mockery.registerMock('superagent/lib/client', {
16+
})
17+
18+
mockery.registerMock('history', {
19+
createHistory: createMemoryHistory
20+
})
21+
22+
exports.registerMock = mockery.registerMock
23+
exports.deregisterMock = mockery.deregisterMock
24+
25+
exports.store = null
26+
exports.root = null
27+
28+
export function start() {
29+
for (let m in require.cache) // TODO Delete cache of modified files only
30+
if (m.indexOf('node_modules') < 0)
31+
delete require.cache[m]
32+
33+
let createRootReducer = require('../client/bootstrap/create-root-reducer' ).default
34+
let configureStore = require('../client/bootstrap/configure-store' ).default
35+
let createRootComponent = require('../client/bootstrap/create-root-component').default
36+
37+
let store = configureStore()(createRootReducer(), {})
38+
let root = createRootComponent(store)
39+
40+
exports.store = store
41+
exports.root = root
42+
}

0 commit comments

Comments
 (0)