84 lines
2.4 KiB
JavaScript
84 lines
2.4 KiB
JavaScript
const db = require("./models/index");
|
|
const bcrypt = require("bcryptjs");
|
|
|
|
const { beforeAll, afterAll } = require('@jest/globals');
|
|
|
|
const { Auth: Auth, User: User, Player: Player, Role: Role, PitchType: PitchType } = db;
|
|
const Op = db.Sequelize.Op;
|
|
|
|
beforeAll(async () => {
|
|
await db.sequelize.sync({ force: true }); // Reset DB once for the entire test suite
|
|
await Role.destroy({ where: {} });
|
|
await Role.bulkCreate([
|
|
{ name: 'player' },
|
|
{ name: 'coach' },
|
|
{ name: 'admin' }
|
|
]);
|
|
const playerRole = await Role.findAll({
|
|
where: {
|
|
name: {
|
|
[Op.eq]: 'player'
|
|
}
|
|
}
|
|
});
|
|
const coachRole = await Role.findAll({
|
|
where: {
|
|
name: {
|
|
[Op.eq]: 'coach'
|
|
}
|
|
}
|
|
});
|
|
|
|
await Auth.destroy({ where: {} });
|
|
await User.destroy({ where: {} });
|
|
await Player.destroy({ where: {} });
|
|
await Auth.create({
|
|
email: 'player@example.com', password: 'hash1234'
|
|
}).then(auth => {
|
|
return User.create({
|
|
firstName: 'Alice',
|
|
lastName: 'Player',
|
|
dateOfBirth: '1990-01-01',
|
|
authId: auth.id
|
|
});
|
|
}).then(async user => {
|
|
await user.setRoles(playerRole);
|
|
return Player.create({
|
|
height: 172.7,
|
|
weight: 70.3,
|
|
gender: 'female',
|
|
bats: 'right',
|
|
throws: 'right',
|
|
jerseyNumber: 24,
|
|
state: 'active',
|
|
userId: user.id
|
|
})
|
|
});
|
|
|
|
await Auth.create({
|
|
email: 'coach@example.com', password: 'hash1234'
|
|
}).then(auth => {
|
|
return User.create({
|
|
firstName: 'Bob',
|
|
lastName: 'Coach',
|
|
dateOfBirth: '1990-01-01',
|
|
authId: auth.id
|
|
});
|
|
}).then(user => {
|
|
return user.setRoles(coachRole);
|
|
});
|
|
await PitchType.destroy({ where: {} });
|
|
await PitchType.bulkCreate([
|
|
{ name: 'Fastball', abbreviation: 'FB' },
|
|
{ name: 'Curveball', abbreviation: 'CB' },
|
|
{ name: 'Slider', abbreviation: 'SL' },
|
|
{ name: 'Changeup', abbreviation: 'CH' },
|
|
{ name: 'Cutter', abbreviation: 'CUT' },
|
|
{ name: 'Sweeper', abbreviation: 'SW' },
|
|
{ name: 'Slurve', abbreviation: 'SLV' }
|
|
]);
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await db.sequelize.close(); // Close connection after all tests
|
|
}); |