public async Task ShouldReturnSpentSumOfSubscriptedProductsBetweenDates_WhenSubscrsiptionIntervalIsEveryMonthAt5And8DaysOfMonth() { var today = DateTime.Today; var sumOfProductsInSubscription = 10; var subscriptionDates = new List <SubscriptionDate> { new SubscriptionDate { Date = today.AddYears(-1), Type = SubscriptionDateType.Start }, new SubscriptionDate { Date = today, Type = SubscriptionDateType.Suspend } }; var countOfMonths = 12; var frequencyInMonth = 2; var deliveryInterval = new DeliveryInterval { CronString = "0 0 0 8,5 12/1 *" }; SetupMocks(subscriptionDates, deliveryInterval); var criterion = new CalculateSpentAmountCriterion(today, sumOfProductsInSubscription); var query = new CalculateSpentAmountQuery(_queryBuilderMock.Object); var queryResult = await query.AskAsync(criterion); Assert.AreEqual(queryResult, sumOfProductsInSubscription * countOfMonths * frequencyInMonth); }
public async Task ShouldReturn0_WhenSubscriptionDatesAreNotExist() { SetupMocks(new List <SubscriptionDate>()); var criterion = new CalculateSpentAmountCriterion(DateTime.Today, 0); var query = new CalculateSpentAmountQuery(_queryBuilderMock.Object); var queryResult = await query.AskAsync(criterion); Assert.AreEqual(queryResult, 0); }
public async Task ShouldReturn0_WhenFirstSubscriptionDateIsTheSameAsToday() { var today = DateTime.Today; var subscriptionDates = new List <SubscriptionDate> { new SubscriptionDate { Date = today, Type = SubscriptionDateType.Start } }; SetupMocks(subscriptionDates); var criterion = new CalculateSpentAmountCriterion(today, 0); var query = new CalculateSpentAmountQuery(_queryBuilderMock.Object); var queryResult = await query.AskAsync(criterion); Assert.AreEqual(queryResult, 0); }