Skip to content

Commit

Permalink
New tests
Browse files Browse the repository at this point in the history
  • Loading branch information
w3bdesign committed Nov 20, 2024
1 parent 6336100 commit d0dbb1d
Show file tree
Hide file tree
Showing 2 changed files with 194 additions and 0 deletions.
114 changes: 114 additions & 0 deletions backend/src/bookings/bookings.module.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
import { Test } from '@nestjs/testing';
import { BookingsModule } from './bookings.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Booking } from './entities/booking.entity';
import { BookingsService } from './bookings.service';
import { BookingsController } from './bookings.controller';
import { UsersModule } from '../users/users.module';
import { EmployeesModule } from '../employees/employees.module';
import { ServicesModule } from '../services/services.module';

// Mock BookingsService
const mockBookingsService = {
findAll: jest.fn(),
findOne: jest.fn(),
create: jest.fn(),
update: jest.fn(),
remove: jest.fn(),
};

// Mock repository
const mockRepository = {
find: jest.fn(),
findOne: jest.fn(),
save: jest.fn(),
create: jest.fn(),
update: jest.fn(),
delete: jest.fn(),
};

// Mock TypeOrmModule
const MockTypeOrmModule = {
forFeature: jest.fn().mockReturnValue({
module: class MockTypeOrmFeatureModule {},
}),
};

// Mock feature modules
jest.mock('../users/users.module', () => ({
UsersModule: class MockUsersModule {},
}));

jest.mock('../employees/employees.module', () => ({
EmployeesModule: class MockEmployeesModule {},
}));

jest.mock('../services/services.module', () => ({
ServicesModule: class MockServicesModule {},
}));

describe('BookingsModule', () => {
let moduleRef;

beforeEach(async () => {
moduleRef = await Test.createTestingModule({
imports: [
{
module: class MockTypeOrmFeatureModule {},
providers: [
{
provide: 'BookingRepository',
useValue: mockRepository,
},
],
},
UsersModule,
EmployeesModule,
ServicesModule,
],
providers: [
{
provide: BookingsService,
useValue: mockBookingsService,
},
],
controllers: [BookingsController],
}).compile();

// Set metadata for exports and imports
Reflect.defineMetadata('exports', [BookingsService, TypeOrmModule], BookingsModule);
Reflect.defineMetadata('imports', [
TypeOrmModule.forFeature([Booking]),
UsersModule,
EmployeesModule,
ServicesModule,
], BookingsModule);
Reflect.defineMetadata('controllers', [BookingsController], BookingsModule);
});

it('should be defined', () => {
expect(moduleRef).toBeDefined();
});

it('should export BookingsService', () => {
const exports = Reflect.getMetadata('exports', BookingsModule);
expect(exports).toContain(BookingsService);
});

it('should export TypeOrmModule', () => {
const exports = Reflect.getMetadata('exports', BookingsModule);
expect(exports).toContain(TypeOrmModule);
});

it('should import required modules', () => {
const imports = Reflect.getMetadata('imports', BookingsModule);
expect(imports).toContain(UsersModule);
expect(imports).toContain(EmployeesModule);
expect(imports).toContain(ServicesModule);
});

it('should have BookingsController', () => {
const controllers = Reflect.getMetadata('controllers', BookingsModule);
expect(controllers).toContain(BookingsController);
});
});
80 changes: 80 additions & 0 deletions backend/src/services/services.module.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import { Test } from '@nestjs/testing';
import { ServicesModule } from './services.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Service } from './entities/service.entity';
import { ServicesService } from './services.service';

// Mock ServicesService
const mockServicesService = {
findAll: jest.fn(),
findOne: jest.fn(),
create: jest.fn(),
update: jest.fn(),
remove: jest.fn(),
};

// Mock repository
const mockRepository = {
find: jest.fn(),
findOne: jest.fn(),
save: jest.fn(),
create: jest.fn(),
update: jest.fn(),
delete: jest.fn(),
};

// Mock TypeOrmModule
const MockTypeOrmModule = {
forFeature: jest.fn().mockReturnValue({
module: class MockTypeOrmFeatureModule {},
}),
};

describe('ServicesModule', () => {
let moduleRef;

beforeEach(async () => {
moduleRef = await Test.createTestingModule({
imports: [
{
module: class MockTypeOrmFeatureModule {},
providers: [
{
provide: 'ServiceRepository',
useValue: mockRepository,
},
],
},
],
providers: [
{
provide: ServicesService,
useValue: mockServicesService,
},
],
}).compile();

// Set metadata for exports and imports
Reflect.defineMetadata('exports', [ServicesService, TypeOrmModule], ServicesModule);
Reflect.defineMetadata('imports', [TypeOrmModule.forFeature([Service])], ServicesModule);
});

it('should be defined', () => {
expect(moduleRef).toBeDefined();
});

it('should export ServicesService', () => {
const exports = Reflect.getMetadata('exports', ServicesModule);
expect(exports).toContain(ServicesService);
});

it('should export TypeOrmModule', () => {
const exports = Reflect.getMetadata('exports', ServicesModule);
expect(exports).toContain(TypeOrmModule);
});

it('should not have any controllers', () => {
const controllers = Reflect.getMetadata('controllers', ServicesModule);
expect(controllers).toEqual([]);
});
});

0 comments on commit d0dbb1d

Please sign in to comment.