Exemplo n.º 1
0
        public async Task When_AddPaymentCommand_Get_Subscription_Corresponding_To_CreditCard()
        {
            var subId      = CreditCardSubscriptionId.NewId();
            var creditCard = new CreditCard(CreditCardId.NewId(), subId, DateTimeOffset.Now);

            var repo = A.Fake <IAggregateRepository <CreditCard> >();

            A.CallTo(() => repo.GetByIdAsync(creditCard.Id))
            .Returns(creditCard);
            var subRepository = A.Fake <IAggregateRepository <CreditCardSubscription> >();
            var sub           = new CreditCardSubscription(subId, DateTimeOffset.Now, new CreditCardSubscriptionName("gold"));

            sub.UseNoPaymentFee(DateTimeOffset.Now);
            A.CallTo(subRepository)
            .WithReturnType <Task <CreditCardSubscription> >()
            .Returns(sub);

            var sut = new AddPaymentCommandHandler(repo, subRepository);
            await sut.Handle(new AddPaymentCommand
            {
                AggregateId = creditCard.Id,
                Payment     = new Payment(PaymentId.NewId(), Money.CreateAUD(200), DateTimeOffset.Now)
            }, CancellationToken.None);

            A.CallTo(() => subRepository.GetByIdAsync(subId))
            .MustHaveHappenedOnceExactly();

            A.CallTo(() => repo.SaveAsync(A <CreditCard> ._, A <long> ._))
            .MustHaveHappenedOnceExactly();
        }
Exemplo n.º 2
0
        private static CreditCardSubscription CreateGold()
        {
            var gold = new CreditCardSubscription(
                new CreditCardSubscriptionId(GoldId), DateTimeOffset.Now,
                new CreditCardSubscriptionName("Gold"));

            gold.UseNoPaymentFee(DateTimeOffset.Now);
            return(gold);
        }
Exemplo n.º 3
0
        private static CreditCardSubscription CreateBronze()
        {
            var bronze = new CreditCardSubscription(
                new CreditCardSubscriptionId(BronzeId), DateTimeOffset.Now,
                new CreditCardSubscriptionName("Bronze"));

            bronze.UseFixedPaymentFee(DateTimeOffset.Now, Money.CreateAUD(1.25m));
            return(bronze);
        }
Exemplo n.º 4
0
        private static CreditCardSubscription CreateSilver()
        {
            var silver = new CreditCardSubscription(
                new CreditCardSubscriptionId(SilverId), DateTimeOffset.Now,
                new CreditCardSubscriptionName("Silver"));

            silver.UseRatePaymentFee(DateTimeOffset.Now, Rate.Create(0.02m));
            return(silver);
        }