public RetraitRéalisé(string numéroDeCompte, Montant montantRetrait, DateTime dateRetrait) : this() { NuméroDeCompte = numéroDeCompte; MontantRetrait = montantRetrait; _dateRetrait = dateRetrait; }
public DépotRéalisé(string numéroDeCompte, Montant montantDepot, DateTime dateDepot) : this() { _numéroDeCompte = numéroDeCompte; MontantDepot = montantDepot; _dateDepot = dateDepot; }
public void EtantDonnéUnCompteBancaireNonApprovisionnéFaireUnRetraitSansDépasserSonAutorisationDeCreditSuffisanteProduitDeuxEvenements() { var compteBancaire = new CompteBancaire(new CompteCréé(_numéroDeCompte, 10), new DépotRéalisé(_numéroDeCompte, new Montant(5), DateTime.Now)); var montantRetrait = new Montant(10); var dateRetrait = DateTime.Now; var evenements = compteBancaire.FaireUnRetrait(montantRetrait, dateRetrait); // retourne un IEnumerable<IEvénémentMétier> contenant l'événement RetraitRealisé Check.That(evenements).ContainsExactly<IEvénementMétier>(new RetraitRéalisé(_numéroDeCompte, montantRetrait, dateRetrait), new BalanceNégativeDétectée(_numéroDeCompte, new Montant(5), dateRetrait)); }
public void EtantDonnéUnCompteBancaireInitialiséViaEventSourcingFaireUnRetraitEnDehorsDeLAutorisationDeCreditLèveUneException() { var compteBancaire = new CompteBancaire(new CompteCréé(_numéroDeCompte, 10), new DépotRéalisé(_numéroDeCompte, new Montant(5), DateTime.Now)); var montantRetrait = new Montant(30); var dateRetrait = DateTime.Now; var evenements = compteBancaire.FaireUnRetrait(montantRetrait, dateRetrait); Check.That(evenements).IsEmpty(); }
public void EtantDonnéUnCompteBancaireFaireUnRetraitAvecProvisionSuffisanteProduitUnEvenement() { var compteBancaire = new CompteBancaire(new CompteCréé(_numéroDeCompte, 0), new DépotRéalisé(_numéroDeCompte, new Montant(100), DateTime.Now)); // Event Sourcing avec une liste d'événements (params IEvénementMétier>[]) var montantRetrait = new Montant(10); var dateRetrait = DateTime.Now; var evenements = compteBancaire.FaireUnRetrait(montantRetrait, dateRetrait); // retourne un IEnumerable<IEvénémentMétier> contenant l'événement RetraitRealisé Check.That(evenements).ContainsExactly(new RetraitRéalisé(_numéroDeCompte, montantRetrait, dateRetrait)); }
public void EtantDonnéUnCompteBancaireFaireUnDepotProduitUnEvenement() { var compteBancaire = new CompteBancaire(new CompteCréé(_numéroDeCompte, 0)); // Event Sourcing avec un seul événement var montantDepot = new Montant(10); var dateDepot = DateTime.Now; var evenements = compteBancaire.FaireUnDepot(montantDepot, dateDepot); // retourne un IEnumerable<IEvenementMetier> contenant l'événement DepotRealisé Check.That(evenements).ContainsExactly(new DépotRéalisé(_numéroDeCompte, montantDepot, dateDepot)); }
public IEnumerable<IEvénementMétier> FaireUnRetrait(Montant montantRetrait, DateTime dateRetrait) { if (montantRetrait.Montant1 > _compteCréé.AutorisationDeCrédit + _dépotRéalisé.MontantDepot.Montant1) { throw new RetraitNonAutorisé(); } yield return new RetraitRéalisé(_compteCréé.NuméroDeCompte, montantRetrait, dateRetrait); if (montantRetrait.Montant1 > _dépotRéalisé.MontantDepot.Montant1) { yield return new BalanceNégativeDétectée(_compteCréé.NuméroDeCompte, new Montant(montantRetrait.Montant1 - _dépotRéalisé.MontantDepot.Montant1), dateRetrait); } }
public void AjouterDébit(Montant montantRetrait) { _debits += montantRetrait.Montant1; }
public IEnumerable<IEvénementMétier> FaireUnDepot(Montant montantDepot, DateTime dateDepot) { yield return new DépotRéalisé(_compteCréé.NuméroDeCompte, montantDepot, dateDepot); }
public BalanceNégativeDétectée(string numéroDeCompte, Montant montant, DateTime dateRetrait) { _numéroDeCompte = numéroDeCompte; _montant = montant; _dateRetrait = dateRetrait; }