Skip to content

Commit

Permalink
Feat: permet creation action conseiller avec statut (#1333)
Browse files Browse the repository at this point in the history
  • Loading branch information
arthurlbrjc authored Dec 18, 2023
1 parent a947091 commit 38183b7
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 42 deletions.
1 change: 1 addition & 0 deletions src/infrastructure/routes/conseillers.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,7 @@ export class ConseillersController {
dateEcheance: createActionPayload.dateEcheance
? DateTime.fromISO(createActionPayload.dateEcheance, { setZone: true })
: this.buildDateEcheanceV1(),
statut: createActionPayload.status,
codeQualification: createActionPayload.codeQualification
}

Expand Down
7 changes: 3 additions & 4 deletions src/infrastructure/routes/validation/actions.inputs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,16 +69,15 @@ export class CreateActionPayload {
@IsNotEmpty()
@IsEnum(Action.Qualification.Code)
codeQualification?: Action.Qualification.Code
}

export class CreateActionParLeJeunePayload extends CreateActionPayload {
@ApiProperty({ enum: Action.Statut })
@IsOptional()
@IsString()
@IsEnum(Action.Statut)
@IsNotIn([Action.Statut.ANNULEE])
@IsOptional()
status?: Action.Statut
}

export class CreateActionParLeJeunePayload extends CreateActionPayload {
@IsOptional()
@IsBoolean()
rappel?: boolean
Expand Down
80 changes: 42 additions & 38 deletions test/infrastructure/routes/conseillers.controller.test.ts
Original file line number Diff line number Diff line change
@@ -1,55 +1,54 @@
import { HttpStatus, INestApplication } from '@nestjs/common'
import { CreateActionCommandHandler } from 'src/application/commands/action/create-action.command.handler'
import { DeleteConseillerCommandHandler } from 'src/application/commands/conseiller/delete-conseiller.command.handler'
import { CreateRendezVousCommandHandler } from 'src/application/commands/create-rendez-vous.command.handler'
import { RecupererJeunesDuConseillerCommandHandler } from 'src/application/commands/recuperer-jeunes-du-conseiller.command.handler'
import { GetAllRendezVousConseillerQueryHandler } from 'src/application/queries/rendez-vous/get-rendez-vous-conseiller.query.handler.db'
import { Action } from 'src/domain/action/action'
import { Qualification } from 'src/domain/action/qualification'
import { CodeTypeRendezVous } from 'src/domain/rendez-vous/rendez-vous'
import { CreateActionPayload } from 'src/infrastructure/routes/validation/actions.inputs'
import { CreateRendezVousPayload } from 'src/infrastructure/routes/validation/rendez-vous.inputs'
import * as request from 'supertest'
import { uneDatetime, uneDatetimeAvecOffset } from 'test/fixtures/date.fixture'
import { unRendezVousConseillerFutursEtPassesQueryModel } from 'test/fixtures/rendez-vous.fixture'
import { CreateActionCommandHandler } from '../../../src/application/commands/action/create-action.command.handler'
import { DeleteConseillerCommandHandler } from '../../../src/application/commands/conseiller/delete-conseiller.command.handler'
import {
ModifierConseillerCommand,
ModifierConseillerCommandHandler
} from '../../../src/application/commands/modifier-conseiller.command.handler'
} from 'src/application/commands/modifier-conseiller.command.handler'
import {
ModifierJeuneDuConseillerCommand,
ModifierJeuneDuConseillerCommandHandler
} from '../../../src/application/commands/modifier-jeune-du-conseiller.command.handler'
import { SendNotificationsNouveauxMessagesCommandHandler } from '../../../src/application/commands/send-notifications-nouveaux-messages.command.handler'
import { GetConseillersQueryHandler } from '../../../src/application/queries/get-conseillers.query.handler.db'
import { GetDetailConseillerQueryHandler } from '../../../src/application/queries/get-detail-conseiller.query.handler.db'
import { GetIndicateursPourConseillerQueryHandler } from '../../../src/application/queries/get-indicateurs-pour-conseiller.query.handler.db'
import { GetJeunesByConseillerQueryHandler } from '../../../src/application/queries/get-jeunes-by-conseiller.query.handler.db'
import { GetJeunesIdentitesQueryHandler } from '../../../src/application/queries/get-jeunes-identites.query.handler.db'
} from 'src/application/commands/modifier-jeune-du-conseiller.command.handler'
import { RecupererJeunesDuConseillerCommandHandler } from 'src/application/commands/recuperer-jeunes-du-conseiller.command.handler'
import { SendNotificationsNouveauxMessagesCommandHandler } from 'src/application/commands/send-notifications-nouveaux-messages.command.handler'
import { GetConseillersQueryHandler } from 'src/application/queries/get-conseillers.query.handler.db'
import { GetDetailConseillerQueryHandler } from 'src/application/queries/get-detail-conseiller.query.handler.db'
import { GetIndicateursPourConseillerQueryHandler } from 'src/application/queries/get-indicateurs-pour-conseiller.query.handler.db'
import { GetJeunesByConseillerQueryHandler } from 'src/application/queries/get-jeunes-by-conseiller.query.handler.db'
import { GetJeunesIdentitesQueryHandler } from 'src/application/queries/get-jeunes-identites.query.handler.db'
import { GetAllRendezVousConseillerQueryHandler } from 'src/application/queries/rendez-vous/get-rendez-vous-conseiller.query.handler.db'
import {
DroitsInsuffisants,
JeuneNonLieAuConseillerError,
NonTrouveError
} from '../../../src/building-blocks/types/domain-error'
} from 'src/building-blocks/types/domain-error'
import {
emptySuccess,
failure,
success
} from '../../../src/building-blocks/types/result'
import { Core } from '../../../src/domain/core'
import { EnvoyerNotificationsPayload } from '../../../src/infrastructure/routes/validation/conseillers.inputs'
import { uneAgence } from '../../fixtures/agence.fixture'
} from 'src/building-blocks/types/result'
import { Action } from 'src/domain/action/action'
import { Qualification } from 'src/domain/action/qualification'
import { Core } from 'src/domain/core'
import { CodeTypeRendezVous } from 'src/domain/rendez-vous/rendez-vous'
import { CreateActionPayload } from 'src/infrastructure/routes/validation/actions.inputs'
import { EnvoyerNotificationsPayload } from 'src/infrastructure/routes/validation/conseillers.inputs'
import { CreateRendezVousPayload } from 'src/infrastructure/routes/validation/rendez-vous.inputs'
import * as request from 'supertest'
import { uneAgence } from 'test/fixtures/agence.fixture'
import {
unHeaderAuthorization,
unUtilisateurDecode
} from '../../fixtures/authentification.fixture'
import { unConseiller } from '../../fixtures/conseiller.fixture'
import { unJeune } from '../../fixtures/jeune.fixture'
import { detailConseillerQueryModel } from '../../fixtures/query-models/conseiller.query-model.fixtures'
import { StubbedClass, expect } from '../../utils'
import { ensureUserAuthenticationFailsIfInvalid } from '../../utils/ensure-user-authentication-fails-if-invalid'
import { getApplicationWithStubbedDependencies } from '../../utils/module-for-testing'
import Code = Qualification.Code
} from 'test/fixtures/authentification.fixture'
import { unConseiller } from 'test/fixtures/conseiller.fixture'
import { uneDatetime, uneDatetimeAvecOffset } from 'test/fixtures/date.fixture'
import { unJeune } from 'test/fixtures/jeune.fixture'
import { detailConseillerQueryModel } from 'test/fixtures/query-models/conseiller.query-model.fixtures'
import { unRendezVousConseillerFutursEtPassesQueryModel } from 'test/fixtures/rendez-vous.fixture'
import { expect, StubbedClass } from 'test/utils'
import { ensureUserAuthenticationFailsIfInvalid } from 'test/utils/ensure-user-authentication-fails-if-invalid'
import { getApplicationWithStubbedDependencies } from 'test/utils/module-for-testing'

