Skip to content

Commit

Permalink
feat(faq): ne pas passer de mapper au strapi service
Browse files Browse the repository at this point in the history
  • Loading branch information
suli-octo committed Oct 24, 2023
1 parent fa16472 commit a74716c
Show file tree
Hide file tree
Showing 11 changed files with 169 additions and 116 deletions.
7 changes: 0 additions & 7 deletions src/server/cms/domain/cms.repository.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { Actualité } from '~/server/cms/domain/actualité';
import { AnnonceDeLogement } from '~/server/cms/domain/annonceDeLogement.type';
import { Article, ArticleSlug } from '~/server/cms/domain/article';
import { Question, QuestionSlug } from '~/server/cms/domain/FAQ.type';
import { MentionsObligatoires } from '~/server/cms/domain/mentionsObligatoires';
import { MesureEmployeur } from '~/server/cms/domain/mesureEmployeur';
import { OffreDeStage, OffreDeStageDepot } from '~/server/cms/domain/offreDeStage.type';
Expand All @@ -12,16 +11,12 @@ import { Either } from '~/server/errors/either';
export interface CmsRepository {
getActualitéList(): Promise<Either<Actualité[]>>

getAllFAQ(): Promise<Either<Array<Question>>>

getAnnonceDeLogementBySlug(slug: string): Promise<Either<AnnonceDeLogement>>

getArticleBySlug(slug: ArticleSlug): Promise<Either<Article>>

getServiceJeuneList(): Promise<Either<Array<ServiceJeune>>>

getFAQBySlug(slug: QuestionSlug): Promise<Either<Question.QuestionRéponse>>

getMentionObligatoire(mentionsObligatoires: MentionsObligatoires): Promise<Either<Article>>

getMesuresEmployeurs(): Promise<Either<MesureEmployeur[]>>
Expand All @@ -34,8 +29,6 @@ export interface CmsRepository {

listAllArticleSlug(): Promise<Either<Array<string>>>

listAllFAQSlug(): Promise<Either<Array<string>>>

listAllOffreDeStageSlug(): Promise<Either<Array<string>>>

saveOffreDeStage(offre: OffreDeStageDepot): Promise<Either<void>>
Expand Down
22 changes: 11 additions & 11 deletions src/server/cms/infra/repositories/strapi.mapper.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { v4 as uuidv4 } from 'uuid'

import { Actualité } from '~/server/cms/domain/actualité'
import { AnnonceDeLogement } from '~/server/cms/domain/annonceDeLogement.type'
import { Article } from '~/server/cms/domain/article'
import { Image } from '~/server/cms/domain/image'
import { MesureEmployeur } from '~/server/cms/domain/mesureEmployeur'
import { Domaines, OffreDeStage, OffreDeStageDepot, SourceDesDonnées } from '~/server/cms/domain/offreDeStage.type'
import { ServiceJeune } from '~/server/cms/domain/serviceJeune'
import { VideoCampagneApprentissage } from '~/server/cms/domain/videoCampagneApprentissage.type'
import { Strapi } from '~/server/cms/infra/repositories/strapi.response'
import { v4 as uuidv4 } from 'uuid';

import { Actualité } from '~/server/cms/domain/actualité';
import { AnnonceDeLogement } from '~/server/cms/domain/annonceDeLogement.type';
import { Article } from '~/server/cms/domain/article';
import { Image } from '~/server/cms/domain/image';
import { MesureEmployeur } from '~/server/cms/domain/mesureEmployeur';
import { Domaines, OffreDeStage, OffreDeStageDepot, SourceDesDonnées } from '~/server/cms/domain/offreDeStage.type';
import { ServiceJeune } from '~/server/cms/domain/serviceJeune';
import { VideoCampagneApprentissage } from '~/server/cms/domain/videoCampagneApprentissage.type';
import { Strapi } from '~/server/cms/infra/repositories/strapi.response';

export function mapArticle(articleResponse: Strapi.CollectionType.Article): Article {
return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,18 @@ import { StrapiRepository } from './strapi.repository';
export function aStrapiCmsRepository(override?: Partial<StrapiRepository>): CmsRepository {
return {
getActualitéList: jest.fn(),
getAllFAQ: jest.fn(),
getAllVideosCampagneApprentissage: jest.fn(),
getAnnonceDeLogementBySlug: jest.fn(),
getArticleBySlug: jest.fn(),
getCollectionType: jest.fn(),
getCollectionTypeDeprecated: jest.fn(),
getFAQBySlug: jest.fn(),
getFirstFromCollectionType: jest.fn(),
getMentionObligatoire: jest.fn(),
getMesuresEmployeurs: jest.fn(),
getOffreDeStageBySlug: jest.fn(),
getServiceJeuneList: jest.fn(),
listAllAnnonceDeLogementSlug: jest.fn(),
listAllArticleSlug: jest.fn(),
listAllFAQSlug: jest.fn(),
listAllOffreDeStageSlug: jest.fn(),
save: jest.fn(),
saveOffreDeStage: jest.fn(),
Expand Down
52 changes: 26 additions & 26 deletions src/server/cms/infra/repositories/strapi.repository.test.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import { anOffreDeStageDepot } from '~/client/services/stage/stageService.fixture'
import { Actualité } from '~/server/cms/domain/actualité'
import { anActualite } from '~/server/cms/domain/actualite.fixture'
import { anAnnonceDeLogement, anAnnonceDeLogementResponse } from '~/server/cms/domain/annonceDeLogement.fixture'
import { AnnonceDeLogement } from '~/server/cms/domain/annonceDeLogement.type'
import { Article } from '~/server/cms/domain/article'
import { anArticle } from '~/server/cms/domain/article.fixture'
import { anUnorderedServiceJeuneList } from '~/server/cms/domain/espaceJeune.fixture'
import { MentionsObligatoires } from '~/server/cms/domain/mentionsObligatoires'
import { MesureEmployeur } from '~/server/cms/domain/mesureEmployeur'
import { aMesureEmployeurList } from '~/server/cms/domain/mesureEmployeur.fixture'
import { anOffreDeStage } from '~/server/cms/domain/offreDeStage.fixture'
import { OffreDeStage } from '~/server/cms/domain/offreDeStage.type'
import { ServiceJeune } from '~/server/cms/domain/serviceJeune'
import { VideoCampagneApprentissage } from '~/server/cms/domain/videoCampagneApprentissage.type'
import { anOffreDeStageDepot } from '~/client/services/stage/stageService.fixture';
import { Actualité } from '~/server/cms/domain/actualité';
import { anActualite } from '~/server/cms/domain/actualite.fixture';
import { anAnnonceDeLogement, anAnnonceDeLogementResponse } from '~/server/cms/domain/annonceDeLogement.fixture';
import { AnnonceDeLogement } from '~/server/cms/domain/annonceDeLogement.type';
import { Article } from '~/server/cms/domain/article';
import { anArticle } from '~/server/cms/domain/article.fixture';
import { anUnorderedServiceJeuneList } from '~/server/cms/domain/espaceJeune.fixture';
import { MentionsObligatoires } from '~/server/cms/domain/mentionsObligatoires';
import { MesureEmployeur } from '~/server/cms/domain/mesureEmployeur';
import { aMesureEmployeurList } from '~/server/cms/domain/mesureEmployeur.fixture';
import { anOffreDeStage } from '~/server/cms/domain/offreDeStage.fixture';
import { OffreDeStage } from '~/server/cms/domain/offreDeStage.type';
import { ServiceJeune } from '~/server/cms/domain/serviceJeune';
import { VideoCampagneApprentissage } from '~/server/cms/domain/videoCampagneApprentissage.type';
import {
anActualiteFixture,
anOffreDeStageDepotStrapi,
Expand All @@ -26,25 +26,25 @@ import {
aStrapiOffreDeStageSlugList,
aStrapiSingleType,
aStrapiVideosCampagneApprentissage,
} from '~/server/cms/infra/repositories/strapi.fixture'
import { StrapiRepository } from '~/server/cms/infra/repositories/strapi.repository'
import { createFailure, createSuccess, Failure, Success } from '~/server/errors/either'
import { ErreurMetier } from '~/server/errors/erreurMetier.types'
import { aLogInformation, anErrorManagementService } from '~/server/services/error/errorManagement.fixture'
import { Severity } from '~/server/services/error/errorManagement.service'
import { AuthenticatedHttpClientService } from '~/server/services/http/authenticatedHttpClient.service'
import { anHttpError } from '~/server/services/http/httpError.fixture'
import { PublicHttpClientService } from '~/server/services/http/publicHttpClient.service'
} from '~/server/cms/infra/repositories/strapi.fixture';
import { StrapiRepository } from '~/server/cms/infra/repositories/strapi.repository';
import { createFailure, createSuccess, Failure, Success } from '~/server/errors/either';
import { ErreurMetier } from '~/server/errors/erreurMetier.types';
import { aLogInformation, anErrorManagementService } from '~/server/services/error/errorManagement.fixture';
import { Severity } from '~/server/services/error/errorManagement.service';
import { AuthenticatedHttpClientService } from '~/server/services/http/authenticatedHttpClient.service';
import { anHttpError } from '~/server/services/http/httpError.fixture';
import { PublicHttpClientService } from '~/server/services/http/publicHttpClient.service';
import {
anAuthenticatedHttpClientService,
anAxiosResponse,
aPublicHttpClientService,
} from '~/server/services/http/publicHttpClient.service.fixture'
} from '~/server/services/http/publicHttpClient.service.fixture';
import {
anAnnonceDeLogementPathList,
anArticlePathList,
anOffreDeStagePathList,
} from '~/server/sitemap/domain/sitemap.fixture'
} from '~/server/sitemap/domain/sitemap.fixture';

jest.mock('uuid', () => ({ v4: () => '123456789' }));

Expand Down
32 changes: 16 additions & 16 deletions src/server/cms/infra/repositories/strapi.repository.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Actualité } from '~/server/cms/domain/actualité'
import { AnnonceDeLogement } from '~/server/cms/domain/annonceDeLogement.type'
import { Article, ArticleSlug } from '~/server/cms/domain/article'
import { CmsRepository } from '~/server/cms/domain/cms.repository'
import { MentionsObligatoires } from '~/server/cms/domain/mentionsObligatoires'
import { MesureEmployeur } from '~/server/cms/domain/mesureEmployeur'
import { OffreDeStage, OffreDeStageDepot } from '~/server/cms/domain/offreDeStage.type'
import { ServiceJeune } from '~/server/cms/domain/serviceJeune'
import { VideoCampagneApprentissage } from '~/server/cms/domain/videoCampagneApprentissage.type'
import { Actualité } from '~/server/cms/domain/actualité';
import { AnnonceDeLogement } from '~/server/cms/domain/annonceDeLogement.type';
import { Article, ArticleSlug } from '~/server/cms/domain/article';
import { CmsRepository } from '~/server/cms/domain/cms.repository';
import { MentionsObligatoires } from '~/server/cms/domain/mentionsObligatoires';
import { MesureEmployeur } from '~/server/cms/domain/mesureEmployeur';
import { OffreDeStage, OffreDeStageDepot } from '~/server/cms/domain/offreDeStage.type';
import { ServiceJeune } from '~/server/cms/domain/serviceJeune';
import { VideoCampagneApprentissage } from '~/server/cms/domain/videoCampagneApprentissage.type';
import {
mapAnnonceLogement,
mapArticle,
Expand All @@ -16,13 +16,13 @@ import {
mapServiceJeuneList,
mapStrapiListeActualités,
mapVideoCampagneApprentissage,
} from '~/server/cms/infra/repositories/strapi.mapper'
import { Strapi } from '~/server/cms/infra/repositories/strapi.response'
import { createFailure, createSuccess, Either, isSuccess } from '~/server/errors/either'
import { ErreurMetier } from '~/server/errors/erreurMetier.types'
import { ErrorManagementService, Severity } from '~/server/services/error/errorManagement.service'
import { AuthenticatedHttpClientService } from '~/server/services/http/authenticatedHttpClient.service'
import { PublicHttpClientService } from '~/server/services/http/publicHttpClient.service'
} from '~/server/cms/infra/repositories/strapi.mapper';
import { Strapi } from '~/server/cms/infra/repositories/strapi.response';
import { createFailure, createSuccess, Either, isSuccess } from '~/server/errors/either';
import { ErreurMetier } from '~/server/errors/erreurMetier.types';
import { ErrorManagementService, Severity } from '~/server/services/error/errorManagement.service';
import { AuthenticatedHttpClientService } from '~/server/services/http/authenticatedHttpClient.service';
import { PublicHttpClientService } from '~/server/services/http/publicHttpClient.service';

const MAX_PAGINATION_SIZE = '100';
const RESOURCE_ARTICLE = 'articles';
Expand Down
4 changes: 2 additions & 2 deletions src/server/faq/domain/FAQ.fixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export const aListeDeQuestion = (): Array<FAQ.Question> => {
export const aQuestion = (override?: Partial<FAQ.Question>): FAQ.Question => {
return {
problématique: 'Comment constituer un dossier locatif ?',
slug: 'question-slug',
slug: 'Comment-constituer-un-dossier-locatif ?',
...override,
};
};
Expand All @@ -19,7 +19,7 @@ export const aQuestionEtReponse = (override?: Partial<FAQ.QuestionEtReponse>): F
return {
contenu: 'mon contenu explicatif',
problématique: 'Comment constituer un dossier locatif ?',
slug: 'question-slug',
slug: 'Comment-constituer-un-dossier-locatif ?',
...override,
};
};
Expand Down
7 changes: 7 additions & 0 deletions src/server/faq/infra/strapiFAQ.fixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,10 @@ export const aStrapiQuestion = (override?: Partial<FAQResponseStrapi.Question>):
...override,
};
};

