예제 #1
0
        public async Task AllNotPaid_ShouldReturn_AllConsumablesThatAreNotPaid_IfSuchExist()
        {
            var db              = GetDatabase();
            var mapper          = GetMapper();
            var firstConsumable = new MonthlyPaymentConsumable {
                Id = 1, PaymentId = null, DeadLine = new DateTime(2018, 12, 12)
            };
            var secndConsumable = new MonthlyPaymentConsumable {
                Id = 2, PaymentId = null, DeadLine = new DateTime(2018, 11, 12)
            };
            var thirdConsumable = new MonthlyPaymentConsumable {
                Id = 3, PaymentId = 2, DeadLine = new DateTime(2018, 11, 12)
            };
            var forthConsumable = new MonthlyPaymentConsumable {
                Id = 4, PaymentId = null, DeadLine = new DateTime(2018, 12, 15)
            };
            await db.MonthlyPaymentConsumables.AddRangeAsync(firstConsumable, secndConsumable, thirdConsumable, forthConsumable);

            await db.SaveChangesAsync();

            var consumableService = new MonthlyConsumablesService(mapper, db);
            //Act
            var result = await consumableService.AllNotPaidAsync();

            //Assert
            result
            .Should()
            .HaveCount(3)
            .And
            .Match(x => x.ElementAt(0).Id == 4 &&
                   x.ElementAt(1).Id == 1);
        }
예제 #2
0
        public async Task EditAsync_ShouldReturn_True_IfEntryExist()
        {
            var db                = GetDatabase();
            var mapper            = GetMapper();
            var monthlyConsumable = new MonthlyPaymentConsumable
            {
                Id                    = 1,
                DeadLine              = new DateTime(2018, 12, 12),
                ElectricityDay        = 1,
                ElectricityNight      = 2,
                ElectricityPeak       = 3,
                PaymentForElectricity = 4,
                PaymentForWater       = 5,
                WaterReport           = 6
            };
            await db.MonthlyPaymentConsumables.AddAsync(monthlyConsumable);

            await db.SaveChangesAsync();

            var consumabelService = new MonthlyConsumablesService(mapper, db);

            var consumableEditInput = new EditMontlyConsumablesModel
            {
                DeadLine              = new DateTime(2018, 12, 24),
                ElectricityDay        = 7,
                ElectricityNight      = 8,
                ElectricityPeak       = 9,
                PaymentForElectricity = 10,
                PaymentForWater       = 11,
                WaterReport           = 12,
                Id = 1
            };
            //Act
            var result = await consumabelService.EditAsync(consumableEditInput);

            var createdConsumable = await db.MonthlyPaymentConsumables
                                    .FirstOrDefaultAsync(x => x.Id == 1);

            //Assert
            result
            .Should()
            .BeTrue();

            createdConsumable
            .Should()
            .Match <MonthlyPaymentConsumable>(x =>
                                              x.DeadLine == new DateTime(2018, 12, 24) &&
                                              x.ElectricityDay == 7 &&
                                              x.ElectricityNight == 8 &&
                                              x.ElectricityPeak == 9 &&
                                              x.PaymentForElectricity == 10 &&
                                              x.PaymentForWater == 11 &&
                                              x.WaterReport == 12);
        }
예제 #3
0
        public async Task MakeConsumablesPaymentAsync_ShouldReturn_True_WhenInputIsCorrect()
        {
            var db     = GetDatabase();
            var mapper = GetMapper();

            var firstMonthConsumable = new MonthlyPaymentConsumable
            {
                Id = 1,
                PaymentForWater       = 100,
                PaymentForElectricity = 200
            };
            var secondMonthConsumable = new MonthlyPaymentConsumable
            {
                Id = 2,
                PaymentForWater       = 200,
                PaymentForElectricity = 300
            };
            var thirdMonthConsumable = new MonthlyPaymentConsumable
            {
                Id = 3,
                PaymentForWater       = 400,
                PaymentForElectricity = 500
            };

            await db.MonthlyPaymentConsumables.AddRangeAsync(firstMonthConsumable, secondMonthConsumable, thirdMonthConsumable);

            var user = new User
            {
                Id = "007"
            };
            await db.Users.AddAsync(user);

            await db.SaveChangesAsync();


            var paymentService = new PaymentsService(mapper, db, null);
            //Act
            var result = await paymentService.MakeConsumablesPaymentAsync(2, true, new DateTime(2018, 12, 12), "007");

            var payment = await db.Payments
                          .FirstOrDefaultAsync(x => x.MonthlyPaymentConsumableId == 2);

            //Assert
            result
            .Should()
            .BeTrue();
            payment
            .Should()
            .Match <Payment>(x => x.CashPayment == true &&
                             x.UserId == "007" &&
                             x.Amount == 500);
        }
