public UnitTest1() { IServiceCollection services = new ServiceCollection(); services.AddApplicationServices(); services.AddTransient <AssignmentController>(); services.AddTransient <InvoiceController>(); services.AddTransient <EmployeeController>(); services.AddTransient <CustomerController>(); services.AddTransient <PaymentController>(); services.AddTransient <PayoutController>(); _autofacContainer = services.AddAutofacContainer(); _serviceProvider = new AutofacServiceProvider(_autofacContainer); _queryProcessor = _serviceProvider.GetService <IQueryProcessor>(); _assignmentService = _serviceProvider.GetService <IAssignmentService>(); _paymentService = _serviceProvider.GetService <IPaymentService>(); _assignmentController = _serviceProvider.GetService <AssignmentController>(); _invoiceController = _serviceProvider.GetService <InvoiceController>(); _employeeController = _serviceProvider.GetService <EmployeeController>(); _customerController = _serviceProvider.GetService <CustomerController>(); _paymentController = _serviceProvider.GetService <PaymentController>(); _payoutController = _serviceProvider.GetService <PayoutController>(); }
public void Index_GetRedirectToRouteResult_IfDropdownNotCached() { // Arrange var controller = new PayoutController(null); // Act var result = controller.Index() as RedirectToRouteResult; // Assert Assert.IsNotNull(result); Assert.AreEqual("~/Error/PageErrorFound/?msg=Dropdown was not populated, click on 'Return Back'", result.RouteName); }
public void CalculatePayout_GetIndexView_IfHoursViewModelIsNull() { // Arrange var controller = new PayoutController(null); // Act var result = controller.CalculatePayout(null) as ViewResult; // Assert Assert.IsNotNull(result); Assert.AreEqual("Index", result.ViewName); }
public void Index_GetView_IfDropdownIsCached() { var countofHoursInCachedDropdown = 13; var defaultSelectedValue = -1; // Arrange HoursDropdownMapper.CacheHoursDropdown(); var cacheService = IocContainer.Resolve <ICacheService>(); var controller = new PayoutController(cacheService); // Act var result = controller.Index() as ViewResult; // Assert Assert.IsNotNull(result); Assert.AreEqual(countofHoursInCachedDropdown, ((HoursViewModel)result.Model)?.StartTimeHours.Count()); Assert.AreEqual(countofHoursInCachedDropdown, ((HoursViewModel)result.Model)?.BedTimeHours.Count()); Assert.AreEqual(countofHoursInCachedDropdown, ((HoursViewModel)result.Model)?.EndTimeHours.Count()); Assert.AreEqual(defaultSelectedValue, ((HoursViewModel)result.Model)?.SelectedStartTimeHours); Assert.AreEqual(defaultSelectedValue, ((HoursViewModel)result.Model)?.SelectedBedTimeHours); Assert.AreEqual(defaultSelectedValue, ((HoursViewModel)result.Model)?.SelectedEndTimeHours); Assert.IsNotNull(result); }
public void CalculatePayout_GetJsonErrorMessage_IfHoursViewModelIsNotValid() { // Arrange #region Prerequisites For Test //start time can be the same as bed time //end time must be > then start time and bed time, since we do not pay franctional pay, so babysitter must be paid at least 1 hour //gets paid $12/hour from start-time to bedtime //gets paid $8 / hour from bedtime to midnight //gets paid $16 / hour from midnight to end of job //mapping //Time hours //5PM 0 //6PM 1 //7PM 2 //8PM 3 //9PM 4 //10PM 5 //11PM 6 //12AM 7 //1AM 8 //2AM 9 //3AM 10 //4AM 11 #endregion var controller = new PayoutController(null); var listOfHoursViewModels = new List <HoursViewModel> { new HoursViewModel(), //HoursViewModel is null new HoursViewModel { SelectedStartTimeHours = 0, //5pm bedtime is also astart time SelectedBedTimeHours = 0, //5pm SelectedEndTimeHours = 0 //5pm must be paid at least 1 hour }, new HoursViewModel { // start time after bed time SelectedStartTimeHours = 5, SelectedBedTimeHours = 4, SelectedEndTimeHours = 10 }, new HoursViewModel { // start time after end time SelectedStartTimeHours = 7, SelectedBedTimeHours = 4, SelectedEndTimeHours = 5 }, new HoursViewModel { // bed time before start time SelectedStartTimeHours = 8, SelectedBedTimeHours = 7, SelectedEndTimeHours = 10 }, new HoursViewModel { // end time before start time SelectedStartTimeHours = 8, SelectedBedTimeHours = 10, SelectedEndTimeHours = 6 }, new HoursViewModel { // end time before bed time SelectedStartTimeHours = 8, SelectedBedTimeHours = 10, SelectedEndTimeHours = 9 }, }; // Act listOfHoursViewModels.ForEach(hModel => { var result = controller.CalculatePayout(hModel) as JsonResult; // Assert Assert.AreEqual("Selected Hours are not valid", ((HoursViewModel)result?.Data)?.ErrorMessage); }); }
public void CalculatePayout_GetViewPayoutTotal_IfHoursViewModelIsValid() { // Arrange var controller = new PayoutController(null); var listOfHoursViewModels = new List <Dictionary <HoursViewModel, double> > { new Dictionary <HoursViewModel, double> { { new HoursViewModel { SelectedStartTimeHours = 7, //12am SelectedBedTimeHours = 7, //12am SelectedEndTimeHours = 11 //4am }, 64.00 //4*16 = 64 } }, new Dictionary <HoursViewModel, double> { { new HoursViewModel { SelectedStartTimeHours = 7, //12am all hours over midnight SelectedBedTimeHours = 8, //1am SelectedEndTimeHours = 9 //2am }, 32.00 //2*16 = 32 } }, new Dictionary <HoursViewModel, double> { { new HoursViewModel { SelectedStartTimeHours = 2, //7pm SelectedBedTimeHours = 2, //7pm SelectedEndTimeHours = 7 //12am edge case }, 40.00 //Expected Result 5*8=40 } }, new Dictionary <HoursViewModel, double> { { new HoursViewModel { SelectedStartTimeHours = 0, //5pm SelectedBedTimeHours = 0, //5pm SelectedEndTimeHours = 6 //11pm }, 48.00 //Expected Result (6*8)= 48 } }, new Dictionary <HoursViewModel, double> { { new HoursViewModel { SelectedStartTimeHours = 0, //5pm edge case SelectedBedTimeHours = 7, //12am SelectedEndTimeHours = 11 //4am }, 148.00 //Expected Result (7*12)+(4*16) = 148 } }, new Dictionary <HoursViewModel, double> { { new HoursViewModel { SelectedStartTimeHours = 0, //5pm SelectedBedTimeHours = 6, //11pm SelectedEndTimeHours = 10 //3am }, 128.00 //Expected Result (6*12)+(1*8)+(3*16)= 128 } }, new Dictionary <HoursViewModel, double> { { new HoursViewModel { SelectedStartTimeHours = 5, //10pm SelectedBedTimeHours = 6, //11pm SelectedEndTimeHours = 10 //3am }, 68.00 //Expected Result (1*12)+(1*8)+(3*16)= 68 } }, new Dictionary <HoursViewModel, double> { { new HoursViewModel { SelectedStartTimeHours = 1, //6pm SelectedBedTimeHours = 3, //8pm SelectedEndTimeHours = 4 //9pm }, 32.00 //Expected Result (2*12)+(1*8)= 32 } }, new Dictionary <HoursViewModel, double> { { new HoursViewModel { SelectedStartTimeHours = 6, //11pm SelectedBedTimeHours = 8, //1am SelectedEndTimeHours = 11 //4am }, 76.00 //Expected Result (1*12)+(4*16)= 76 } } }; // Act listOfHoursViewModels.ForEach(hModel => { var result = controller.CalculatePayout(hModel.Keys.First()) as PartialViewResult; // Assert Assert.AreEqual(hModel.Values.First(), ((HoursViewModel)result?.Model)?.TotalPayout); }); }