Skip to content

Commit

Permalink
[AUTO DIAGNOSTIC] Implémente l’entrepôt postgres de demande d’auto di…
Browse files Browse the repository at this point in the history
…agnostic
  • Loading branch information
bbougon committed Nov 15, 2024
1 parent 095b7df commit b8bd65f
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { DTO, EntrepotPostgres } from './EntrepotPostgres';
import {
DemandeAutoDiagnostic,
EntrepotDemandeAutoDiagnostic,
} from '../../../auto-diagnostic/CapteurSagaLanceAutoDiagnostic';
import { FournisseurHorloge } from '../../horloge/FournisseurHorloge';

type DemandeAutoDiagnosticDTO = DTO & {
donnees: { dateSignatureCGU: string };
};

export class EntrepotDemandeAutoDiagnosticPostgres
extends EntrepotPostgres<DemandeAutoDiagnostic, DemandeAutoDiagnosticDTO>
implements EntrepotDemandeAutoDiagnostic
{
protected champsAMettreAJour(
entiteDTO: DemandeAutoDiagnosticDTO
): Partial<DemandeAutoDiagnosticDTO> {
return { donnees: entiteDTO.donnees };
}
protected nomTable(): string {
return 'demandes-auto-diagnostic';
}
protected deEntiteADTO(
entite: DemandeAutoDiagnostic
): DemandeAutoDiagnosticDTO {
return {
donnees: { dateSignatureCGU: entite.dateSignatureCGU.toISOString() },
id: entite.identifiant,
};
}
protected deDTOAEntite(dto: DemandeAutoDiagnosticDTO): DemandeAutoDiagnostic {
return {
dateSignatureCGU: FournisseurHorloge.enDate(dto.donnees.dateSignatureCGU),
identifiant: dto.id,
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { EntrepotAidant } from '../../../espace-aidant/Aidant';
import { EntrepotProfilAidant } from '../../../espace-aidant/profil/profilAidant';
import { EntrepotProfilAidantPostgres } from './EntrepotProfilAidantPostgres';
import { EntrepotDemandeAutoDiagnostic } from '../../../auto-diagnostic/CapteurSagaLanceAutoDiagnostic';
import { EntrepotDemandeAutoDiagnosticPostgres } from './EntrepotDemandeAutoDiagnosticPostgres';

export class EntrepotsMAC implements Entrepots {
private readonly entrepotDiagnostic = new EntrepotDiagnosticPostgres();
Expand All @@ -40,6 +41,8 @@ export class EntrepotsMAC implements Entrepots {
new EntrepotUtilisateurPostgres(adaptateurServiceChiffrement());
private entrepotProfilAidant: EntrepotProfilAidant =
new EntrepotProfilAidantPostgres(adaptateurServiceChiffrement());
private entrepotDemandeAutoDiagnostic: EntrepotDemandeAutoDiagnostic =
new EntrepotDemandeAutoDiagnosticPostgres();

diagnostic(): EntrepotDiagnostic {
return this.entrepotDiagnostic;
Expand Down Expand Up @@ -77,6 +80,6 @@ export class EntrepotsMAC implements Entrepots {
}

demandesAutoDiagnostic(): EntrepotDemandeAutoDiagnostic {
throw new Error('Method not implemented.');
return this.entrepotDemandeAutoDiagnostic;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Knex } from 'knex';

export async function up(knex: Knex): Promise<void> {
return knex.schema.createTable(
'demandes-auto-diagnostic',
(fabriqueDeTable) => {
fabriqueDeTable.uuid('id');
fabriqueDeTable.primary(['id']);
fabriqueDeTable.jsonb('donnees');
}
);
}

export async function down(knex: Knex): Promise<void> {
return knex.schema.dropTable('demandes-auto-diagnostic');
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { beforeEach, describe } from 'vitest';
import { nettoieLaBaseDeDonneesDemandeAutoDiagnostic } from '../../../utilitaires/nettoyeurBDD';
import { EntrepotDemandeAutoDiagnosticPostgres } from '../../../../src/infrastructure/entrepots/postgres/EntrepotDemandeAutoDiagnosticPostgres';
import { DemandeAutoDiagnostic } from '../../../../src/auto-diagnostic/CapteurSagaLanceAutoDiagnostic';
import { FournisseurHorloge } from '../../../../src/infrastructure/horloge/FournisseurHorloge';
import { FournisseurHorlogeDeTest } from '../../horloge/FournisseurHorlogeDeTest';
import crypto from 'crypto';

describe('Entrepot demande auto diagnostic', () => {
beforeEach(async () => {
await nettoieLaBaseDeDonneesDemandeAutoDiagnostic();
});

it('Persiste une demande d’auto diagnostic', async () => {
FournisseurHorlogeDeTest.initialise(new Date());
const demandeAutoDiagnostic = {
identifiant: crypto.randomUUID(),
dateSignatureCGU: FournisseurHorloge.maintenant(),
};

await new EntrepotDemandeAutoDiagnosticPostgres().persiste(
demandeAutoDiagnostic
);

const demandeAutoDiagnosticRecue =
await new EntrepotDemandeAutoDiagnosticPostgres().lis(
demandeAutoDiagnostic.identifiant
);
expect(demandeAutoDiagnosticRecue).toStrictEqual<DemandeAutoDiagnostic>({
identifiant: demandeAutoDiagnostic.identifiant,
dateSignatureCGU: FournisseurHorloge.maintenant(),
});
});
});
26 changes: 19 additions & 7 deletions mon-aide-cyber-api/test/utilitaires/nettoyeurBDD.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,47 +35,59 @@ class EntrepotsPostgresPourLesTests {
async nettoieDemandeDevenirAidant() {
await this.knex('demandes-devenir-aidant').truncate();
}

async nettoieDemandeAutoDiagnostic() {
await this.knex('demandes-auto-diagnostic').truncate();
}
}

const entrepotsPostgresPourLesTests = new EntrepotsPostgresPourLesTests();

export const nettoieLaBaseDeDonneesAidants = async () => {
if (process.env.URL_SERVEUR_BASE_DONNEES) {
await new EntrepotsPostgresPourLesTests().nettoieAidants();
await entrepotsPostgresPourLesTests.nettoieAidants();
}
};

export const nettoieLaBaseDeDonneesUtilisateurs = async () => {
if (process.env.URL_SERVEUR_BASE_DONNEES) {
await new EntrepotsPostgresPourLesTests().nettoieUtilisateurs();
await entrepotsPostgresPourLesTests.nettoieUtilisateurs();
}
};

export const nettoieLaBaseDeDonneesAides = async () => {
if (process.env.URL_SERVEUR_BASE_DONNEES) {
await new EntrepotsPostgresPourLesTests().nettoieAides();
await entrepotsPostgresPourLesTests.nettoieAides();
}
};

export const nettoieLaBaseDeDonneesJournal = async () => {
if (process.env.URL_SERVEUR_BASE_DONNEES) {
await new EntrepotsPostgresPourLesTests().nettoieJournal();
await entrepotsPostgresPourLesTests.nettoieJournal();
}
};

export const nettoieLaBaseDeDonneesDiagnostics = async () => {
if (process.env.URL_SERVEUR_BASE_DONNEES) {
await new EntrepotsPostgresPourLesTests().nettoieDiagnostics();
await entrepotsPostgresPourLesTests.nettoieDiagnostics();
}
};

export const nettoieLaBaseDeDonneesRelations = async () => {
if (process.env.URL_SERVEUR_BASE_DONNEES) {
await new EntrepotsPostgresPourLesTests().nettoieRelations();
await entrepotsPostgresPourLesTests.nettoieRelations();
}
};

export const nettoieLaBaseDeDonneesDemandeDevenirAidant = async () => {
if (process.env.URL_SERVEUR_BASE_DONNEES) {
await new EntrepotsPostgresPourLesTests().nettoieDemandeDevenirAidant();
await entrepotsPostgresPourLesTests.nettoieDemandeDevenirAidant();
}
};

export const nettoieLaBaseDeDonneesDemandeAutoDiagnostic = async () => {
if (process.env.URL_SERVEUR_BASE_DONNEES) {
await entrepotsPostgresPourLesTests.nettoieDemandeAutoDiagnostic();
}
};

Expand Down

0 comments on commit b8bd65f

Please sign in to comment.