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é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<IEvenementMetier>(new RetraitRéalisé(_numéroDeCompte, montantRetrait, dateRetrait), new BalanceNégativeDétectée(_numéroDeCompte, new Montant(5), dateRetrait)); }
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<IEvenementMetier> FaireUnRetrait(Montant montantRetrait, DateTime dateRetrait) { yield return new RetraitRéalisé(numCompte, montantRetrait, dateRetrait); if (this.unCompteCréé.AutorisationDeCrédit < (this.balance - montantRetrait.Value)) { yield return new BalanceNégativeDétectée(numCompte, montantRetrait, dateRetrait); throw new RetraitNonAutorisé(); } }
public IEnumerable<IEvénementMétier> FaireUnRetrait(Montant montantRetrait, DateTime dateRetrait) { this.montant.montant = this.montant.montant - montantRetrait.montant; yield return new RetraitRéalisé(this.numeroDeCompte, montantRetrait, dateRetrait); if (montant.montant < montantRetrait.montant) { yield return new BalanceNégativeDétectée(this.numeroDeCompte, new Montant(this.montant.montant * -1), dateRetrait); if (montant.montant*-1 > this.autorisationDecredit) { throw new RetraitNonAutorisé(); } } }
public RetraitRéalisé(string numéroDeCompte, Montant montantRetrait, DateTime dateRetrait) { _numéroDeCompte = numéroDeCompte; _montantRetrait = montantRetrait; _dateRetrait = dateRetrait; }
public IEnumerable<IEvénementMétier> FaireUnDepot(Montant montantDepot, DateTime dateDepot) { DépotRéalisé depot = new DépotRéalisé(numeroDeCompte,montantDepot,dateDepot); montant.montant += montantDepot.montant; yield return depot; }
public void Add(Montant montant) { _montant += montant.Montant1; }
public IEnumerable<IEvenementMetier> FaireUnDepot(Montant montantDepot, DateTime dateDepot) { yield return new DépotRéalisé(numCompte, montantDepot, dateDepot); }
public IEnumerable<IEvenementMetier> FaireUnRetrait(Montant montantRetrait, DateTime dateRetrait) { yield return new RetraitRéalisé(_numéroDeCompte, montantRetrait, dateRetrait); }
public BalanceNégativeDétectée(string numéroDeCompte, Montant montant, DateTime dateRetrait) { this._numéroDeCompte = numéroDeCompte; this._montant = montant; this._dateRetrait = dateRetrait; }
protected bool Equals(Montant other) { return _montant == other._montant; }
public void Sub(Montant montantRetrait) { _montant -= montantRetrait.Montant1; }
public DépotRéalisé(string numeroDeCompte, Montant montantDepot, DateTime dateDepot) { this.numeroDeCompte = numeroDeCompte; this.montantDepot = montantDepot; this.dateDepot = dateDepot; }
public DépotRéalisé(string numeroDeCompte, Montant montantDepot, DateTime dateDepot) { _numeroDeCompte = numeroDeCompte; _montantDepot = montantDepot; _dateDepot = dateDepot; }
public CompteBancaire(CompteCréé compteCree) { this.numeroDeCompte = compteCree.numeroCompte; montant = new Montant(0); }
public CompteBancaire(CompteCréé compteCree, DépotRéalisé dépotRéalisé) { this.numeroDeCompte = compteCree.numeroCompte; montant = new Montant(0); this.montant.montant += dépotRéalisé.montantDepot.montant; }
public BalanceNégativeDétectée(string numeroCompte, Montant montant, DateTime dateRetrait) { this.montant = montant; this.dateRetrait = dateRetrait; this.numeroCompte = numeroCompte; }