Skip to content

Commit

Permalink
Mock eudr repository
Browse files Browse the repository at this point in the history
  • Loading branch information
alexeh committed Mar 3, 2024
1 parent a972cdc commit 020e744
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 15 deletions.
3 changes: 2 additions & 1 deletion api/src/modules/eudr-alerts/alerts.repository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { AlertsOutput } from './dto/alerts-output.dto';
import { SA } from './SA';
import { ResourceStream } from '@google-cloud/paginator';
import { RowMetadata } from '@google-cloud/bigquery/build/src/table';
import { IEUDRAlertsRepository } from './eudr.repositoty.interface';

const projectId: string = 'carto-dw-ac-zk2uhih6';

Expand All @@ -15,7 +16,7 @@ const BASE_DATASET: string = 'cartobq.eudr.dev_mock_data_optimized';
const limit: number = 1;

@Injectable()
export class AlertsRepository {
export class AlertsRepository implements IEUDRAlertsRepository {
bigQueryClient: BigQuery;
BASE_DATASET: string = 'cartobq.eudr.dev_mock_data_optimized';

Expand Down
9 changes: 7 additions & 2 deletions api/src/modules/eudr-alerts/eudr.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import { MaterialsModule } from 'modules/materials/materials.module';
import { SuppliersModule } from 'modules/suppliers/suppliers.module';
import { GeoRegionsModule } from 'modules/geo-regions/geo-regions.module';
import { AdminRegionsModule } from 'modules/admin-regions/admin-regions.module';
import { AlertsRepository } from './alerts.repository';
import { AlertsRepository } from 'modules/eudr-alerts/alerts.repository';

export const IEUDRAlertsRepositoryToken: string = 'IEUDRAlertsRepository';

@Module({
imports: [
Expand All @@ -16,7 +18,10 @@ import { AlertsRepository } from './alerts.repository';
GeoRegionsModule,
AdminRegionsModule,
],
providers: [EudrService, AlertsRepository],
providers: [
EudrService,
{ provide: IEUDRAlertsRepositoryToken, useClass: AlertsRepository },
],
controllers: [EudrController],
})
export class EudrModule {}
3 changes: 3 additions & 0 deletions api/src/modules/eudr-alerts/eudr.repositoty.interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export interface IEUDRAlertsRepository {
select(): any;
}
11 changes: 7 additions & 4 deletions api/src/modules/eudr-alerts/eudr.service.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import { Injectable } from '@nestjs/common';
import { AlertsRepository } from './alerts.repository';

import { Inject, Injectable } from '@nestjs/common';
import { ResourceStream } from '@google-cloud/paginator';
import { RowMetadata } from '@google-cloud/bigquery/build/src/table';
import { IEUDRAlertsRepositoryToken } from './eudr.module';
import { IEUDRAlertsRepository } from './eudr.repositoty.interface';

@Injectable()
export class EudrService {
constructor(private readonly alertsRepository: AlertsRepository) {}
constructor(
@Inject(IEUDRAlertsRepositoryToken)
private readonly alertsRepository: IEUDRAlertsRepository,
) {}

getAlerts(): ResourceStream<RowMetadata> {
return this.alertsRepository.select();
Expand Down
3 changes: 0 additions & 3 deletions api/src/modules/eudr/eudr.repositoty.interface.ts

This file was deleted.

6 changes: 4 additions & 2 deletions api/src/modules/notifications/notifications.module.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { Module } from '@nestjs/common';
import { SendgridEmailService } from 'modules/notifications/email/sendgrid.email.service';

export const IEmailServiceToken: string = 'IEmailService';

@Module({
providers: [{ provide: 'IEmailService', useClass: SendgridEmailService }],
exports: ['IEmailService'],
providers: [{ provide: IEmailServiceToken, useClass: SendgridEmailService }],
exports: [IEmailServiceToken],
})
export class NotificationsModule {}
10 changes: 7 additions & 3 deletions api/test/utils/application-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import { TestingModuleBuilder } from '@nestjs/testing/testing-module.builder';
import { Type } from '@nestjs/common/interfaces';
import { TestingModule } from '@nestjs/testing/testing-module';
import { isUndefined } from 'lodash';
import { MockEmailService } from './service-mocks';
import { MockAlertRepository, MockEmailService } from './service-mocks';
import { IEUDRAlertsRepositoryToken } from '../../src/modules/eudr-alerts/eudr.module';
import { IEmailServiceToken } from '../../src/modules/notifications/notifications.module';

export default class ApplicationManager {
static readonly regenerateResourcesOnEachTest: boolean = false;
Expand Down Expand Up @@ -43,8 +45,10 @@ export default class ApplicationManager {
Test.createTestingModule({
imports: [AppModule],
})
.overrideProvider('IEmailService')
.useClass(MockEmailService);
.overrideProvider(IEmailServiceToken)
.useClass(MockEmailService)
.overrideProvider(IEUDRAlertsRepositoryToken)
.useClass(MockAlertRepository);

ApplicationManager.testApplication.moduleFixture =
await testingModuleBuilder.compile();
Expand Down
12 changes: 12 additions & 0 deletions api/test/utils/service-mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {
SendMailDTO,
} from '../../src/modules/notifications/email/email.service.interface';
import { Logger } from '@nestjs/common';
import { IEUDRAlertsRepository } from 'modules/eudr-alerts/eudr.repositoty.interface';

export class MockEmailService implements IEmailService {
logger: Logger = new Logger(MockEmailService.name);
Expand All @@ -12,3 +13,14 @@ export class MockEmailService implements IEmailService {
return Promise.resolve();
}
}

export class MockAlertRepository implements IEUDRAlertsRepository {
logger: Logger = new Logger(MockAlertRepository.name);

select(): any {
this.logger.warn(`Alert Repository Mock called... `);
return new Promise((resolve) => {
resolve([]);
});
}
}

0 comments on commit 020e744

Please sign in to comment.