public void On_create_logs_stuff() { // Given var request = new AddHazardousSubstanceRequest(); // When target.Add(request); // Then log.Verify(x => x.Add(request), Times.Once()); }
public void Save_passes_view_model_to_service() { // Given var saveHazardousSubstanceViewModel = new AddHazardousSubstanceRequest() { Name = "My HS", SdsDate = DateTime.Now }; // When var result = target.Add(saveHazardousSubstanceViewModel); // Then hazardousSubstancesService.Verify(x => x.Add(saveHazardousSubstanceViewModel), Times.Once()); }
public void Given_a_request_where_previous_assessment_required_was_true_and_current_assessment_required_has_not_got_value_When_GetIsAssessmentRequired_Then_should_return_false() { // Arrange var request = new AddHazardousSubstanceRequest { PreviousAssessmentRequired = true, AssessmentRequired = null }; // Act bool result = request.IsAssessmentRequired(); // Assert Assert.False(result); }
public void Save_returns_correct_result() { // Given var saveHazardousSubstanceViewModel = new AddHazardousSubstanceRequest() { Name = "My HS", SdsDate = DateTime.Now }; // When var result = target.Add(saveHazardousSubstanceViewModel) as RedirectToRouteResult; // Then Assert.That(result, Is.Not.Null); Assert.That(result.RouteValues["action"], Is.EqualTo("Index")); Assert.That(result.RouteValues["controller"], Is.EqualTo("Inventory")); Assert.That(result.RouteValues.Values.Where(x => x.ToString() == "newHazardousSubstanceId"), Is.Not.Null); }
public ActionResult Update(AddHazardousSubstanceRequest request) { if (!ModelState.IsValid) { var viewModel = _hazardousSubstanceViewModelFactory .WithCompanyId(request.CompanyId) .GetViewModel(request); return View("Add", viewModel); } request.UserId = CurrentUser.UserId; request.CompanyId = CurrentUser.CompanyId; _hazardousSubstancesService.Update(request); if (request.IsAssessmentRequired()) { return RedirectToAction("Create", "RiskAssessment", new { area = "HazardousSubstanceRiskAssessments", companyId = request.CompanyId, newHazardousSubstanceId = request.Id }); } return RedirectToAction("Index", "Inventory", new { companyId = request.CompanyId }); }
public void Save_attaches_current_user_id_and_users_companyId_view_model_to_service() { // Given var passedSaveHazardousSubstanceRequest = new AddHazardousSubstanceRequest(); hazardousSubstancesService .Setup(x => x.Add(It.IsAny<AddHazardousSubstanceRequest>())) .Callback<AddHazardousSubstanceRequest>(y => passedSaveHazardousSubstanceRequest = y); var addHazardousSubstanceRequest = new AddHazardousSubstanceRequest() { Name = "My HS", SdsDate = DateTime.Now }; // When var result = target.Add(addHazardousSubstanceRequest); // Then hazardousSubstancesService.Verify(x => x.Add(addHazardousSubstanceRequest), Times.Once()); Assert.That(passedSaveHazardousSubstanceRequest.UserId, Is.Not.EqualTo(Guid.Empty)); Assert.That(passedSaveHazardousSubstanceRequest.CompanyId, Is.GreaterThan(0)); }
public long Add(AddHazardousSubstanceRequest request) { _log.Add(request); try { var currentUser = _userForAuditingRepository.GetByIdAndCompanyId(request.UserId, request.CompanyId); var supplier = request.SupplierId != default(long) ? _supplierRepository.GetByIdAndCompanyId(request.SupplierId, request.CompanyId) : null; var riskPhrases = request.RiskPhraseIds != null ? _riskPhraseRepository.GetByIds(request.RiskPhraseIds).ToList() : null; var pictograms = request.PictogramIds != null ? _pictogramRepository.GetByIds(request.PictogramIds).ToList() : null; var safetyPhrases = request.SafetyPhraseIds != null ? _safetyPhraseRepository.GetByIds(request.SafetyPhraseIds).ToList() : null; var safetyPhrasesParameters = CreateSafetyPhraseParameters(request, safetyPhrases); var hazardousSubstance = HazardousSubstance.Add( request.CompanyId, currentUser, request.Name, request.Reference, supplier, request.SdsDate, pictograms, riskPhrases, safetyPhrasesParameters, request.HazardousSubstanceStandard, request.DetailsOfUse, request.AssessmentRequired.GetValueOrDefault() ); _hazardousSubstancesRepository.SaveOrUpdate(hazardousSubstance); return hazardousSubstance.Id; } catch (Exception ex) { _log.Add(ex); throw; } }
public void Given_pictograms_are_included_When_add_is_clicked_then_pictograms_persisted_against_substance() { //Given userRepository .Setup(x => x.GetByIdAndCompanyId(It.IsAny<Guid>(), 5678)).Returns(new UserForAuditing()); supplierRepository .Setup(x => x.GetByIdAndCompanyId(1234, 5678)) .Returns(new Supplier() { Id = 1234, Name = "Test Supplier 1" }); var requestedPictogramIds = new long[0]; pictogramRepository .Setup(x => x.GetByIds(new long[] { 1L, 2L, 3L })) .Returns(new List<Domain.Entities.Pictogram>() { new Domain.Entities.Pictogram() { Id = 1, Title = "Picto 1", HazardousSubstanceStandard = HazardousSubstanceStandard.Global}, new Domain.Entities.Pictogram() { Id = 2, Title = "Picto 2", HazardousSubstanceStandard = HazardousSubstanceStandard.Global}, new Domain.Entities.Pictogram() { Id = 3, Title = "Picto 3", HazardousSubstanceStandard = HazardousSubstanceStandard.Global} }) .Callback<long[]>(y => requestedPictogramIds = y); var passedRequest = new HazardousSubstance(); var request = new AddHazardousSubstanceRequest() { CompanyId = 5678, Name = "new title", PictogramIds = new long[] { 1L, 2L, 3L } }; hazardousSubstanceRepository .Setup(x => x.SaveOrUpdate(It.IsAny<HazardousSubstance>())) .Callback<HazardousSubstance>(y => passedRequest = y); // When target.Add(request); // Then pictogramRepository.Verify(x => x.GetByIds(new long[] { 1L, 2L, 3L }), Times.Once()); var pictograms = passedRequest.HazardousSubstancePictograms.Select(hs => hs.Pictogram).ToList(); Assert.That(pictograms.Count, Is.EqualTo(3)); Assert.That(pictograms[0].Title, Is.EqualTo("Picto 1")); Assert.That(pictograms[1].Title, Is.EqualTo("Picto 2")); Assert.That(pictograms[2].Title, Is.EqualTo("Picto 3")); Assert.That(pictograms[0].Id, Is.EqualTo(1)); Assert.That(pictograms[1].Id, Is.EqualTo(2)); Assert.That(pictograms[2].Id, Is.EqualTo(3)); Assert.That(pictograms[0].HazardousSubstanceStandard, Is.EqualTo(HazardousSubstanceStandard.Global)); Assert.That(pictograms[1].HazardousSubstanceStandard, Is.EqualTo(HazardousSubstanceStandard.Global)); Assert.That(pictograms[2].HazardousSubstanceStandard, Is.EqualTo(HazardousSubstanceStandard.Global)); }
public void Given_risk_and_safety_phrases_are_included_When_add_is_clicked_then_risk_and_safety_phrases_persited_against_substance() { //Given userRepository .Setup(x => x.GetByIdAndCompanyId(It.IsAny<Guid>(), 5678)).Returns(new UserForAuditing()); supplierRepository .Setup(x => x.GetByIdAndCompanyId(1234, 5678)) .Returns(new Supplier() { Id = 1234, Name = "Test Supplier 1" }); riskPhraseRepository .Setup(x => x.GetByIds(new long[] { 5L, 6L, 7L })) .Returns(new List<RiskPhrase> { new RiskPhrase() { Id = 5, Title = "RX05" }, new RiskPhrase() { Id = 6, Title = "RX06" }, new RiskPhrase() { Id = 7, Title = "RX07" }, }); safetyPhraseRepository .Setup(x => x.GetByIds(new long[] { 8L, 9L, 10L })) .Returns(new List<SafetyPhrase> { new SafetyPhrase() { Id = 8, Title = "SX08" }, new SafetyPhrase() { Id = 9, Title = "SX09" }, new SafetyPhrase() { Id = 10, Title = "SX10" }, }); var passedRequest = new HazardousSubstance(); var request = new AddHazardousSubstanceRequest() { CompanyId = 5678, Name = "new title", RiskPhraseIds = new long[] { 5L, 6L, 7L }, SafetyPhraseIds = new long[] { 8L, 9L, 10L,}, AdditionalInformation = new List<SafetyPhraseAdditionalInformationRequest>() { new SafetyPhraseAdditionalInformationRequest() { SafetyPhaseId = 8L, AdditionalInformation = "Testing Additional Information" } } }; hazardousSubstanceRepository .Setup(x => x.SaveOrUpdate(It.IsAny<HazardousSubstance>())) .Callback<HazardousSubstance>(y => passedRequest = y); // When target.Add(request); // Then var riskPhrases = passedRequest.HazardousSubstanceRiskPhrases.Select(x => x.RiskPhrase).ToList(); Assert.That(riskPhrases.Count, Is.EqualTo(3)); Assert.That(riskPhrases[0].Title, Is.EqualTo("RX05")); Assert.That(riskPhrases[1].Title, Is.EqualTo("RX06")); Assert.That(riskPhrases[2].Title, Is.EqualTo("RX07")); var safetyPhrases = passedRequest.HazardousSubstanceSafetyPhrases.ToList(); Assert.That(safetyPhrases.Count, Is.EqualTo(3)); Assert.That(safetyPhrases[0].SafetyPhrase.Title, Is.EqualTo("SX08")); Assert.That(safetyPhrases[0].AdditionalInformation, Is.EqualTo("Testing Additional Information")); Assert.That(safetyPhrases[1].SafetyPhrase.Title, Is.EqualTo("SX09")); Assert.That(safetyPhrases[2].SafetyPhrase.Title, Is.EqualTo("SX10")); }
public void On_create_populates_new_hazardous_substance() { // Given var userId = Guid.NewGuid(); var returnedUser = new UserForAuditing() { CompanyId = 5678, Id = userId }; userRepository .Setup(x => x.GetByIdAndCompanyId(userId, 5678)).Returns(returnedUser); supplierRepository .Setup(x => x.GetByIdAndCompanyId(1234, 5678)) .Returns(new Supplier() { Id = 1234, Name = "Test Supplier 1" }); var passedRequest = new HazardousSubstance(); var request = new AddHazardousSubstanceRequest() { CompanyId = 5678, UserId = userId, Name = "new title", Reference = "new reference", SdsDate = new DateTime(2012, 6, 23), SupplierId = 1234 }; hazardousSubstanceRepository .Setup(x => x.SaveOrUpdate(It.IsAny<HazardousSubstance>())) .Callback<HazardousSubstance>(y => passedRequest = y); // When target.Add(request); // Then Assert.That(passedRequest.Name, Is.EqualTo(request.Name)); Assert.That(passedRequest.CompanyId, Is.EqualTo(request.CompanyId)); Assert.That(passedRequest.CreatedBy, Is.EqualTo(returnedUser)); Assert.That(passedRequest.CreatedBy.Id, Is.EqualTo(request.UserId)); Assert.That(passedRequest.Reference, Is.EqualTo(request.Reference)); Assert.That(passedRequest.SdsDate, Is.EqualTo(request.SdsDate)); Assert.That(passedRequest.Supplier.Id, Is.EqualTo(request.SupplierId)); }
public ActionResult Add(AddHazardousSubstanceRequest request) { //server-side date validation as jQuery Datepicker fails with standard Range validation ValidateDates(request); if (!ModelState.IsValid) { var viewModel = _hazardousSubstanceViewModelFactory .WithCompanyId(request.CompanyId) .GetViewModel(request); return View("Add", viewModel); } request.UserId = CurrentUser.UserId; request.CompanyId = CurrentUser.CompanyId; var newHazardousSubstanceId = _hazardousSubstancesService.Add(request); if (request.IsAssessmentRequired()) { return RedirectToAction("Create", "RiskAssessment", new { area = "HazardousSubstanceRiskAssessments", companyId = request.CompanyId, newHazardousSubstanceId }); } return RedirectToAction("Index", "Inventory", new { companyId = request.CompanyId }); }
public void ValidateDates(AddHazardousSubstanceRequest request) { if (request.SdsDate <= (DateTime)SqlDateTime.MinValue || request.SdsDate >= (DateTime)SqlDateTime.MaxValue) { ModelState.AddModelError("SdsDate", "Please enter a valid date"); } }
private static IEnumerable<SafetyPhraseParameters> CreateSafetyPhraseParameters(AddHazardousSubstanceRequest request, IEnumerable<SafetyPhrase> safetyPhrases) { var safetyPhrasesParameters = new List<SafetyPhraseParameters>(); if (safetyPhrases != null) { safetyPhrasesParameters.AddRange(safetyPhrases.Select(safetyPhrase => new SafetyPhraseParameters() { Phrase = safetyPhrase, Information = GetSafetyPhraseAdditionalInformation(request, safetyPhrase) })); } return safetyPhrasesParameters; }
private static string GetSafetyPhraseAdditionalInformation(AddHazardousSubstanceRequest request, SafetyPhrase safetyPhrase) { return request.AdditionalInformation.Where(x =>x.SafetyPhaseId ==safetyPhrase.Id).Select(x => x.AdditionalInformation).FirstOrDefault(); }
public void Invalid_model_sent_to_save_displays_form_with_errors() { // Given var saveHazardousSubstanceViewModel = new AddHazardousSubstanceRequest() { }; target.ModelState.AddModelError("", "fake error"); // When var result = target.Add(saveHazardousSubstanceViewModel) as ViewResult; // Then hazardousSubstancesService.Verify(x => x.Add(saveHazardousSubstanceViewModel), Times.Never()); Assert.That(result.ViewName, Is.EqualTo("Add")); }
public AddEditHazardousSubstanceViewModel GetViewModel(AddHazardousSubstanceRequest model) { var suppliers = _suppliersService.GetForCompany(_companyId); var viewModel = new AddEditHazardousSubstanceViewModel(); viewModel.Id = model.Id; viewModel.Name = model.Name; viewModel.CompanyId = _companyId; viewModel.Reference = model.Reference; viewModel.SdsDate = model.SdsDate; viewModel.HazardousSubstanceStandard = model.HazardousSubstanceStandard; viewModel.SupplierId = model.SupplierId; viewModel.Suppliers = suppliers.Select(AutoCompleteViewModel.ForSupplier).AddDefaultOption(); viewModel.Pictograms = _pictogramService.GetAll(); viewModel.RiskPhrases = _riskPhraseService.GetAll(); viewModel.SafetyPhrases = _safetyPhraseService.GetAll(); viewModel.SelectedHazardousSubstanceSymbols = model.PictogramIds == null ? new List<long>() : model.PictogramIds.ToList(); viewModel.SelectedRiskPhrases = model.RiskPhraseIds == null ? new List<long>() : model.RiskPhraseIds.ToList(); viewModel.SelectedSafetyPhrases = model.SafetyPhraseIds == null ? new List<long>() : model.SafetyPhraseIds.ToList(); viewModel.DetailsOfUse = model.DetailsOfUse; viewModel.AssessmentRequired = model.AssessmentRequired; viewModel.SafetyPhrasesAdditionalInformation = model.AdditionalInformation.Select(x => new SafetyPhraseAdditionalInformationViewModel() { AdditionalInformation = x.AdditionalInformation, ReferenceNumber = x.ReferenceNumber, SafetyPhaseId = x.SafetyPhaseId }); return viewModel; }
public void Update(AddHazardousSubstanceRequest request) { _log.Add(request); try { var hazardousSubstance = _hazardousSubstancesRepository.GetByIdAndCompanyId(request.Id, request.CompanyId); var currentUser = _userForAuditingRepository.GetByIdAndCompanyId(request.UserId, request.CompanyId); var supplier = request.SupplierId != default(long) ? _supplierRepository.GetByIdAndCompanyId(request.SupplierId, request.CompanyId) : null; var riskPhrases = request.RiskPhraseIds != null ? _riskPhraseRepository.GetByIds(request.RiskPhraseIds).ToList() : null; var pictograms = request.PictogramIds != null ? _pictogramRepository.GetByIds(request.PictogramIds).ToList() : null; var safetyPhrases = request.SafetyPhraseIds != null ? _safetyPhraseRepository.GetByIds(request.SafetyPhraseIds).ToList() : null; var safetyPhrasesParameters = CreateSafetyPhraseParameters(request, safetyPhrases); // We currently return back all the selected hazards from the ui, both the global and the european, this is a ui limitation where we pass backa ll selected hazards across both the standards // We just want to save the hazards relating to the currently selected standard if (pictograms != null) { pictograms = pictograms.Where(pictogram => pictogram.HazardousSubstanceStandard == request.HazardousSubstanceStandard).ToList(); } hazardousSubstance.Update(currentUser, request.Name, request.Reference, supplier, request.SdsDate, pictograms, riskPhrases, safetyPhrasesParameters, request.HazardousSubstanceStandard, request.DetailsOfUse, request.AssessmentRequired.GetValueOrDefault()); _hazardousSubstancesRepository.SaveOrUpdate(hazardousSubstance); } catch (Exception ex) { _log.Add(ex); throw; } }