예제 #1
0
        public void WhenSilverCustomerHasOrdersWithin30DaysWithAValueOfOver600ThenHeIsQualified()
        {
            var customer = GetCustomer("Silver",
                                       1,
                                       new List <Order>()
            {
                GetOrder(DateTime.UtcNow, 700),
            });

            var statusRepo = new CustomerStatusLevelRepository();

            var nextLevel = statusRepo.GetNextLevel(customer.Status.Level);

            var isQualified = customer.IsQualifiedForNextLevel(nextLevel, 7);

            Assert.IsTrue(isQualified);
        }
예제 #2
0
        public void WhenSilverCustomerHasOrdersWithin30DaysWithAValueOfOver2000ThenHeIsNotQualifiedForPlatinum()
        {
            var customer = GetCustomer("Silver",
                                       1,
                                       new List <Order>()
            {
                GetOrder(DateTime.UtcNow, 2000),
            });

            var statusRepo = new CustomerStatusLevelRepository();

            var platinumLevel = statusRepo.GetNextLevel(customer.Status.Level + 1);

            var isQualified = customer.IsQualifiedForNextLevel(platinumLevel, 7);

            Assert.IsFalse(isQualified);
        }
예제 #3
0
        public void WhenGoldCustomerHasOrdersWithin30DaysWithAValueLessThan1000ThenHeIsNotQualified()
        {
            var customer = GetCustomer("Gold",
                                       2,
                                       new List <Order>()
            {
                GetOrder(DateTime.UtcNow, 700),
            }, DateTime.UtcNow.AddDays(-1));

            var statusRepo = new CustomerStatusLevelRepository();

            var nextLevel = statusRepo.GetNextLevel(customer.Status.Level);

            var isQualified = customer.IsQualifiedForNextLevel(nextLevel, 7);

            Assert.IsFalse(isQualified);
        }
예제 #4
0
        public void WhenRegularCustomerHasNoPriorHistoryThenNotQualified()
        {
            var customer = GetCustomer("Regular",
                                       0,
                                       new List <Order>()
            {
                GetOrder(DateTime.UtcNow, 299)
            });

            var statusRepo = new CustomerStatusLevelRepository();

            var nextLevel = statusRepo.GetNextLevel(customer.Status.Level);

            var isQualified = customer.IsQualifiedForNextLevel(nextLevel, 7);

            Assert.IsFalse(isQualified);
        }
예제 #5
0
        public void WhenSilverCustomerWasLastBumpedLessThanSevenDaysAgoHeDoesNotQualify()
        {
            var customer = GetCustomer("Silver",
                                       1,
                                       new List <Order>()
            {
                GetOrder(DateTime.UtcNow, 700),
            }, DateTime.UtcNow.AddDays(-1));

            var statusRepo = new CustomerStatusLevelRepository();

            var nextLevel = statusRepo.GetNextLevel(customer.Status.Level);

            var isQualified = customer.IsQualifiedForNextLevel(nextLevel, 7);

            Assert.IsFalse(isQualified);
        }
예제 #6
0
        public void WhenRegularCustomerHasTwoOrdersWithMoreThan30DaysThenHeIsNotQualified()
        {
            var customer = GetCustomer("Regular",
                                       0,
                                       new List <Order>()
            {
                GetOrder(DateTime.UtcNow, 30),
                GetOrder(DateTime.UtcNow.AddDays(-40), 100)
            });

            var statusRepo = new CustomerStatusLevelRepository();

            var nextLevel = statusRepo.GetNextLevel(customer.Status.Level);

            var isQualified = customer.IsQualifiedForNextLevel(nextLevel, 7);

            Assert.IsFalse(isQualified);
        }