예제 #4
0
        public async Task MakeConsumablesPaymentAsync_ShouldReturn_False_IfUsrerDoNotExist()
        {
            var db     = GetDatabase();
            var mapper = GetMapper();

            var firstMonthConsumable = new MonthlyPaymentConsumable
            {
                Id = 1,
                PaymentForWater       = 100,
                PaymentForElectricity = 200
            };
            var secondMonthConsumable = new MonthlyPaymentConsumable
            {
                Id = 2,
                PaymentForWater       = 200,
                PaymentForElectricity = 300
            };
            var thirdMonthConsumable = new MonthlyPaymentConsumable
            {
                Id = 3,
                PaymentForWater       = 400,
                PaymentForElectricity = 500
            };

            await db.MonthlyPaymentConsumables.AddRangeAsync(firstMonthConsumable, secondMonthConsumable, thirdMonthConsumable);

            var user = new User
            {
                Id = "007"
            };
            await db.Users.AddAsync(user);

            await db.SaveChangesAsync();


            var paymentService = new PaymentsService(mapper, db, null);
            //Act
            var result = await paymentService.MakeConsumablesPaymentAsync(2, true, new DateTime(2018, 12, 12), "069");

            var payment = await db.Payments
                          .FirstOrDefaultAsync(x => x.MonthlyPaymentConsumableId == 2);

            //Assert
            result
            .Should()
            .BeFalse();
            payment
            .Should()
            .BeNull();
        }
예제 #5
0
        public async Task GetByIdAsync_ShouldReturn_Entity_IfExistInDb()
        {
            var db     = GetDatabase();
            var mapper = GetMapper();
            var firstMonthlyConsumable = new MonthlyPaymentConsumable
            {
                Id                    = 1,
                DeadLine              = new DateTime(2018, 12, 12),
                ElectricityDay        = 1,
                ElectricityNight      = 2,
                ElectricityPeak       = 3,
                PaymentForElectricity = 4,
                PaymentForWater       = 5,
                WaterReport           = 6
            };
            var secondMonthlyConsumable = new MonthlyPaymentConsumable
            {
                Id                    = 2,
                DeadLine              = new DateTime(2018, 12, 24),
                ElectricityDay        = 7,
                ElectricityNight      = 8,
                ElectricityPeak       = 9,
                PaymentForElectricity = 10,
                PaymentForWater       = 11,
                WaterReport           = 12
            };
            await db.MonthlyPaymentConsumables.AddRangeAsync(firstMonthlyConsumable, secondMonthlyConsumable);

            await db.SaveChangesAsync();

            var consumabelService = new MonthlyConsumablesService(mapper, db);
            //Act
            var result = await consumabelService.GetByIdAsync(2);

            //Assert
            result
            .Should()
            .BeOfType <MonthlyConsumablesViewModel>()
            .And
            .Match <MonthlyConsumablesViewModel>(x =>
                                                 x.DeadLine == new DateTime(2018, 12, 24) &&
                                                 x.ElectricityDay == 7 &&
                                                 x.ElectricityNight == 8 &&
                                                 x.ElectricityPeak == 9 &&
                                                 x.PaymentForElectricity == 10 &&
                                                 x.PaymentForWater == 11 &&
                                                 x.WaterReport == 12);
        }
예제 #6
0
        public async Task TerminateAsync_ShouldReturn_True_IfEntityExistInDb()
        {
            var db     = GetDatabase();
            var mapper = GetMapper();
            var firstMonthlyConsumable = new MonthlyPaymentConsumable
            {
                Id                    = 1,
                DeadLine              = new DateTime(2018, 12, 12),
                ElectricityDay        = 1,
                ElectricityNight      = 2,
                ElectricityPeak       = 3,
                PaymentForElectricity = 4,
                PaymentForWater       = 5,
                WaterReport           = 6
            };
            var secondMonthlyConsumable = new MonthlyPaymentConsumable
            {
                Id                    = 2,
                DeadLine              = new DateTime(2018, 12, 24),
                ElectricityDay        = 7,
                ElectricityNight      = 8,
                ElectricityPeak       = 9,
                PaymentForElectricity = 10,
                PaymentForWater       = 11,
                WaterReport           = 12
            };
            await db.MonthlyPaymentConsumables.AddRangeAsync(firstMonthlyConsumable, secondMonthlyConsumable);

            await db.SaveChangesAsync();

            var consumabelService = new MonthlyConsumablesService(mapper, db);
            //Act
            var result = await consumabelService.TerminateAsync(2);

            var terminatedEntity = await db.MonthlyPaymentRents.FindAsync(2);

            //Assert
            result
            .Should()
            .BeTrue();
            terminatedEntity
            .Should()
            .BeNull();
        }
