Skip to content

Commit

Permalink
feat:bq-transacao repository
Browse files Browse the repository at this point in the history
  • Loading branch information
yxuo committed Feb 28, 2024
1 parent 0695512 commit c3812b1
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 17 deletions.
29 changes: 23 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
"class-transformer": "0.5.1",
"class-validator": "0.14.0",
"date-fns": "^2.30.0",
"dotenv": "^16.4.5",
"fb": "2.0.0",
"gerador-validador-cpf": "^5.0.2",
"google-auth-library": "8.8.0",
Expand Down
89 changes: 89 additions & 0 deletions src/bigquery/repositories/bq-transacao.repository.service.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import { Provider } from '@nestjs/common';
import { Test, TestingModule } from '@nestjs/testing';
import { BigqueryService } from 'src/bigquery/bigquery.service';
import { SettingsService } from 'src/settings/settings.service';
import { BqTransacaoRepositoryService } from './bq-transacao.repository.service';
import { ConfigService } from '@nestjs/config';
import { resolve } from 'path';
import { config } from 'dotenv';
import { BigqueryEnvironment } from 'src/settings/enums/bigquery-env.enum';
import { SettingEntity } from 'src/settings/entities/setting.entity';

describe('BqTransacaoRepositoryService', () => {
let settingsService: SettingsService;
let bqTransacaoRepository: BqTransacaoRepositoryService;
const mockBqGoogleCredentials = () => ({
'google.clientApiType': process.env.GOOGLE_CLIENT_API_TYPE,
'google.clientApiProjectId': process.env.GOOGLE_CLIENT_API_PROJECT_ID,
'google.clientApiPrivateKeyId':
process.env.GOOGLE_CLIENT_API_PRIVATE_KEY_ID,
'google.clientApiPrivateKey': process.env.GOOGLE_CLIENT_API_PRIVATE_KEY,
'google.clientApiClientEmail': process.env.GOOGLE_CLIENT_API_CLIENT_EMAIL,
'google.clientApiClientId': process.env.GOOGLE_CLIENT_API_CLIENT_ID,
'google.clientApiAuthUri': process.env.GOOGLE_CLIENT_API_AUTH_URI,
'google.clientApiTokenUri': process.env.GOOGLE_CLIENT_API_TOKEN_URI,
'google.clientApiAuthProviderX509CertUrl':
process.env.GOOGLE_CLIENT_API_AUTH_PROVIDER_X509_CERT_URL,
'google.clientApiClientX509CertUrl':
process.env.GOOGLE_CLIENT_API_CLIENT_X509_CERT_URL,
'google.clientApiUniverseDomain':
process.env.GOOGLE_CLIENT_API_UNIVERSE_DOMAIN,
});

beforeAll(() => {
const envPath = resolve(__dirname, '../../../.env');
config({ path: envPath });
});

beforeEach(async () => {
const settingsServiceMock = {
provide: SettingsService,
useValue: {
getOneBySettingData: jest.fn(),
},
} as Provider;
const configServiceMock = {
provide: ConfigService,
useValue: {
getOrThrow: jest.fn((key: string) => mockBqGoogleCredentials()[key]),
},
} as Provider;
const module: TestingModule = await Test.createTestingModule({
providers: [
BigqueryService,
BqTransacaoRepositoryService,
settingsServiceMock,
configServiceMock,
],
}).compile();

settingsService = module.get(SettingsService);
bqTransacaoRepository = module.get(BqTransacaoRepositoryService);
});

afterEach(() => {
jest.clearAllMocks();
});

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

describe('findTransacaoBy', () => {
it('should return some data', async () => {
// Arrange
jest.spyOn(settingsService, 'getOneBySettingData').mockResolvedValueOnce({
getValueAsString: () => BigqueryEnvironment.Development,
} as SettingEntity);

// Act
const result = await bqTransacaoRepository.findTransacaoBy({
startDate: new Date('2023-06-01'),
endDate: new Date('2024-06-01'),
});

// Assert
expect(result.length).toBeGreaterThan(0);
});
});
});
20 changes: 10 additions & 10 deletions src/bigquery/repositories/bq-transacao.repository.service.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { Injectable, Logger } from '@nestjs/common';
import { BQSInstances, BigqueryService } from '../bigquery.service';
import { BqTransacao } from '../entities/transacao.bq-entity';
import { IBqFetchTransacao } from '../interfaces/bq-find-transacao-by.interface';
import { SettingsService } from 'src/settings/settings.service';
import { appSettings } from 'src/settings/app.settings';
import { BigqueryEnvironment } from 'src/settings/enums/bigquery-env.enum';
import { QueryBuilder } from 'src/utils/query-builder/query-builder';
import { isCpfOrCnpj } from 'src/utils/cpf-cnpj';
import { SettingsService } from 'src/settings/settings.service';
import { TRIntegrationTypeMap } from 'src/ticket-revenues/maps/ticket-revenues.map';
import { isCpfOrCnpj } from 'src/utils/cpf-cnpj';
import { QueryBuilder } from 'src/utils/query-builder/query-builder';
import { BQSInstances, BigqueryService } from '../bigquery.service';
import { BqTransacao } from '../entities/transacao.bq-entity';
import { IBqFetchTransacao } from '../interfaces/bq-find-transacao-by.interface';
import { BqTsansacaoTipoIntegracaoMap } from '../maps/bq-transacao-tipo-integracao.map';
import { BqTransacaoTipoTransacaoMap } from '../maps/bq-transacao-tipo-transacao.map';
import { BqTransacaoTipoPagamentoMap } from '../maps/bq-transacao-tipo-pagamento.map';
import { BqTransacaoTipoTransacaoMap } from '../maps/bq-transacao-tipo-transacao.map';

@Injectable()
export class BqTransacaoRepositoryService {
Expand All @@ -37,8 +37,8 @@ export class BqTransacaoRepositoryService {
const query =
`
SELECT
CAST(t.data AS STRING) AS partitionDate,
t.hora AS processingHour,
CAST(t.data AS STRING) AS \`data\`,
t.hora AS hora,
CAST(t.datetime_transacao AS STRING) AS datetime_transacao,
CAST(t.datetime_processamento AS STRING) AS datetime_processamento,
t.datetime_captura AS captureDateTime,
Expand Down Expand Up @@ -70,7 +70,7 @@ export class BqTransacaoRepositoryService {
`UNION ALL
SELECT ${'null, '.repeat(22)}
(${qArgs.countQuery}) AS count, 'empty' AS status` +
`\nORDER BY t.data DESC, t.hora DESC` +
`\nORDER BY \`data\` DESC, hora DESC` +
(qArgs?.limit !== undefined ? `\nLIMIT ${qArgs.limit + 1}` : '') +
(qArgs?.offset !== undefined ? `\nOFFSET ${qArgs.offset}` : '');
const queryResult = await this.bigqueryService.query(
Expand Down
7 changes: 6 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4080,7 +4080,12 @@
"resolved" "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz"
"version" "10.0.0"

"dotenv@^16.0.3", "dotenv@16.0.3":
"dotenv@^16.0.3", "dotenv@^16.4.5":
"integrity" "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg=="
"resolved" "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz"
"version" "16.4.5"

"dotenv@16.0.3":
"integrity" "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
"resolved" "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz"
"version" "16.0.3"
Expand Down

0 comments on commit c3812b1

Please sign in to comment.