public void Given_get_When_Save_Then_Returns_View() { // Given var target = GetTarget(); var viewModel = new AccidentDetailsViewModel(); // When var result = target.Save(viewModel); // Then Assert.IsInstanceOf<ViewResult>(result); }
public void Given_get_When_Save_Then_Returns_AccidentDetailsViewModel() { // Given var target = GetTarget(); var viewModel = new AccidentDetailsViewModel(); // When var result = target.Save(viewModel) as ViewResult; // Then Assert.That(result.Model, Is.InstanceOf<AccidentDetailsViewModel>()); }
public JsonResult SaveAndNext(AccidentDetailsViewModel model) { Validate(model); if (ModelState.IsValid) { UpdateAccidentDetails(model); return Json(new { Success = true }); } else { return ModelStateErrorsAsJson(); } }
public ActionResult Save(AccidentDetailsViewModel model) { Validate(model); if (!ModelState.IsValid) { return InvalidCreateAccidentDetailsViewResult(model); } else { try { UpdateAccidentDetails(model); TempData["Notice"] = "Accident details successfully updated"; return RedirectToIndexAction(model); } catch (ValidationException validationException) { ModelState.AddValidationErrors(validationException); } } return View("Index", model); }
public void given_valid_request_when_save_then_dateandtime_of_accident_contains_correct_value() { // Given var target = GetTarget(); var viewModel = new AccidentDetailsViewModel { AccidentRecordId = 1L, DateOfAccident = DateTime.Now.ToShortDateString(), TimeOfAccident = DateTime.Now.ToShortTimeString(), SiteId = 1L, OffSiteName = "Other Site Name", Location = "Location Name", AccidentTypeId = 1L, OtherAccidentType = "Other Accident Type", AccidentCauseId = 1L, OtherAccidentCause = "Other Accident Cause", FirstAiderEmployeeId = new Guid(), NonEmployeeFirstAiderName = "Other First Aider Name", DetailsOfFirstAid = "Details of first aid" }; // When var result = target.Save(viewModel) as ViewResult; // Then var expected = DateTime.Parse(viewModel.DateOfAccident).Add(DateTime.Parse(viewModel.TimeOfAccident).TimeOfDay); _accidentRecordService.Verify( x => x.UpdateAccidentRecordAccidentDetails( It.Is<UpdateAccidentRecordAccidentDetailsRequest>( request => request.DateOfAccident ==expected))); }
public void given_first_aider_not_selected_and_other_not_specified_when_save_then_model_state_returns_error() { //given var target = GetTarget(); var viewModel = new AccidentDetailsViewModel { AccidentRecordId = 1L, DateOfAccident = DateTime.Now.ToShortDateString(), SiteId = 1L, AccidentTypeId = 1L, OtherAccidentType = string.Empty, AccidentCauseId = 1L, OtherAccidentCause = string.Empty, FirstAidAdministered = true, FirstAiderEmployeeId = Guid.Empty, NonEmployeeFirstAiderName = string.Empty, }; //when target.Save(viewModel); //then Assert.True(target.ModelState.Keys.Contains("NonEmployeeFirstAiderName"), "First Aider not specified"); }
public void given__invalid_accident_time_when_save_then_model_state_returns_error() { //given var target = GetTarget(); var viewModel = new AccidentDetailsViewModel { AccidentRecordId = 1L, DateOfAccident = DateTime.Now.ToShortDateString(), TimeOfAccident = "ABC", SiteId = 1L, AccidentTypeId = 1L, OtherAccidentType = string.Empty, AccidentCauseId = 1L, OtherAccidentCause = string.Empty, FirstAiderEmployeeId = new Guid(), NonEmployeeFirstAiderName = "Other First Aider Name", DetailsOfFirstAid = "Details of first aid" }; //when target.Save(viewModel); //then Assert.True(target.ModelState.Keys.Contains("TimeOfAccident"), "Time of accident no tspecified"); }
public void given_accident_cause_not_selected_and_other_not_specified_when_save_then_model_state_returns_error() { //given var target = GetTarget(); var viewModel = new AccidentDetailsViewModel { AccidentRecordId = 1L, DateOfAccident = DateTime.Now.ToShortDateString(), SiteId = 1L, AccidentTypeId = 1L, OtherAccidentType = string.Empty, AccidentCauseId = AccidentDetailsViewModel.OTHER_ACCIDENT_CAUSE, OtherAccidentCause = string.Empty, FirstAiderEmployeeId = new Guid(), NonEmployeeFirstAiderName = "Other First Aider Name", DetailsOfFirstAid = "Details of first aid" }; //when target.Save(viewModel); //then Assert.True(target.ModelState.Keys.Contains("OtherAccidentCause"), "Other Accident Cause not specified"); }
public void Given_Offsite_and_location_not_specified_then_modelstate_returns_error() { //given var target = GetTarget(); var viewModel = new AccidentDetailsViewModel { AccidentRecordId = 1L, DateOfAccident = DateTime.Now.ToShortDateString(), SiteId = -1, OffSiteName = string.Empty, Location = "Location Name", AccidentTypeId = 1L, OtherAccidentType = "Other Accident Type", AccidentCauseId = 1L, OtherAccidentCause = "Other Accident Cause", FirstAiderEmployeeId = new Guid(), NonEmployeeFirstAiderName = "Other First Aider Name", DetailsOfFirstAid = "Details of first aid" }; //when target.Save(viewModel); //then Assert.IsFalse(target.ModelState.IsValid); Assert.True(target.ModelState.Keys.Contains("OffSiteName"),"Offsite name not specified"); }
private void UpdateAccidentDetails(AccidentDetailsViewModel model) { var request = UpdateAccidentRecordAccidentDetailsRequest.Create(CurrentUser.CompanyId, model.AccidentRecordId, model.DateOfAccident, FormatTime(model.TimeOfAccident), model.SiteId.HasValue && model.SiteId != AccidentDetailsViewModel.OFF_SITE ? model.SiteId : null, model.SiteId == AccidentDetailsViewModel.OFF_SITE ? model.OffSiteName : string.Empty, model.Location, model.AccidentTypeId, model.AccidentTypeId ==AccidentDetailsViewModel.OTHER_ACCIDENT_TYPE ? model.OtherAccidentType : string.Empty, model.AccidentCauseId, model.AccidentCauseId == AccidentDetailsViewModel.OTHER_ACCIDENT_CAUSE ? model.OtherAccidentCause : string.Empty, model.FirstAidAdministered, model.FirstAiderEmployeeId, model.FirstAiderEmployeeId == Guid.Empty ? model.NonEmployeeFirstAiderName : string.Empty, model.DetailsOfFirstAid, CurrentUser.UserId ); _accidentRecordService.UpdateAccidentRecordAccidentDetails(request); }
public void given_first_aider_is_employee_when_save_then_other_non_employee_firstaider_name_is_correct() { //given var target = GetTarget(); var viewModel = new AccidentDetailsViewModel { AccidentRecordId = 1L, DateOfAccident = DateTime.Now.ToShortDateString(), TimeOfAccident = "12:30", SiteId = 1L, OffSiteName = "Other Site Name", Location = "Location Name", AccidentTypeId = 1L, OtherAccidentType = "Other Accident Type", AccidentCauseId = 1L, OtherAccidentCause = "Other Accident Cause", FirstAiderEmployeeId = Guid.NewGuid(), NonEmployeeFirstAiderName = "Other First Aider Name", DetailsOfFirstAid = "Details of first aid" }; //when target.Save(viewModel); //then _accidentRecordService.Verify( x => x.UpdateAccidentRecordAccidentDetails( It.Is<UpdateAccidentRecordAccidentDetailsRequest>( y => y.NonEmployeeFirstAiderName == string.Empty))); }
private void Validate(AccidentDetailsViewModel model) { if (string.IsNullOrEmpty(model.DateOfAccident)) { ModelState.AddModelError("DateOfAccident", "Date of accident is required."); } if (string.IsNullOrEmpty(model.DateOfAccident)) { ModelState.AddModelError("DateOfAccident", "Date of accident is required."); } else { DateTime result; if (!DateTime.TryParse(model.DateOfAccident, out result)) { ModelState.AddModelError("DateOfAccident", "Please specify date of accident in correct format (dd/mm/yyyy)."); } } if (string.IsNullOrEmpty(model.TimeOfAccident)) { ModelState.AddModelError("TimeOfAccident", "Time of accident is required."); } else { var isInvalid = false; var rxTimeOfAccident = new Regex(@"^\d{2}[\s:;,\.]?\d{2}$"); if (!rxTimeOfAccident.IsMatch(model.TimeOfAccident)) { isInvalid = true; } DateTime result; if (!DateTime.TryParse(FormatTime(model.TimeOfAccident), out result)) { isInvalid = true; } if(isInvalid) { ModelState.AddModelError("TimeOfAccident", "Please specify time of accident in correct format (HH:MM)."); } } if (model.SiteId == null || model.SiteId ==default(long)) { ModelState.AddModelError("SiteId", "Please select a Site."); } else if (model.SiteId == AccidentDetailsViewModel.OFF_SITE && string.IsNullOrEmpty(model.OffSiteName)) { ModelState.AddModelError("OffSiteName", "Please specify an off-site name."); } if (string.IsNullOrEmpty(model.Location)) { ModelState.AddModelError("Location", "Location of accident is required."); } if (model.AccidentTypeId == null || model.AccidentTypeId == default(long)) { ModelState.AddModelError("AccidentTypeId", "Please select the kind of accident."); } else if (model.AccidentTypeId == AccidentDetailsViewModel.OTHER_ACCIDENT_TYPE && string.IsNullOrEmpty(model.OtherAccidentType)) { ModelState.AddModelError("OtherAccidentType", "Please describe the kind of accident."); } if (model.AccidentCauseId ==null | model.AccidentCauseId== default(long)) { ModelState.AddModelError("AccidentCauseId", "Please select the cause of the accident."); } else if (model.AccidentCauseId == AccidentDetailsViewModel.OTHER_ACCIDENT_CAUSE && string.IsNullOrEmpty(model.OtherAccidentCause)) { ModelState.AddModelError("OtherAccidentCause", "Please describe the cause of the accident."); } if (model.FirstAidAdministered) { if (model.FirstAiderEmployeeId == null || model.FirstAiderEmployeeId == Guid.Empty && string.IsNullOrEmpty(model.NonEmployeeFirstAiderName)) { ModelState.AddModelError("NonEmployeeFirstAiderName", "Please enter the name of the first aider."); } } }
private ActionResult InvalidCreateAccidentDetailsViewResult(AccidentDetailsViewModel model) { var viewModel = _accidentDetailsViewModelFactory .WithCompanyId(CurrentUser.CompanyId) .WithAccidentRecordId(model.AccidentRecordId) .WithSites(CurrentUser.GetSitesFilter()) .GetViewModel(); return View("Index", viewModel); }
private ActionResult RedirectToIndexAction(AccidentDetailsViewModel model) { return RedirectToAction("Index", new {model.AccidentRecordId, CurrentUser.CompanyId}); }
public void Given_Valid_Model_When_Save_Then_Maps_Correct_Request() { // Given var target = GetTarget(); var viewModel = new AccidentDetailsViewModel { AccidentRecordId = 1L, DateOfAccident = DateTime.Now.ToShortDateString(), TimeOfAccident = "12:30", SiteId = 1L, Location = "Location Name", AccidentTypeId = 1L, AccidentCauseId = 1L, FirstAiderEmployeeId = new Guid(), DetailsOfFirstAid = "Details of first aid" }; // When var result = target.Save(viewModel) as ViewResult; // Then _accidentRecordService.Verify( x => x.UpdateAccidentRecordAccidentDetails( It.Is<UpdateAccidentRecordAccidentDetailsRequest>( y => y.AccidentRecordId == viewModel.AccidentRecordId))); _accidentRecordService.Verify( x => x.UpdateAccidentRecordAccidentDetails( It.Is<UpdateAccidentRecordAccidentDetailsRequest>(y => y.SiteId == viewModel.SiteId))); _accidentRecordService.Verify( x => x.UpdateAccidentRecordAccidentDetails( It.Is<UpdateAccidentRecordAccidentDetailsRequest>(y => y.Location == viewModel.Location))); _accidentRecordService.Verify( x => x.UpdateAccidentRecordAccidentDetails( It.Is<UpdateAccidentRecordAccidentDetailsRequest>(y => y.AccidentTypeId == viewModel.AccidentTypeId))); _accidentRecordService.Verify( x => x.UpdateAccidentRecordAccidentDetails( It.Is<UpdateAccidentRecordAccidentDetailsRequest>( y => y.AccidentCauseId == viewModel.AccidentCauseId))); _accidentRecordService.Verify( x => x.UpdateAccidentRecordAccidentDetails( It.Is<UpdateAccidentRecordAccidentDetailsRequest>( y => y.FirstAiderEmployeeId == viewModel.FirstAiderEmployeeId))); _accidentRecordService.Verify( x => x.UpdateAccidentRecordAccidentDetails( It.Is<UpdateAccidentRecordAccidentDetailsRequest>( y => y.DetailsOfFirstAid == viewModel.DetailsOfFirstAid))); }
public void Given_Valid_Model_When_Save_Then_Calls_Correct_Methods() { // Given var target = GetTarget(); var viewModel = new AccidentDetailsViewModel { AccidentRecordId = 1L, DateOfAccident = DateTime.Now.ToShortDateString(), TimeOfAccident = "12:30", SiteId = 1L, OffSiteName = "Other Site Name", Location = "Location Name", AccidentTypeId = 1L, OtherAccidentType = "Other Accident Type", AccidentCauseId = 1L, OtherAccidentCause = "Other Accident Cause", FirstAiderEmployeeId = new Guid(), NonEmployeeFirstAiderName = "Other First Aider Name", DetailsOfFirstAid = "Details of first aid" }; // When var result = target.Save(viewModel) as ViewResult; // Then _accidentRecordService.Verify( x => x.UpdateAccidentRecordAccidentDetails(It.IsAny<UpdateAccidentRecordAccidentDetailsRequest>())); }
public AccidentDetailsViewModel GetViewModel() { var accidentRecord = _accidentRecordService.GetByIdAndCompanyIdWithSite(_accidentRecordId,_companyId); var employees = _employeeService.GetAll(_companyId); var sites = _siteService.Search(new SearchSitesRequest { CompanyId = _companyId, AllowedSiteIds = _sites }); var accidentTypes = _accidentTypeService.GetAllForCompany(_companyId); var accidentCauses = _causeOfAccidentService.GetAll(); var viewModel = new AccidentDetailsViewModel(); viewModel.CompanyId = _companyId; if (accidentRecord != null) { viewModel.AccidentRecordId = accidentRecord.Id; viewModel.DateOfAccident = accidentRecord.DateAndTimeOfAccident.HasValue ? accidentRecord.DateAndTimeOfAccident.Value.ToShortDateString() : string.Empty; viewModel.TimeOfAccident = accidentRecord.DateAndTimeOfAccident.HasValue ? accidentRecord.DateAndTimeOfAccident.Value.ToShortTimeString() : string.Empty; if (accidentRecord.SiteWhereHappened ==null && !string.IsNullOrEmpty(accidentRecord.OffSiteSpecifics)) { viewModel.SiteId = AccidentDetailsViewModel.OFF_SITE; } else if(accidentRecord.SiteWhereHappened!=null) { viewModel.SiteId = accidentRecord.SiteWhereHappened.Id; viewModel.Site = accidentRecord.SiteWhereHappened.Name; } viewModel.OffSiteName = accidentRecord.OffSiteSpecifics; viewModel.Location = accidentRecord.Location; viewModel.AccidentTypeId = accidentRecord.AccidentType != null ? accidentRecord.AccidentType.Id : 0; viewModel.AccidentType = accidentRecord.AccidentType != null ? accidentRecord.AccidentType.Description: string.Empty; viewModel.OtherAccidentType = accidentRecord.AccidentTypeOther; viewModel.AccidentCauseId = accidentRecord.CauseOfAccident != null ? accidentRecord.CauseOfAccident.Id : 0; viewModel.AccidentCause = accidentRecord.CauseOfAccident != null ? accidentRecord.CauseOfAccident.Description : string.Empty; viewModel.OtherAccidentCause = accidentRecord.CauseOfAccidentOther; if (accidentRecord.EmployeeFirstAider == null && !string.IsNullOrEmpty(accidentRecord.NonEmployeeFirstAiderSpecifics)) { viewModel.FirstAiderEmployeeId = Guid.Empty; viewModel.FirstAiderEmployee = "Other"; viewModel.ShowNonEmployeeFirstAidInputs = true; } else if(accidentRecord.EmployeeFirstAider!=null) { viewModel.FirstAiderEmployeeId = accidentRecord.EmployeeFirstAider.Id; viewModel.FirstAiderEmployee = accidentRecord.EmployeeFirstAider.FullName; } viewModel.NonEmployeeFirstAiderName = accidentRecord.NonEmployeeFirstAiderSpecifics; viewModel.FirstAidAdministered = accidentRecord.FirstAidAdministered.HasValue && accidentRecord.FirstAidAdministered.Value; viewModel.DetailsOfFirstAid = accidentRecord.DetailsOfFirstAidTreatment; } viewModel.Employees = employees.Select(AutoCompleteViewModel.ForEmployee) .AddDefaultOption(String.Empty) .WithOtherOption(new AutoCompleteViewModel("Non-employee", Guid.Empty.ToString())); viewModel.Sites = sites.Select(AutoCompleteViewModel.ForSite) .AddDefaultOption(String.Empty) .WithOtherOption(new AutoCompleteViewModel("Off-site", AccidentDetailsViewModel.OFF_SITE.ToString())); //viewModel.AccidentTypes = // accidentTypes.Select(AutoCompleteViewModel.ForAccidentTypes) // .AddDefaultOption(String.Empty); viewModel.AccidentTypes = AutoCompleteViewModel.ForAccidentTypes(accidentTypes); viewModel.AccidentCauses = accidentCauses.Select(AutoCompleteViewModel.ForAccidentCauses) .AddDefaultOption(String.Empty); return viewModel; }