public async Task <Guid> Handle(BuySubscriptionRenewalCommand command, CancellationToken cancellationToken) { var priceList = await PriceListProvider.GetPriceList(_sqlConnectionFactory.GetOpenConnection()); var subscriptionId = new SubscriptionId(command.SubscriptionId); var subscription = await _aggregateStore.Load(new SubscriptionId(command.SubscriptionId)); if (subscription == null) { throw new InvalidCommandException(new List <string> { "Subscription for renewal must exist." }); } var subscriptionRenewalPayment = SubscriptionRenewalPayment.Buy( _payerContext.PayerId, subscriptionId, SubscriptionPeriod.Of(command.SubscriptionTypeCode), command.CountryCode, MoneyValue.Of(command.Value, command.Currency), priceList); _aggregateStore.AppendChanges(subscriptionRenewalPayment); return(subscriptionRenewalPayment.Id); }
public void BuySubscriptionRenewal_WhenPriceDoesNotExist_IsNotPossible() { // Arrange var subscriptionRenewalPaymentTestData = CreateSubscriptionRenewalPaymentTestData(); // Act & Assert AssertBrokenRule <PriceOfferMustMatchPriceInPriceListRule>(() => { SubscriptionRenewalPayment.Buy( subscriptionRenewalPaymentTestData.PayerId, subscriptionRenewalPaymentTestData.SubscriptionId, SubscriptionPeriod.Month, "PL", MoneyValue.Of(50, "PLN"), subscriptionRenewalPaymentTestData.PriceList); }); }
public void BuySubscriptionRenewal_IsSuccessful() { // Arrange var subscriptionRenewalPaymentTestData = CreateSubscriptionRenewalPaymentTestData(); // Act var subscriptionRenewalPayment = SubscriptionRenewalPayment.Buy( subscriptionRenewalPaymentTestData.PayerId, subscriptionRenewalPaymentTestData.SubscriptionId, SubscriptionPeriod.Month, "PL", MoneyValue.Of(60, "PLN"), subscriptionRenewalPaymentTestData.PriceList); // Assert AssertPublishedDomainEvent <SubscriptionRenewalPaymentCreatedDomainEvent>(subscriptionRenewalPayment); }