Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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é();

            }
        }
Exemplo n.º 6
0
        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é();
                    }
                }
        }
Exemplo n.º 7
0
 public RetraitRéalisé(string numéroDeCompte, Montant montantRetrait, DateTime dateRetrait)
 {
     _numéroDeCompte = numéroDeCompte;
      _montantRetrait = montantRetrait;
      _dateRetrait = dateRetrait;
 }
Exemplo n.º 8
0
 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;
 }
Exemplo n.º 9
0
 public void Add(Montant montant)
 {
     _montant += montant.Montant1;
 }
Exemplo n.º 10
0
 public IEnumerable<IEvenementMetier> FaireUnDepot(Montant montantDepot, DateTime dateDepot)
 {
     yield return new DépotRéalisé(numCompte, montantDepot, dateDepot);
 }
Exemplo n.º 11
0
 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;
 }
Exemplo n.º 13
0
 protected bool Equals(Montant other)
 {
     return _montant == other._montant;
 }
Exemplo n.º 14
0
 public void Sub(Montant montantRetrait)
 {
     _montant -= montantRetrait.Montant1;
 }
Exemplo n.º 15
0
 public DépotRéalisé(string numeroDeCompte, Montant montantDepot, DateTime dateDepot)
 {
     this.numeroDeCompte = numeroDeCompte;
     this.montantDepot = montantDepot;
     this.dateDepot = dateDepot;
 }
Exemplo n.º 16
0
 public DépotRéalisé(string numeroDeCompte, Montant montantDepot, DateTime dateDepot)
 {
     _numeroDeCompte = numeroDeCompte;
     _montantDepot = montantDepot;
     _dateDepot = dateDepot;
 }
Exemplo n.º 17
0
 public CompteBancaire(CompteCréé compteCree)
 {
     this.numeroDeCompte = compteCree.numeroCompte;
     montant = new Montant(0);
 }
Exemplo n.º 18
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;
 }