@Test
 public void
     etantDonneLimiteDemandeEnAttenteAtteinteQuandAjouterDemandeDevraitLancerAssignation() {
   given(conteneurDemandes.getNombreDemandesEnAttente()).willReturn(LIMITE_DEMANDES_PAR_DEFAUT);
   declencheur.ajouterDemande(demandeAjoutee);
   verify(assignateur).lancerAssignation(conteneurDemandes, notificateur);
 }
 @Test
 public void
     etantDonneLimiteDemandeEnAttenteAtteinteQuandAjouterDeamndeDevraitReinitiliserMinuterie() {
   given(conteneurDemandes.getNombreDemandesEnAttente()).willReturn(LIMITE_DEMANDES_PAR_DEFAUT);
   declencheur.ajouterDemande(demandeAjoutee);
   verify(minuterie).reinitialiser();
 }
 @Test
 public void quandSetFrequenceDevraitChangerFrequenceMinuterieAvantRedemarrerMinuterie() {
   declencheur.setFrequence(FREQUENCE_3_MINUTES);
   InOrder inOrder = inOrder(minuterie);
   inOrder.verify(minuterie).setDelai(FREQUENCE_3_MINUTES);
   inOrder.verify(minuterie).reinitialiser();
 }
 @Test
 public void
     etantDonneNouvelleLimiteDemandeEnAttenteAtteinteQuandSetLimiteDemandesAvantAssignationDevraitDemanderAssignationDemandes() {
   given(conteneurDemandes.getNombreDemandesEnAttente()).willReturn(LIMITE_DEMANDES_5);
   declencheur.setLimiteDemandesAvantAssignation(LIMITE_DEMANDES_5);
   verify(assignateur).lancerAssignation(conteneurDemandes, notificateur);
 }
 @Test
 public void
     etantDonneDemandeAAnnulerAvecIDExistanteQuandAnnulerDemandeDevraitNotifierAnnulation() {
   permettreTrouverDemandeAAnnulerAvecID();
   declencheur.annulerDemande(ID_DEMANDE);
   verify(notificateur).notifierAnnulation(demandeAnnulee);
 }
 @Test
 public void
     etantDonneDemandeAAnnulerAvecIDExistanteQuandAnnulerDemandeDevraitAnnulerReservation() {
   permettreTrouverDemandeAAnnulerAvecID();
   declencheur.annulerDemande(ID_DEMANDE);
   verify(demandeAnnulee).annulerReservation();
 }
 @Test
 public void etantDonneDemandeAAnnulerInexistanteQuandAnnulerDemandeDevraitNeRienFaire() {
   given(conteneurDemandes.trouverDemandeSelonTitreReunion(TITRE_DEMANDE_ANNULEE))
       .willReturn(Optional.empty());
   declencheur.annulerDemande(TITRE_DEMANDE_ANNULEE);
   verify(conteneurDemandes, never()).archiverDemande(any(Demande.class));
 }
 @Test
 public void
     etantDonneNouvelleLimiteDemandeSuperieureNbDemandesEnAttenteQuandSetLimiteDemandesAvantAssignationDevraitNeRienFaire() {
   given(conteneurDemandes.getNombreDemandesEnAttente()).willReturn(LIMITE_DEMANDES_5);
   declencheur.setLimiteDemandesAvantAssignation(LIMITE_DEMANDES_7);
   verify(assignateur, never())
       .lancerAssignation(any(ConteneurDemandes.class), any(Notificateur.class));
 }
 @Test
 public void etantDonneDemandeAAnnulerExistanteQuandAnnulerDemandeDevraitAnnulerReservation() {
   permettreTrouverDemandeAAnnuler();
   declencheur.annulerDemande(TITRE_DEMANDE_ANNULEE);
   verify(demandeAnnulee).annulerReservation();
 }
 @Test
 public void quandAjouterDemandeDevraitMettreDemandeEnAttente() {
   declencheur.ajouterDemande(demandeAjoutee);
   verify(conteneurDemandes).mettreDemandeEnAttente(demandeAjoutee);
 }
 @Test
 public void quandNotifierDelaiEcouleDevraitLancerAssignation() {
   declencheur.notifierDelaiEcoule();
   verify(assignateur).lancerAssignation(conteneurDemandes, notificateur);
 }
 @Test
 public void etantDonneDemandeAAnnulerAvecIDInexistanteQuandAnnulerDemandeDevraitNeRienFaire() {
   given(conteneurDemandes.obtenirDemandeSelonId(ID_DEMANDE)).willReturn(Optional.empty());
   declencheur.annulerDemande(ID_DEMANDE);
   verify(conteneurDemandes, never()).archiverDemande(any(Demande.class));
 }