bullpen/backend/jest.setup.js

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
});