示例#1
0
        public void ShouldFilterTheBillsForTheGivenUser()
        {
            var billContext         = MockRepository.GenerateMock <IBillContext>();
            var now                 = DateTime.Now;
            var billModelForUser102 = new BillModel {
                UserId = 102, Id = 2, StartFrom = now.AddYears(-13), Repeat = new Repetition {
                    RecurrenceNumber = 1, RecurrenceUnit = "Year"
                }
            };
            var bills = new InMemoryDbSet <BillModel>
            {
                new BillModel {
                    UserId = 101, Id = 1, StartFrom = now.AddYears(-10), Repeat = new Repetition {
                        RecurrenceNumber = 1, RecurrenceUnit = "Year"
                    }
                },
                billModelForUser102,
                new BillModel {
                    UserId = 103, Id = 3, StartFrom = now.AddYears(-12), Repeat = new Repetition {
                        RecurrenceNumber = 1, RecurrenceUnit = "Year"
                    }
                },
            };

            billContext.Stub(c => c.Bills).Return(bills);

            var scheduleFilters        = MockRepository.GenerateMock <IScheduleFilters>();
            var paymentScheduleService = new PaymentScheduleService(billContext, scheduleFilters);

            var scheduleRequest = new ScheduleRequest
            {
                StartDate = DateTime.Now.AddDays(-10),
                EndDate   = DateTime.Now.AddDays(10),
                UserId    = 102
            };

            var filteredBills = new List <BillModel> {
                billModelForUser102
            };

            scheduleFilters.Stub(f => f.Filter(
                                     Arg <IEnumerable <BillModel> > .Matches(b => b.MatchesAll(m => m.UserId == 102)), Arg <ScheduleRequest> .Is.Equal(scheduleRequest))).Return(filteredBills);

            var summaryOfDues = paymentScheduleService.GetSummaryOfDues(scheduleRequest);

            Assert.That(summaryOfDues.Bills, Is.EqualTo(filteredBills));
        }
示例#2
0
        public void ShouldFilterRelevantBills()
        {
            var billContext = MockRepository.GenerateMock <IBillContext>();

            var scheduleFilters = MockRepository.GenerateMock <IScheduleFilters>();


            var billModel1 = new BillModel {
                UserId = 101, Id = 1
            };
            var billModel2 = new BillModel {
                UserId = 101, Id = 2
            };
            var billModel3 = new BillModel {
                UserId = 101, Id = 3
            };
            var bills = new InMemoryDbSet <BillModel>
            {
                billModel1,
                billModel2,
                billModel3,
            };
            var scheduleRequest = new ScheduleRequest
            {
                StartDate = DateTime.Now.AddDays(-10),
                EndDate   = DateTime.Now.AddDays(10),
                UserId    = 101
            };

            billContext.Stub(c => c.Bills).Return(bills);
            var filteredBills = new List <BillModel> {
                billModel1, billModel3
            };

            scheduleFilters.Stub(f => f.Filter(Arg <IEnumerable <BillModel> > .Matches(b => bills.ContainsAll(b)), Arg <ScheduleRequest> .Is.Equal(scheduleRequest)))
            .Return(filteredBills);

            var paymentScheduleService = new PaymentScheduleService(billContext, scheduleFilters);


            var summaryOfDues = paymentScheduleService.GetSummaryOfDues(scheduleRequest);

            Assert.That(summaryOfDues.Bills, Is.EqualTo(filteredBills));
        }
示例#3
0
        public PaymentScheduleServiceTests()
        {
            settings          = new PaySimpleSettings("1234567890", "UnitTests", "https://unittests.paysimple.com");
            validationService = new Mock <IValidationService>();
            webServiceRequest = new Mock <IWebServiceRequest>();
            accountService    = new Mock <IAccountService>();
            customerService   = new Mock <ICustomerService>();
            serviceFactory    = new Mock <IServiceFactory>();

            accountService.Setup(m => m.CreateAchAccountAsync(It.IsAny <Ach>())).ReturnsAsync(new Ach {
                Id = 1
            });
            accountService.Setup(m => m.CreateCreditCardAccountAsync(It.IsAny <CreditCard>())).ReturnsAsync(new CreditCard {
                Id = 1
            });
            customerService.Setup(m => m.CreateCustomerAsync(It.IsAny <Customer>())).ReturnsAsync(new Customer {
                Id = 1
            });
            serviceFactory.Setup(m => m.GetAccountService()).Returns(accountService.Object);
            serviceFactory.Setup(m => m.GetCustomerService()).Returns(customerService.Object);

            service = new PaymentScheduleService(settings, validationService.Object, webServiceRequest.Object, serviceFactory.Object);
        }