Exemple #1
0
        public void On_create_logs_stuff()
        {
            // Given
            var request = new AddHazardousSubstanceRequest();

            // When
            target.Add(request);

            // Then
            log.Verify(x => x.Add(request), Times.Once());
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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 });

        }
Exemple #6
0
        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;
            }
        }
Exemple #8
0
        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));
        }
Exemple #9
0
        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"));
        }
Exemple #10
0
        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();
 }
Exemple #15
0
        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;
            }
        }