Skip to content

Commit

Permalink
User Experience integration test
Browse files Browse the repository at this point in the history
  • Loading branch information
abdulhakim2902 committed Sep 2, 2021
1 parent 9e30261 commit 0914d6b
Showing 1 changed file with 172 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
import {expect} from '@loopback/testlab';
import {UserExperienceController} from '../../../controllers';
import {
ExperienceRepository,
UserExperienceRepository,
UserRepository,
} from '../../../repositories';
import {
givenEmptyDatabase,
givenExperienceInstance,
givenRepositories,
givenUserExperienceInstance,
givenUserInstance,
testdb,
} from '../../helpers';

describe('UserExperienceControllerIntegration', () => {
let userRepository: UserRepository;
let experienceRepository: ExperienceRepository;
let userExperienceRepository: UserExperienceRepository;
let controller: UserExperienceController;

before(async () => {
({userRepository, experienceRepository, userExperienceRepository} = await givenRepositories(
testdb,
));
});

before(async () => {
controller = new UserExperienceController(
userRepository,
userExperienceRepository,
experienceRepository,
);
});

beforeEach(async () => {
await givenEmptyDatabase(testdb);
});

it('includes User in find method result', async () => {
const user = await givenUserInstance(userRepository, {
id: '0x06cc7ed22ebd12ccc28fb9c0d14a5c4420a331d89a5fef48b915e8449ee618bc',
});

const userExperience = await givenUserExperienceInstance(userExperienceRepository, {
userId: user.id,
});

const response = await controller.find({include: ['user']});

expect(response).to.containDeep([
{
...userExperience,
user: user,
},
]);
});

it('includes Experience in find method result', async () => {
const user = await givenUserInstance(userRepository, {
id: '0x06cc7ed22ebd12ccc28fb9c0d14a5c4420a331d89a5fef48b915e8449ee618bc',
});

const experience = await givenExperienceInstance(experienceRepository, {createdBy: user.id});

const userExperience = await givenUserExperienceInstance(userExperienceRepository, {
experienceId: experience.id,
});

const response = await controller.find({include: ['experience']});

expect(response).to.containDeep([
{
...userExperience,
experience: experience,
},
]);
});

it('includes both User and Experience in find method result', async () => {
const user = await givenUserInstance(userRepository, {
id: '0x06cc7ed22ebd12ccc28fb9c0d14a5c4420a331d89a5fef48b915e8449ee618bc',
});

const experience = await givenExperienceInstance(experienceRepository, {
createdBy: user.id,
});

const userExperience = await givenUserExperienceInstance(userExperienceRepository, {
userId: user.id,
experienceId: experience.id,
});

const response = await controller.find({include: ['user', 'experience']});

expect(response).to.containDeep([
{
...userExperience,
user: user,
experience: experience,
},
]);
});

it('includes User in findById method result', async () => {
const user = await givenUserInstance(userRepository, {
id: '0x06cc7ed22ebd12ccc28fb9c0d14a5c4420a331d89a5fef48b915e8449ee618bc',
});

const userExperience = await givenUserExperienceInstance(userExperienceRepository, {
userId: user.id,
});

const response = await controller.findById(userExperience.id, {
include: ['user'],
});

expect(response).to.containDeep({
...userExperience,
user: user,
});
});

it('includes Experience in findById method result', async () => {
const user = await givenUserInstance(userRepository, {
id: '0x06cc7ed22ebd12ccc28fb9c0d14a5c4420a331d89a5fef48b915e8449ee618bc',
});

const experience = await givenExperienceInstance(experienceRepository, {
createdBy: user.id,
});

const userExperience = await givenUserExperienceInstance(userExperienceRepository, {
experienceId: experience.id,
});

const response = await controller.findById(userExperience.id, {
include: ['experience'],
});

expect(response).to.containDeep({
...userExperience,
experience: experience,
});
});

it('includes both User and Experience in findById method result', async () => {
const user = await givenUserInstance(userRepository, {
id: '0x06cc7ed22ebd12ccc28fb9c0d14a5c4420a331d89a5fef48b915e8449ee618bc',
});

const experience = await givenExperienceInstance(experienceRepository, {
createdBy: user.id,
});

const userExperience = await givenUserExperienceInstance(userExperienceRepository, {
userId: user.id,
experienceId: experience.id,
});

const response = await controller.findById(userExperience.id, {
include: ['user', 'experience'],
});

expect(response).to.containDeep({
...userExperience,
user: user,
experience: experience,
});
});
});

0 comments on commit 0914d6b

Please sign in to comment.