Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature/new immersion offer page #585

Merged
merged 9 commits into from
Aug 29, 2023
4 changes: 2 additions & 2 deletions back/src/_testBuilders/establishmentAggregate.test.helpers.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Builder, RomeCode, SearchImmersionResultDto } from "shared";
import { Builder, RomeCode, SearchResultDto } from "shared";
import { UuidV4Generator } from "../adapters/secondary/core/UuidGeneratorImplementations";
import { TEST_ROME_LABEL } from "../adapters/secondary/immersionOffer/InMemoryEstablishmentAggregateRepository";
import { ContactEntity } from "../domain/immersionOffer/entities/ContactEntity";
Expand Down Expand Up @@ -125,7 +125,7 @@ export const establishmentAggregateToSearchResultByRome = (
establishmentAggregate: EstablishmentAggregate,
romeCode: RomeCode,
distance_m?: number,
): SearchImmersionResultDto => ({
): SearchResultDto => ({
rome: romeCode,
naf: establishmentAggregate.establishment.nafDto.code,
nafLabel: establishmentAggregate.establishment.nafDto.nomenclature,
Expand Down
13 changes: 7 additions & 6 deletions back/src/adapters/primary/config/createUseCases.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ import { ContactEstablishment } from "../../../domain/immersionOffer/useCases/Co
import { DeleteEstablishment } from "../../../domain/immersionOffer/useCases/DeleteEstablishment";
import { AddExchangeToDiscussionAndTransferEmail } from "../../../domain/immersionOffer/useCases/discussions/AddExchangeToDiscussionAndTransferEmail";
import { EditFormEstablishment } from "../../../domain/immersionOffer/useCases/EditFormEstablishment";
import { GetSearchImmersionResultBySiretAndRome } from "../../../domain/immersionOffer/useCases/GetImmersionOfferById";
import { GetSearchImmersionResultBySiretAndAppellationCode } from "../../../domain/immersionOffer/useCases/GetImmersionOfferBySiretAndAppellationCode";
import { GetOffersByGroupSlug } from "../../../domain/immersionOffer/useCases/GetOffersByGroupSlug";
import { GetSearchResultBySiretAndRome } from "../../../domain/immersionOffer/useCases/GetSearchResultById";
import { GetSearchResultBySiretAndAppellationCode } from "../../../domain/immersionOffer/useCases/GetSearchResultBySiretAndAppellationCode";
import { InsertEstablishmentAggregateFromForm } from "../../../domain/immersionOffer/useCases/InsertEstablishmentAggregateFromFormEstablishement";
import { NotifyConfirmationEstablishmentCreated } from "../../../domain/immersionOffer/useCases/notifications/NotifyConfirmationEstablishmentCreated";
import { NotifyContactRequest } from "../../../domain/immersionOffer/useCases/notifications/NotifyContactRequest";
Expand Down Expand Up @@ -251,10 +251,11 @@ export const createUseCases = (
uuidGenerator,
),
getOffersByGroupSlug: new GetOffersByGroupSlug(uowPerformer),
getSearchImmersionResultBySiretAndAppellationCode:
new GetSearchImmersionResultBySiretAndAppellationCode(uowPerformer),
getSearchImmersionResultBySiretAndRome:
new GetSearchImmersionResultBySiretAndRome(uowPerformer),
getSearchResultBySiretAndAppellationCode:
new GetSearchResultBySiretAndAppellationCode(uowPerformer),
getSearchImmersionResultBySiretAndRome: new GetSearchResultBySiretAndRome(
uowPerformer,
),

addFormEstablishment,

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { z } from "zod";
import {
addressWithPostalCodeSchema,
appellationSchema,
appellationCodeSchema,
emailSchema,
nafSchema,
NotEmptyArray,
Expand Down Expand Up @@ -41,7 +41,7 @@ type ProfessionDtoPublicV0 = {

const professionSchemaPublicV0: z.Schema<ProfessionDtoPublicV0> = z.object({
romeCodeMetier: romeCodeSchema,
romeCodeAppellation: appellationSchema.optional(),
romeCodeAppellation: appellationCodeSchema.optional(),
description: zTrimmedString,
});

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { GeoPositionDto, RomeCode, SearchImmersionParamsDto } from "shared";
import { GeoPositionDto, RomeCode, SearchQueryParamsDto } from "shared";

export type SearchImmersionRequestPublicV0 = {
rome?: RomeCode;
Expand All @@ -8,7 +8,7 @@ export type SearchImmersionRequestPublicV0 = {

export const searchImmersionRequestPublicV0ToDomain = (
publicV0: SearchImmersionRequestPublicV0,
): SearchImmersionParamsDto => {
): SearchQueryParamsDto => {
const { location, distance_km, ...rest } = publicV0;
return {
...rest,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import {
addressDtoToString,
GeoPositionDto,
RomeCode,
SearchImmersionResultDto,
SearchResultDto,
SiretDto,
} from "shared";
import { GetSearchImmersionResultBySiretAndRomePayload } from "../../../../../../domain/immersionOffer/useCases/GetImmersionOfferById";
import { GetSearchResultBySiretAndRomePayload } from "../../../../../../domain/immersionOffer/useCases/GetSearchResultById";

export type LegacyImmersionOfferId = `${SiretDto}-${RomeCode}`;

Expand All @@ -16,7 +16,7 @@ export const toLegacyImmersionOfferId = (

export const toGetSearchImmersionResultBySiretAndRomePayload = (
id: LegacyImmersionOfferId,
): GetSearchImmersionResultBySiretAndRomePayload => {
): GetSearchResultBySiretAndRomePayload => {
const [siret, rome] = id.split("-");
return {
rome,
Expand All @@ -42,7 +42,7 @@ export type SearchImmersionResultPublicV0 = {
};

export const domainToSearchImmersionResultPublicV0 = (
domain: SearchImmersionResultDto,
domain: SearchResultDto,
): SearchImmersionResultPublicV0 => {
const { appellations, position, website, additionalInformation, ...rest } =
domain;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { z } from "zod";
import {
appellationSchema,
appellationCodeSchema,
romeCodeSchema,
siretSchema,
zToBoolean,
Expand All @@ -11,7 +11,7 @@ import { SearchImmersionRequestPublicV1 } from "./SearchImmersionRequestPublicV1
export const searchImmersionRequestPublicV1Schema: z.Schema<SearchImmersionRequestPublicV1> =
z.object({
rome: romeCodeSchema.optional(),
appellationCode: appellationSchema.optional(),
appellationCode: appellationCodeSchema.optional(),
siret: siretSchema.optional(),
latitude: zToNumber,
longitude: zToNumber,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
import {
AppellationCode,
RomeCode,
SearchImmersionQueryParamsDto,
} from "shared";
import { AppellationCode, RomeCode, SearchQueryParamsDto } from "shared";

type SearchSortedBy = "distance" | "date";

Expand All @@ -19,7 +15,7 @@ export type SearchImmersionRequestPublicV1 = {

export const searchImmersionRequestPublicV1ToDomain = (
publicV1: SearchImmersionRequestPublicV1,
): SearchImmersionQueryParamsDto => {
): SearchQueryParamsDto => {
const { distance_km, ...rest } = publicV1;
return {
...rest,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {
addressDtoToString,
GeoPositionDto,
RomeCode,
SearchImmersionResultDto,
SearchResultDto,
SiretDto,
} from "shared";
import { ContactMethod } from "../../../../../../domain/immersionOffer/entities/ContactEntity";
Expand All @@ -29,7 +29,7 @@ export type SearchImmersionResultPublicV1 = {
export const domainToSearchImmersionResultPublicV1 = ({
appellations,
...domain
}: SearchImmersionResultDto): SearchImmersionResultPublicV1 => ({
}: SearchResultDto): SearchImmersionResultPublicV1 => ({
...domain,
appellationLabels: appellations.map(
(appellation) => appellation.appellationLabel,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
import {
AppellationCode,
RomeCode,
SearchImmersionQueryParamsDto,
} from "shared";
import { AppellationCode, RomeCode, SearchQueryParamsDto } from "shared";

type SearchSortedBy = "distance" | "date";

Expand All @@ -18,4 +14,4 @@ export type SearchImmersionRequestPublicV2 = {

export const searchImmersionRequestPublicV2ToDomain = (
publicV2: SearchImmersionRequestPublicV2,
): SearchImmersionQueryParamsDto => publicV2;
): SearchQueryParamsDto => publicV2;
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
import { z } from "zod";
import { appellationSchema, siretSchema, zToBoolean, zToNumber } from "shared";
import {
appellationCodeSchema,
siretSchema,
zToBoolean,
zToNumber,
} from "shared";
import { SearchImmersionRequestPublicV2 } from "./SearchImmersionRequestPublicV2.dto";

export const searchImmersionRequestPublicV2Schema: z.Schema<SearchImmersionRequestPublicV2> =
z.object({
appellationCode: appellationSchema.optional(),
appellationCode: appellationCodeSchema.optional(),
siret: siretSchema.optional(),
latitude: zToNumber,
longitude: zToNumber,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
AppellationDto,
GeoPositionDto,
RomeCode,
SearchImmersionResultDto,
SearchResultDto,
SiretDto,
} from "shared";
import { ContactMethod } from "../../../../../../domain/immersionOffer/entities/ContactEntity";
Expand All @@ -27,5 +27,5 @@ export type SearchImmersionResultPublicV2 = {
};

export const domainToSearchImmersionResultPublicV2 = (
searchImmersionResult: SearchImmersionResultDto,
searchImmersionResult: SearchResultDto,
): SearchImmersionResultPublicV2 => searchImmersionResult;
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ export const createApiKeyAuthRouterV1 = (deps: AppDependencies) => {
});

return domainToSearchImmersionResultPublicV1(
await deps.useCases.getSearchImmersionResultBySiretAndAppellationCode.execute(
await deps.useCases.getSearchResultBySiretAndAppellationCode.execute(
{
siret: req.params.siret,
appellationCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export const createApiKeyAuthRouterV2 = (deps: AppDependencies) => {
sendHttpResponseForApiV2(req, res, async () => {
if (!req.apiConsumer?.isAuthorized) throw new ForbiddenError();
return domainToSearchImmersionResultPublicV2(
await deps.useCases.getSearchImmersionResultBySiretAndAppellationCode.execute(
await deps.useCases.getSearchResultBySiretAndAppellationCode.execute(
req.params,
req.apiConsumer,
),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { SearchImmersionResultDto } from "shared";
import { SearchResultDto } from "shared";
import { createOpenApiGenerator } from "shared-routes/openapi";
import { ContactEstablishmentPublicV2Dto } from "../DtoAndSchemas/v2/input/ContactEstablishmentPublicV2.dto";
import { publicApiV2Routes } from "./publicApiV2.routes";
Expand Down Expand Up @@ -33,7 +33,7 @@ const contactInPersonExample: ContactEstablishmentPublicV2Dto = {
contactMode: "IN_PERSON",
};

const searchImmersionResult: SearchImmersionResultDto = {
const searchImmersionResult: SearchResultDto = {
additionalInformation: "Some additionnal information",
address: {
departmentCode: "75",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { z } from "zod";
import {
httpErrorSchema,
searchImmersionResultSchema,
searchImmersionsSchema,
searchResultSchema,
searchResultsSchema,
withAuthorizationHeaders,
} from "shared";
import { defineRoute, defineRoutes } from "shared-routes";
Expand All @@ -16,7 +16,7 @@ export const publicApiV2Routes = defineRoutes({
url: "/v2/offers/:siret/:appellationCode",
...withAuthorizationHeaders,
responses: {
200: searchImmersionResultSchema,
200: searchResultSchema,
400: httpErrorSchema,
401: httpErrorSchema,
403: httpErrorSchema,
Expand All @@ -29,7 +29,7 @@ export const publicApiV2Routes = defineRoutes({
queryParamsSchema: searchImmersionRequestPublicV2Schema,
...withAuthorizationHeaders,
responses: {
200: searchImmersionsSchema,
200: searchResultsSchema,
400: httpErrorSchema,
401: httpErrorSchema,
403: httpErrorSchema,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import {
ContactEstablishmentRequestDto,
expectArraysToMatch,
expectToEqual,
SearchImmersionRoutes,
searchImmersionRoutes,
SearchRoutes,
} from "shared";
import { HttpClient } from "shared-routes";
import { createSupertestSharedClient } from "shared-routes/supertest";
Expand Down Expand Up @@ -38,7 +38,7 @@ describe(`${searchImmersionRoutes.contactEstablishment.method} ${searchImmersion
let gateways: InMemoryGateways;
let eventCrawler: BasicEventCrawler;
let inMemoryUow: InMemoryUnitOfWork;
let sharedRequest: HttpClient<SearchImmersionRoutes>;
let sharedRequest: HttpClient<SearchRoutes>;

beforeEach(async () => {
const testAppAndDeps = await buildTestApp();
Expand Down
Loading