-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f205157
commit ccbf5cc
Showing
3 changed files
with
143 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
const request = require('supertest'); | ||
const mongoose = require('mongoose'); | ||
const User = require('./../../database/models/User'); | ||
|
||
const buildDB = require('./../../database/data/test'); | ||
const app = require('./../../app'); | ||
|
||
describe('Tesing for addTrainerToGroup route', () => { | ||
beforeAll(async () => { | ||
// build dummy data | ||
await buildDB(); | ||
}); | ||
|
||
afterAll(async () => { | ||
await mongoose.disconnect(); | ||
}); | ||
|
||
beforeEach(async () => { | ||
// build dummy data | ||
await buildDB(); | ||
}); | ||
|
||
test('test with adding new trainer', async done => { | ||
const localLead = await User.findOne({ email: '[email protected]' }); | ||
|
||
const localLeadLoginData = { | ||
email: '[email protected]', | ||
password: '123456', | ||
}; | ||
|
||
const data = { | ||
email: '[email protected]', | ||
name: 'New', | ||
region: 'North East', | ||
localLead: localLead._id, | ||
localLeadName: localLead.name, | ||
newUser: true, | ||
}; | ||
|
||
request(app) | ||
.post('/api/login') | ||
.send(localLeadLoginData) | ||
.expect('Content-Type', /json/) | ||
.expect(200) | ||
.end((err, result) => { | ||
const token = result.headers['set-cookie'][0].split(';')[0]; | ||
request(app) | ||
.post('/api/users/local-leads/group') | ||
.set('Cookie', [token]) | ||
.send(data) | ||
.expect(200) | ||
.end(async (error, response) => { | ||
const updatedLocalLead = await User.findOne({ | ||
email: '[email protected]', | ||
}); | ||
|
||
const createdTrainer = await User.findOne({ | ||
email: '[email protected]', | ||
}); | ||
|
||
// new trainer must be stored in DB | ||
expect(createdTrainer.role).toBe('trainer'); | ||
|
||
// new trainer must be belong to the local lead we sent | ||
expect(createdTrainer.localLead).toEqual(localLead._id); | ||
|
||
// local lead group must hove new additional trainer | ||
expect(localLead.trainersGroup).toHaveLength(3); | ||
expect(updatedLocalLead.trainersGroup).toHaveLength(4); | ||
|
||
// success message | ||
expect(response.body.success).toBe( | ||
`New has been added to ${localLead.name}'s group` | ||
); | ||
|
||
done(err); | ||
}); | ||
}); | ||
}); | ||
|
||
test('test with exists trainer', async done => { | ||
const localLead = await User.findOne({ email: '[email protected]' }); | ||
|
||
const localLeadLoginData = { | ||
email: '[email protected]', | ||
password: '123456', | ||
}; | ||
|
||
const trainer = await User.findOne({ role: 'trainer' }); | ||
|
||
const data = { | ||
email: trainer.email, | ||
localLead: localLead._id, | ||
localLeadName: localLead.name, | ||
newUser: false, | ||
}; | ||
|
||
request(app) | ||
.post('/api/login') | ||
.send(localLeadLoginData) | ||
.expect('Content-Type', /json/) | ||
.expect(200) | ||
.end((err, result) => { | ||
const token = result.headers['set-cookie'][0].split(';')[0]; | ||
request(app) | ||
.post('/api/users/local-leads/group') | ||
.set('Cookie', [token]) | ||
.send(data) | ||
.expect(200) | ||
.end(async (error, response) => { | ||
const updatedLocalLead = await User.findOne({ | ||
email: '[email protected]', | ||
}); | ||
|
||
const updatedTrainer = await User.findOne({ | ||
email: trainer.email, | ||
}); | ||
|
||
// new trainer must be stored in DB | ||
expect(updatedTrainer.role).toBe('trainer'); | ||
|
||
// new trainer must be belong to the local lead we sent | ||
expect(updatedTrainer.localLead).toEqual(localLead._id); | ||
|
||
// local lead group must hove new additional trainer | ||
expect(localLead.trainersGroup).toHaveLength(0); | ||
expect(updatedLocalLead.trainersGroup).toHaveLength(1); | ||
|
||
// success message | ||
expect(response.body.success).toBe( | ||
`${trainer.name} has been added to ${localLead.name}'s group` | ||
); | ||
|
||
done(err); | ||
}); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters