Skip to content

Commit b9ef6c6

Browse files
SangilYuneleanorreem
authored andcommitted
Add test cases for createPartner method
1 parent d602da1 commit b9ef6c6

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

src/partner/partner.service.spec.ts

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { createMock, DeepMocked } from '@golevelup/ts-jest';
2+
import { Test, TestingModule } from '@nestjs/testing';
3+
import { getRepositoryToken } from '@nestjs/typeorm';
4+
import { PartnerEntity } from '../entities/partner.entity';
5+
import { PartnerService } from './partner.service';
6+
import { Repository } from 'typeorm';
7+
import { PartnerAccessEntity } from '../entities/partner-access.entity';
8+
import { PartnerAdminEntity } from '../entities/partner-admin.entity';
9+
import { UserEntity } from '../entities/user.entity';
10+
import { mockPartnerRepositoryMethods } from '../../test/utils/mockedServices';
11+
import { mockPartnerEntity } from '../../test/utils/mockData';
12+
13+
const createPartnerDto = {
14+
name: mockPartnerEntity.name,
15+
};
16+
describe('PartnerService', () => {
17+
let service: PartnerService;
18+
let mockPartnerRepository: DeepMocked<Repository<PartnerEntity>>;
19+
let mockPartnerAccessRepository: DeepMocked<Repository<PartnerAccessEntity>>;
20+
let mockPartnerAdminRepository: DeepMocked<Repository<PartnerAdminEntity>>;
21+
let mockUserRepository: DeepMocked<Repository<UserEntity>>;
22+
23+
beforeEach(async () => {
24+
mockPartnerRepository = createMock<Repository<PartnerEntity>>(
25+
mockPartnerRepositoryMethods,
26+
);
27+
mockPartnerAccessRepository = createMock<Repository<PartnerAccessEntity>>();
28+
mockPartnerAdminRepository = createMock<Repository<PartnerAdminEntity>>();
29+
mockUserRepository = createMock<Repository<UserEntity>>();
30+
31+
const module: TestingModule = await Test.createTestingModule({
32+
providers: [
33+
PartnerService,
34+
{ provide: getRepositoryToken(PartnerEntity), useValue: mockPartnerRepository },
35+
{ provide: getRepositoryToken(PartnerAccessEntity), useValue: mockPartnerAccessRepository },
36+
{ provide: getRepositoryToken(PartnerAdminEntity), useValue: mockPartnerAdminRepository },
37+
{ provide: getRepositoryToken(UserEntity), useValue: mockUserRepository },
38+
],
39+
}).compile();
40+
41+
service = module.get<PartnerService>(PartnerService);
42+
});
43+
44+
it('should be defined', () => {
45+
expect(service).toBeDefined();
46+
});
47+
48+
describe('createPartner', () => {
49+
it('when supplied with correct data should return new partner', async () => {
50+
const response = await service.createPartner(createPartnerDto);
51+
expect(response).toMatchObject(createPartnerDto);
52+
})
53+
it('when supplied with a name that already exists, it should throw error', async () => {
54+
jest
55+
.spyOn(mockPartnerRepository, 'create')
56+
.mockImplementationOnce(() => {
57+
throw ({ code: '23505' });
58+
});
59+
await expect(service.createPartner(createPartnerDto)).rejects.toThrow();
60+
})
61+
});
62+
});

0 commit comments

Comments
 (0)