export const aStrapiQuestionSlug = (override?: Partial<FAQResponseStrapi.QuestionSlug>): FAQResponseStrapi.QuestionSlug => {
return {
slug: 'Comment-constituer-un-dossier-locatif ?',
...override,
};
};
17 changes: 2 additions & 15 deletions src/server/faq/infra/strapiFAQ.mapper.test.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import {
aQuestion,
aQuestionEtReponse,
} from '~/server/faq/domain/FAQ.fixture';
import { aQuestion, aQuestionEtReponse } from '~/server/faq/domain/FAQ.fixture';
import { aStrapiQuestion, aStrapiQuestionEtReponse } from '~/server/faq/infra/strapiFAQ.fixture';
import { flatMapSlug, mapQuestion, mapQuestionRéponse } from '~/server/faq/infra/strapiFAQ.mapper';
import { mapQuestion, mapQuestionRéponse } from '~/server/faq/infra/strapiFAQ.mapper';

describe('mapQuestion', () => {
it('retourne le résultat formaté', () => {
Expand Down Expand Up @@ -34,13 +31,3 @@ describe('mapQuestionRéponse', () => {
}));
});
});

describe('flatMapSlug', () => {
it('renvoie le slug', () => {
const result= flatMapSlug({
slug: 'Comment-constituer-un-dossier-locatif-?',
});

expect(result).toEqual('Comment-constituer-un-dossier-locatif-?');
});
});
3 changes: 0 additions & 3 deletions src/server/faq/infra/strapiFAQ.mapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,3 @@ export const mapQuestion = (faq: FAQResponseStrapi.Question): FAQ.Question => {
slug: faq.slug,
};
};

export const flatMapSlug = (faq: FAQResponseStrapi.QuestionSlug): FAQ.Slug => faq.slug;

Loading

0 comments on commit a74716c

Please sign in to comment.