예제 #7
0
        public async Task AllOverduConsumablesAsync_ShouldReturn_CollectionWithPendigPayments_IfSuchExistInDb()
        {
            var db     = GetDatabase();
            var mapper = GetMapper();
            var firstMonthlyConsumable = new MonthlyPaymentConsumable
            {
                Id       = 1,
                DeadLine = new DateTime(2016, 12, 12),
                PaymentForElectricity = 4,
                PaymentForWater       = 5,
            };
            var secondMonthlyConsumable = new MonthlyPaymentConsumable
            {
                Id       = 2,
                DeadLine = new DateTime(2017, 12, 24),
                PaymentForElectricity = 10,
                PaymentForWater       = 11,
            };
            var thirdMonthlyConsumable = new MonthlyPaymentConsumable
            {
                Id       = 3,
                DeadLine = new DateTime(2050, 12, 24),
                PaymentForElectricity = 14,
                PaymentForWater       = 17,
            };
            await db.MonthlyPaymentConsumables.AddRangeAsync(firstMonthlyConsumable, secondMonthlyConsumable, thirdMonthlyConsumable);

            await db.SaveChangesAsync();

            var consumabelService = new MonthlyConsumablesService(mapper, db);
            //Act
            var result = await consumabelService.AllOverduConsumablesAsync();

            //Assert
            result
            .Should()
            .HaveCount(2)
            .And
            .BeOfType <List <OverdueMonthlyConsumablesListingModel> >()
            .And
            .Match(x => x.ElementAt(0).PaymentForElectricity == 4 &&
                   x.ElementAt(1).PaymentForWater == 11);
        }
예제 #8
0
        public async Task FilterConsumablesAsync_ShouldReturn_CorrectQueryResult_DependingOnInput()
        {
            var db     = GetDatabase();
            var mapper = GetMapper();

            var firstMonthConsumable = new MonthlyPaymentConsumable
            {
                Id            = 1,
                RentAgreement = new RentAgreement
                {
                    Id       = 1,
                    ClientId = 1
                }
            };
            var secondMonthConsumable = new MonthlyPaymentConsumable
            {
                Id            = 2,
                RentAgreement = new RentAgreement
                {
                    Id       = 1,
                    ClientId = 1
                }
            };
            var thirdMonthConsumable = new MonthlyPaymentConsumable
            {
                Id            = 3,
                RentAgreement = new RentAgreement
                {
                    Id       = 2,
                    ClientId = 2
                }
            };
            var forthMonthConsumable = new MonthlyPaymentConsumable
            {
                Id            = 4,
                RentAgreement = new RentAgreement
                {
                    Id       = 1,
                    ClientId = 1
                }
            };
            await db.MonthlyPaymentConsumables.AddRangeAsync(firstMonthConsumable, secondMonthConsumable, thirdMonthConsumable, forthMonthConsumable);

            var firstPayment = new Payment
            {
                Id          = 1,
                PaidOn      = new DateTime(2018, 12, 12),
                Amount      = 10,
                CashPayment = false,
                MonthlyPaymentConsumableId = 1,
            };
            var secndPayment = new Payment
            {
                Id          = 2,
                PaidOn      = new DateTime(2017, 11, 6),
                Amount      = 20,
                CashPayment = true,
                MonthlyPaymentConsumableId = 2,
            };
            var thirdPayment = new Payment
            {
                Id          = 3,
                PaidOn      = new DateTime(2015, 11, 12),
                Amount      = 30,
                CashPayment = false,
                MonthlyPaymentConsumableId = 3
            };
            var forthPayment = new Payment
            {
                Id          = 4,
                PaidOn      = new DateTime(2015, 12, 15),
                Amount      = 40,
                CashPayment = false,
                MonthlyPaymentConsumableId = 4
            };
            var fifthPayment = new Payment
            {
                Id     = 5,
                PaidOn = new DateTime(2017, 12, 15),
                Amount = 50,
                MonthlyPaymentConsumableId = null,
                CashPayment = false
            };
            await db.Payments.AddRangeAsync(firstPayment, secndPayment, thirdPayment, forthPayment, fifthPayment);

            await db.SaveChangesAsync();

            var filterModel = new FilterConsumablesBindingModel
            {
                Client    = 1,
                OnlyCash  = true,
                StartDate = new DateTime(2017, 1, 1),
                EndDate   = new DateTime(2018, 12, 30)
            };
            var paymentService = new PaymentsService(mapper, db, null);
            //Act
            var result = await paymentService.FilterConsumablesAsync(filterModel);

            //Assert
            result
            .Should()
            .BeOfType <FilterConsumablesViewModel>()
            .And
            .Match <FilterConsumablesViewModel>(x => x.TotalIncome == 20 &&
                                                x.Payments.Any(y => y.PaidOn == new DateTime(2017, 11, 6)));
        }