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 3effc68
Show file tree
Hide file tree
Showing 12 changed files with 49 additions and 35 deletions.
3 changes: 2 additions & 1 deletion api/config/custom-environment-variables.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
},
"carto": {
"apiKey": "CARTO_API_KEY",
"baseUrl": "CARTO_BASE_URL"
"baseUrl": "CARTO_BASE_URL",
"credentials": "CARTO_CREDENTIALS"
}
}
3 changes: 2 additions & 1 deletion api/config/default.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@
},
"carto": {
"apiKey": null,
"baseUrl": "null"
"baseUrl": "null",
"credentials": null
}
}
16 changes: 6 additions & 10 deletions api/src/modules/eudr-alerts/alerts.repository.ts
Original file line number Diff line number Diff line change
@@ -1,29 +1,25 @@
import { BigQuery } from '@google-cloud/bigquery';
import { Injectable } from '@nestjs/common';
import { DataSource, QueryBuilder, SelectQueryBuilder } from 'typeorm';
import { DataSource, SelectQueryBuilder } from 'typeorm';
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';
import { AppConfig } from '../../utils/app.config';

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

const BASE_QUERY: string = `SELECT * FROM cartobq.eudr.mock_data LIMIT 1`;

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';

constructor(private readonly dataSource: DataSource) {
//TODO: Implement error handling for missing service account file

const { credentials } = AppConfig.get('carto');
this.bigQueryClient = new BigQuery({
credentials: SA,
credentials: JSON.parse(credentials),
projectId,
});
}
Expand Down
12 changes: 10 additions & 2 deletions api/src/modules/eudr-alerts/eudr.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@ 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 = Symbol('IEUDRAlertsRepository');

// TODO: Use token injection and refer to the interface, right now I am having a dependencv issue
@Module({
imports: [
HttpModule,
Expand All @@ -16,7 +19,12 @@ import { AlertsRepository } from './alerts.repository';
GeoRegionsModule,
AdminRegionsModule,
],
providers: [EudrService, AlertsRepository],
providers: [
EudrService,
AlertsRepository,
{ provide: IEUDRAlertsRepositoryToken, useClass: AlertsRepository },
],
controllers: [EudrController],
// exports: [IEUDRAlertsRepositoryToken],
})
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;
}
5 changes: 2 additions & 3 deletions api/src/modules/eudr-alerts/eudr.service.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
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 { AlertsRepository } from './alerts.repository';

@Injectable()
export class EudrService {
Expand Down
10 changes: 0 additions & 10 deletions api/src/modules/eudr/carto/cartodb.repository.ts

This file was deleted.

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 {}
11 changes: 8 additions & 3 deletions api/test/utils/application-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ 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';
import { AlertsRepository } from 'modules/eudr-alerts/alerts.repository';

export default class ApplicationManager {
static readonly regenerateResourcesOnEachTest: boolean = false;
Expand Down Expand Up @@ -43,8 +46,10 @@ export default class ApplicationManager {
Test.createTestingModule({
imports: [AppModule],
})
.overrideProvider('IEmailService')
.useClass(MockEmailService);
.overrideProvider(IEmailServiceToken)
.useClass(MockEmailService)
.overrideProvider(AlertsRepository)
.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 3effc68

Please sign in to comment.