Skip to content

Commit 4eea80b

Browse files
authored
[Human App] Enable JobDiscovery tests (#2619)
* Enable JobDiscovery tests * Disable cron job for tests * Added tests for jobDiscoveryFlag * Added tests for jobDiscoveryFlag in oracle-discovery.controller.ts * Remove wrong import
1 parent 8268886 commit 4eea80b

File tree

4 files changed

+143
-44
lines changed

4 files changed

+143
-44
lines changed

packages/apps/human-app/server/src/modules/cron-job/spec/cron-job.service.spec.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ import { JobStatus } from '../../../common/enums/global-common';
1414
import { OracleDiscoveryResponse } from '../../../modules/oracle-discovery/model/oracle-discovery.model';
1515
import { SchedulerRegistry } from '@nestjs/schedule';
1616

17+
jest.mock('cron', () => {
18+
return {
19+
CronJob: jest.fn().mockImplementation(() => ({
20+
start: jest.fn(),
21+
})),
22+
};
23+
});
24+
1725
describe('CronJobService', () => {
1826
let service: CronJobService;
1927
let exchangeOracleGatewayMock: Partial<ExchangeOracleGateway>;
@@ -45,6 +53,7 @@ describe('CronJobService', () => {
4553
password: 'Test1234*',
4654
cacheTtlOracleDiscovery: 600,
4755
chainIdsEnabled: ['137', '1'],
56+
jobsDiscoveryFlag: false,
4857
};
4958

5059
const module: TestingModule = await Test.createTestingModule({
@@ -69,6 +78,46 @@ describe('CronJobService', () => {
6978
expect(service).toBeDefined();
7079
});
7180

81+
describe('CronJobService - Cron Job Initialization', () => {
82+
const schedulerRegistryMock: any = {
83+
addCronJob: jest.fn(),
84+
};
85+
86+
afterEach(() => {
87+
jest.clearAllMocks();
88+
});
89+
90+
it('should initialize the cron job if jobsDiscoveryFlag is true', () => {
91+
(configServiceMock as any).jobsDiscoveryFlag = true;
92+
93+
service = new CronJobService(
94+
exchangeOracleGatewayMock as ExchangeOracleGateway,
95+
cacheManagerMock,
96+
configServiceMock as any,
97+
oracleDiscoveryServiceMock as OracleDiscoveryService,
98+
workerServiceMock as WorkerService,
99+
schedulerRegistryMock,
100+
);
101+
102+
expect(schedulerRegistryMock.addCronJob).toHaveBeenCalled();
103+
});
104+
105+
it('should not initialize the cron job if jobsDiscoveryFlag is false', () => {
106+
(configServiceMock as any).jobsDiscoveryFlag = false;
107+
108+
service = new CronJobService(
109+
exchangeOracleGatewayMock as ExchangeOracleGateway,
110+
cacheManagerMock,
111+
configServiceMock as any,
112+
oracleDiscoveryServiceMock as OracleDiscoveryService,
113+
workerServiceMock as WorkerService,
114+
schedulerRegistryMock,
115+
);
116+
117+
expect(schedulerRegistryMock.addCronJob).not.toHaveBeenCalled();
118+
});
119+
});
120+
72121
describe('updateJobsListCron', () => {
73122
it('should not proceed if no oracles are found', async () => {
74123
(

packages/apps/human-app/server/src/modules/jobs-discovery/spec/jobs-discovery.controller.spec.ts

Lines changed: 44 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { JobsDiscoveryController } from '../jobs-discovery.controller';
33
import { Test, TestingModule } from '@nestjs/testing';
44
import { jobsDiscoveryServiceMock } from './jobs-discovery.service.mock';
55
import {
6-
// jobsDiscoveryParamsCommandFixture,
7-
// dtoFixture,
8-
// jobDiscoveryToken,
6+
jobsDiscoveryParamsCommandFixture,
7+
dtoFixture,
8+
jobDiscoveryToken,
99
responseFixture,
1010
} from './jobs-discovery.fixtures';
1111
import { AutomapperModule } from '@automapper/nestjs';
@@ -15,10 +15,18 @@ import { HttpService } from '@nestjs/axios';
1515
import { CommonConfigModule } from '../../../common/config/common-config.module';
1616
import { ConfigModule } from '@nestjs/config';
1717
import { EnvironmentConfigService } from '../../../common/config/environment-config.service';
18+
import { HttpException, HttpStatus } from '@nestjs/common';
1819

1920
describe('JobsDiscoveryController', () => {
2021
let controller: JobsDiscoveryController;
21-
// let jobsDiscoveryService: JobsDiscoveryService;
22+
let jobsDiscoveryService: JobsDiscoveryService;
23+
const configServiceMock: Partial<EnvironmentConfigService> = {
24+
25+
password: 'Test1234*',
26+
cacheTtlOracleDiscovery: 600,
27+
chainIdsEnabled: ['137', '1'],
28+
jobsDiscoveryFlag: true,
29+
};
2230

2331
beforeEach(async () => {
2432
const module: TestingModule = await Test.createTestingModule({
@@ -36,7 +44,7 @@ describe('JobsDiscoveryController', () => {
3644
providers: [
3745
JobsDiscoveryService,
3846
JobsDiscoveryProfile,
39-
EnvironmentConfigService,
47+
{ provide: EnvironmentConfigService, useValue: configServiceMock },
4048
{
4149
provide: HttpService,
4250
useValue: {
@@ -54,22 +62,41 @@ describe('JobsDiscoveryController', () => {
5462
.compile();
5563

5664
controller = module.get<JobsDiscoveryController>(JobsDiscoveryController);
57-
// jobsDiscoveryService =
58-
// module.get<JobsDiscoveryService>(JobsDiscoveryService);
65+
jobsDiscoveryService =
66+
module.get<JobsDiscoveryService>(JobsDiscoveryService);
5967
});
6068

6169
it('should be defined', () => {
6270
expect(controller).toBeDefined();
6371
});
6472

65-
// describe('processJobsDiscovery', () => {
66-
// it('should call service processJobsDiscovery method with proper fields set', async () => {
67-
// const dto = dtoFixture;
68-
// const command = jobsDiscoveryParamsCommandFixture;
69-
// await controller.getJobs(dto, jobDiscoveryToken);
70-
// expect(jobsDiscoveryService.processJobsDiscovery).toHaveBeenCalledWith(
71-
// command,
72-
// );
73-
// });
74-
// });
73+
describe('processJobsDiscovery', () => {
74+
it('should call service processJobsDiscovery method with proper fields set', async () => {
75+
const dto = dtoFixture;
76+
const command = jobsDiscoveryParamsCommandFixture;
77+
await controller.getJobs(
78+
dto,
79+
{ qualifications: [] } as any,
80+
jobDiscoveryToken,
81+
);
82+
command.data.qualifications = [];
83+
expect(jobsDiscoveryService.processJobsDiscovery).toHaveBeenCalledWith(
84+
command,
85+
);
86+
});
87+
88+
it('should throw an error if jobsDiscoveryFlag is disabled', async () => {
89+
const dto = dtoFixture;
90+
(configServiceMock as any).jobsDiscoveryFlag = false;
91+
await expect(
92+
controller.getJobs(
93+
dto,
94+
{ qualifications: [] } as any,
95+
jobDiscoveryToken,
96+
),
97+
).rejects.toThrow(
98+
new HttpException('Jobs discovery is disabled', HttpStatus.FORBIDDEN),
99+
);
100+
});
101+
});
75102
});

packages/apps/human-app/server/src/modules/oracle-discovery/oracle-discovery.controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class OracleDiscoveryController {
2929
@Get('/oracles')
3030
@ApiOperation({ summary: 'Oracles discovery' })
3131
@UsePipes(new ValidationPipe())
32-
public getOracles(
32+
public async getOracles(
3333
@Query() dto: OracleDiscoveryDto,
3434
): Promise<OracleDiscoveryResponse[]> {
3535
if (!this.environmentConfigService.jobsDiscoveryFlag) {

packages/apps/human-app/server/src/modules/oracle-discovery/spec/oracle-discovery.controller.spec.ts

Lines changed: 49 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,28 @@ import { classes } from '@automapper/classes';
44
import { OracleDiscoveryController } from '../oracle-discovery.controller';
55
import { OracleDiscoveryService } from '../oracle-discovery.service';
66
import { oracleDiscoveryServiceMock } from './oracle-discovery.service.mock';
7-
// import {
8-
// OracleDiscoveryCommand,
9-
// OracleDiscoveryDto,
10-
// OracleDiscoveryResponse,
11-
// } from '../model/oracle-discovery.model';
12-
// import { generateOracleDiscoveryResponseBody } from './oracle-discovery.fixture';
7+
import {
8+
OracleDiscoveryCommand,
9+
OracleDiscoveryDto,
10+
OracleDiscoveryResponse,
11+
} from '../model/oracle-discovery.model';
12+
import { generateOracleDiscoveryResponseBody } from './oracle-discovery.fixture';
1313
import { OracleDiscoveryProfile } from '../oracle-discovery.mapper.profile';
1414
import { EnvironmentConfigService } from '../../../common/config/environment-config.service';
1515
import { CommonConfigModule } from '../../../common/config/common-config.module';
1616
import { ConfigModule } from '@nestjs/config';
17+
import { HttpException, HttpStatus } from '@nestjs/common';
1718

1819
describe('OracleDiscoveryController', () => {
1920
let controller: OracleDiscoveryController;
20-
// let serviceMock: OracleDiscoveryService;
21+
let serviceMock: OracleDiscoveryService;
22+
const configServiceMock: Partial<EnvironmentConfigService> = {
23+
24+
password: 'Test1234*',
25+
cacheTtlOracleDiscovery: 600,
26+
chainIdsEnabled: ['137', '1'],
27+
jobsDiscoveryFlag: true,
28+
};
2129

2230
beforeEach(async () => {
2331
const module: TestingModule = await Test.createTestingModule({
@@ -35,7 +43,7 @@ describe('OracleDiscoveryController', () => {
3543
providers: [
3644
OracleDiscoveryService,
3745
OracleDiscoveryProfile,
38-
EnvironmentConfigService,
46+
{ provide: EnvironmentConfigService, useValue: configServiceMock },
3947
],
4048
})
4149
.overrideProvider(OracleDiscoveryService)
@@ -45,28 +53,43 @@ describe('OracleDiscoveryController', () => {
4553
controller = module.get<OracleDiscoveryController>(
4654
OracleDiscoveryController,
4755
);
48-
// serviceMock = module.get<OracleDiscoveryService>(OracleDiscoveryService);
56+
serviceMock = module.get<OracleDiscoveryService>(OracleDiscoveryService);
4957
});
5058

5159
it('should be defined', () => {
5260
expect(controller).toBeDefined();
5361
});
5462

55-
// describe('oracle discovery', () => {
56-
// it('oracle discovery should be return OracleDiscoveryData', async () => {
57-
// const dtoFixture = {
58-
// selected_job_types: ['job-type-1', 'job-type-2'],
59-
// } as OracleDiscoveryDto;
60-
// const commandFixture = {
61-
// selectedJobTypes: ['job-type-1', 'job-type-2'],
62-
// } as OracleDiscoveryCommand;
63-
// const result: OracleDiscoveryResponse[] =
64-
// await controller.getOracles(dtoFixture);
65-
// const expectedResponse = generateOracleDiscoveryResponseBody();
66-
// expect(serviceMock.processOracleDiscovery).toHaveBeenCalledWith(
67-
// commandFixture,
68-
// );
69-
// expect(result).toEqual(expectedResponse);
70-
// });
71-
// });
63+
describe('oracle discovery', () => {
64+
it('oracle discovery should be return OracleDiscoveryData', async () => {
65+
const dtoFixture = {
66+
selected_job_types: ['job-type-1', 'job-type-2'],
67+
} as OracleDiscoveryDto;
68+
const commandFixture = {
69+
selectedJobTypes: ['job-type-1', 'job-type-2'],
70+
} as OracleDiscoveryCommand;
71+
const result: OracleDiscoveryResponse[] =
72+
await controller.getOracles(dtoFixture);
73+
const expectedResponse = generateOracleDiscoveryResponseBody();
74+
expect(serviceMock.processOracleDiscovery).toHaveBeenCalledWith(
75+
commandFixture,
76+
);
77+
expect(result).toEqual(expectedResponse);
78+
});
79+
80+
it('should throw an error if jobsDiscoveryFlag is disabled', async () => {
81+
const dtoFixture = {
82+
selected_job_types: ['job-type-1', 'job-type-2'],
83+
} as OracleDiscoveryDto;
84+
85+
(configServiceMock as any).jobsDiscoveryFlag = false;
86+
87+
await expect(controller.getOracles(dtoFixture)).rejects.toThrow(
88+
new HttpException(
89+
'Oracles discovery is disabled',
90+
HttpStatus.FORBIDDEN,
91+
),
92+
);
93+
});
94+
});
7295
});

0 commit comments

Comments
 (0)