describe('ConseillersController', () => {
let getDetailConseillerQueryHandler: StubbedClass<GetDetailConseillerQueryHandler>
Expand Down Expand Up @@ -378,7 +377,8 @@ describe('ConseillersController', () => {
const actionPayload: CreateActionPayload = {
content: "Ceci est un contenu d'action",
comment: 'Ceci est un commentaire',
codeQualification: Code.PROJET_PROFESSIONNEL
codeQualification: Qualification.Code.PROJET_PROFESSIONNEL,
status: Action.Statut.TERMINEE
}
const idAction = '15916d7e-f13a-4158-b7eb-3936aa937a0a'
createActionCommandHandler.execute.resolves(success(idAction))
Expand All @@ -400,18 +400,21 @@ describe('ConseillersController', () => {
commentaire: 'Ceci est un commentaire',
dateEcheance: nowJsPlus3Mois,
rappel: false,
codeQualification: Code.PROJET_PROFESSIONNEL
codeQualification: Qualification.Code.PROJET_PROFESSIONNEL,
statut: Action.Statut.TERMINEE
},
unUtilisateurDecode()
)
})

it("renvoie l'id de l'action créée avec dateEcheance", async () => {
// Given
const actionPayload: CreateActionPayload = {
content: "Ceci est un contenu d'action",
comment: 'Ceci est un commentaire',
codeQualification: Code.CITOYENNETE,
dateEcheance: uneDatetimeAvecOffset().toISO()
codeQualification: Qualification.Code.CITOYENNETE,
dateEcheance: uneDatetimeAvecOffset().toISO(),
status: Action.Statut.EN_COURS
}
const idAction = '15916d7e-f13a-4158-b7eb-3936aa937a0a'
createActionCommandHandler.execute.resolves(success(idAction))
Expand All @@ -433,7 +436,8 @@ describe('ConseillersController', () => {
commentaire: 'Ceci est un commentaire',
dateEcheance: uneDatetimeAvecOffset(),
rappel: true,
codeQualification: Code.CITOYENNETE
codeQualification: Qualification.Code.CITOYENNETE,
statut: Action.Statut.EN_COURS
},
unUtilisateurDecode()
)
Expand Down

0 comments on commit 38183b7

Please sign in to comment.