public async Task BuySubscription_Test() { await PriceListHelper.AddPriceListItems(PaymentsModule); var subscriptionPaymentId = await PaymentsModule.ExecuteCommandAsync( new BuySubscriptionCommand( SubscriptionPeriod.Month.Code, "PL", 60, "PLN")); var subscriptionPayments = await GetEventually( new GetSubscriptionPaymentsProbe( PaymentsModule, ExecutionContext.UserId, x => true), 10000); var subscriptionPayment = subscriptionPayments.Single(x => x.PaymentId == subscriptionPaymentId); Assert.That(subscriptionPayment.Status, Is.EqualTo(SubscriptionPaymentStatus.WaitingForPayment.Code)); await PaymentsModule.ExecuteCommandAsync( new MarkSubscriptionPaymentAsPaidCommand(subscriptionPaymentId)); var subscription = await GetEventually( new GetPayerSubscriptionProbe( PaymentsModule, ExecutionContext.UserId), 10000); Assert.That(subscription.Period, Is.EqualTo(SubscriptionPeriod.Month.Code)); Assert.That(subscription.Status, Is.EqualTo(SubscriptionStatus.Active.Code)); }
public async Task SubscriptionPayment_Expiration_Test() { SystemClock.Set(new DateTime(2020, 6, 15, 10, 0, 0)); await PriceListHelper.AddPriceListItems(PaymentsModule); await PaymentsModule.ExecuteCommandAsync( new BuySubscriptionCommand( "Month", "PL", 60, "PLN")); var subscriptionPayments = await GetEventually( new GetSubscriptionPaymentsProbe( PaymentsModule, ExecutionContext.UserId, x => true), 10000); Assert.That(subscriptionPayments[0].Status, Is.EqualTo(SubscriptionPaymentStatus.WaitingForPayment.Code)); SystemClock.Set(new DateTime(2020, 6, 15, 10, 21, 0)); await PaymentsModule.ExecuteCommandAsync( new ExpireSubscriptionPaymentsCommand()); await GetEventually( new GetSubscriptionPaymentsProbe( PaymentsModule, ExecutionContext.UserId, x => x.Any(y => y.Status == SubscriptionPaymentStatus.Expired.Code)), 10000); }
public async Task Subscription_Buy_ThenRenew_ThenExpire_Test() { await PriceListHelper.AddPriceListItems(PaymentsModule); DateTime referenceDate = new DateTime(2020, 6, 15); SystemClock.Set(referenceDate); var subscriptionPaymentId = await PaymentsModule.ExecuteCommandAsync( new BuySubscriptionCommand( "Month", "PL", 60, "PLN")); var subscriptionPayments = await GetEventually( new GetSubscriptionPaymentsProbe(PaymentsModule, ExecutionContext.UserId, x => true), 10000); var subscriptionPayment = subscriptionPayments.Single(x => x.PaymentId == subscriptionPaymentId); Assert.That(subscriptionPayment.Status, Is.EqualTo(SubscriptionPaymentStatus.WaitingForPayment.Code)); await PaymentsModule.ExecuteCommandAsync( new MarkSubscriptionPaymentAsPaidCommand(subscriptionPaymentId)); subscriptionPayments = await GetEventually( new GetSubscriptionPaymentsProbe(PaymentsModule, ExecutionContext.UserId, x => x.Any(y => y.Status == SubscriptionPaymentStatus.Paid.Code && y.SubscriptionId.HasValue)), 10000); subscriptionPayment = subscriptionPayments.Single(x => x.PaymentId == subscriptionPaymentId); var subscriptionId = subscriptionPayment.SubscriptionId.GetValueOrDefault(); var subscription = await GetEventually( new GetSubscriptionDetailsProbe( PaymentsModule, subscriptionId, x => x.SubscriptionId == subscriptionId && x.Status == SubscriptionStatus.Active.Code && x.Period == SubscriptionPeriod.Month.Code), 5000); Assert.That(subscriptionPayments[0].Status, Is.EqualTo(SubscriptionPaymentStatus.Paid.Code)); Assert.That(subscription.ExpirationDate, Is.EqualTo(referenceDate.AddMonths(1))); var subscriptionRenewalPaymentId = await PaymentsModule.ExecuteCommandAsync( new BuySubscriptionRenewalCommand( subscriptionId, "HalfYear", "PL", 320, "PLN")); subscriptionPayments = await GetEventually( new GetSubscriptionPaymentsProbe(PaymentsModule, ExecutionContext.UserId, x => true), 10000); var renewalPayment = subscriptionPayments .Single(x => x.PaymentId == subscriptionRenewalPaymentId); Assert.That(renewalPayment.Status, Is.EqualTo(SubscriptionRenewalPaymentStatus.WaitingForPayment.Code)); await PaymentsModule.ExecuteCommandAsync( new MarkSubscriptionRenewalPaymentAsPaidCommand(subscriptionRenewalPaymentId)); subscriptionPayments = await GetEventually( new GetSubscriptionPaymentsProbe(PaymentsModule, ExecutionContext.UserId, x => x.Any(y => y.PaymentId == subscriptionRenewalPaymentId)), 10000); renewalPayment = subscriptionPayments .Single(x => x.PaymentId == subscriptionRenewalPaymentId); subscription = await GetEventually( new GetSubscriptionDetailsProbe( PaymentsModule, subscriptionId, x => x.SubscriptionId == subscriptionId && x.Period == SubscriptionPeriod.GetName(SubscriptionPeriod.HalfYear.Code) && x.Status == SubscriptionStatus.Active.Code ), 5000); Assert.That(renewalPayment.Status, Is.EqualTo(SubscriptionRenewalPaymentStatus.Paid.Code)); Assert.That(subscription.ExpirationDate, Is.EqualTo(referenceDate.AddMonths(7))); SystemClock.Set(referenceDate.AddMonths(7).AddDays(1)); await PaymentsModule.ExecuteCommandAsync(new ExpireSubscriptionsCommand()); subscription = await GetEventually( new GetSubscriptionDetailsProbe( PaymentsModule, subscriptionId, x => x.SubscriptionId == subscriptionId && x.Status == SubscriptionStatus.Expired.Code), 10000); Assert.That(subscription, Is.Not.Null); }