public AddEditHazardousSubstanceViewModel GetViewModel()
        {
            var suppliers =_suppliersService.GetForCompany(_companyId);
            var hazardousSubstanceDto = new HazardousSubstanceDto();
            if(_hazardousSubstanceId > 0)
            {
                hazardousSubstanceDto = _hazardousSubstancesService.GetByIdAndCompanyId(_hazardousSubstanceId, _companyId);
            }

            return new AddEditHazardousSubstanceViewModel()
                       {
                           Id = hazardousSubstanceDto.Id,
                           Name = hazardousSubstanceDto.Name,
                           CompanyId = _companyId,
                           Reference = hazardousSubstanceDto.Reference,
                           SdsDate = hazardousSubstanceDto.SdsDate != DateTime.MinValue ? hazardousSubstanceDto.SdsDate: (DateTime?) null,
                           HazardousSubstanceStandard = hazardousSubstanceDto.Standard,
                           SupplierId = hazardousSubstanceDto.Supplier != null? hazardousSubstanceDto.Supplier.Id: 0,
                           SupplierName = hazardousSubstanceDto.Supplier != null ? hazardousSubstanceDto.Supplier.Name: string.Empty,
                           Suppliers = suppliers.Select(AutoCompleteViewModel.ForSupplier).AddDefaultOption(),
                           Pictograms = _pictogramService.GetAll(),
                           RiskPhrases = _riskPhraseService.GetAll(),
                           SafetyPhrases = _safetyPhraseService.GetAll(),
                           SelectedHazardousSubstanceSymbols = hazardousSubstanceDto.Pictograms.Select(p => p.Id).ToList(),
                           SelectedRiskPhrases = hazardousSubstanceDto.RiskPhrases.Select(r => r.Id).ToList(),
                           SelectedSafetyPhrases = hazardousSubstanceDto.HazardousSubstanceSafetyPhrases.Select(r => r.SafetyPhase.Id).ToList(),
                           DetailsOfUse = hazardousSubstanceDto.DetailsOfUse,
                           AssessmentRequired = _hazardousSubstanceId > 0 ? hazardousSubstanceDto.AssessmentRequired: (bool?) null,
                           HasLinkedRiskAssessments = hazardousSubstanceDto.LinkedRiskAsessments.Any(),
                           SafetyPhrasesAdditionalInformation = GetSafetyPhrasesAdditionalInformation(hazardousSubstanceDto)
                       };
        }
        public void When_get_SubstanceDetailsForRiskAssessment_Then_requested_hazardous_substance_fills_in_view_model()
        {
            // Given 
            var hazardousSubstanceDto = new HazardousSubstanceDto()
                                        {
                                            Name = "a haz sub",
                                            Pictograms = new List<PictogramDto>()
                                                         {
                                                             new PictogramDto() { Title = "hazard a"},
                                                             new PictogramDto() { Title = "hazard b"},
                                                             new PictogramDto() { Title = "hazard c"}
                                                         },
                                            RiskPhrases = new List<RiskPhraseDto>()
                                                          {
                                                              new RiskPhraseDto() { ReferenceNumber = "RP_01", Title = "Risk Phrase 1"},
                                                              new RiskPhraseDto() { ReferenceNumber = "RP_02", Title = "Risk Phrase 2"},
                                                              new RiskPhraseDto() { ReferenceNumber = "RP_03", Title = "Risk Phrase 3"},
                                                              new RiskPhraseDto() { ReferenceNumber = "RP_04", Title = "Risk Phrase 4"},
                                                          },
                                            HazardousSubstanceSafetyPhrases = new List<HazardousSubstanceSafetyPhraseDto>()
                                                                                  {
                                                                                      new HazardousSubstanceSafetyPhraseDto()
                                                                                          {
                                                                                              SafetyPhase = new SafetyPhraseDto() { ReferenceNumber = "SP_01", Title = "Safety Phrase 1"},
                                                                                              AdditionalInformation = "Additional Information 1"
                                                                                          },
                                                                                      new HazardousSubstanceSafetyPhraseDto()
                                                                                          {
                                                                                              SafetyPhase = new SafetyPhraseDto() { ReferenceNumber = "SP_02", Title = "Safety Phrase 2"},
                                                                                              AdditionalInformation = "Additional Information 2"
                                                                                          },
                                                                                      new HazardousSubstanceSafetyPhraseDto()
                                                                                          {
                                                                                              SafetyPhase = new SafetyPhraseDto() { ReferenceNumber = "SP_03", Title = "Safety Phrase 3"}
                                                                                          }
                                                                                  }
                                        };
            hazardousSubstancesService
                .Setup(x => x.GetByIdAndCompanyId(1234, It.IsAny<long>()))
                .Returns(hazardousSubstanceDto);

            // When
            var result = target.SubstanceDetailsForRiskAssessment(1234);
            var model = result.Model as HazardousSubstanceSummaryViewModel;

            // Then
            Assert.That(model.Name, Is.EqualTo(hazardousSubstanceDto.Name));
            Assert.That(model.RiskPhrases.Length, Is.EqualTo(4));
            Assert.That(model.RiskPhrases.Contains("RP_01 Risk Phrase 1"));
            Assert.That(model.RiskPhrases.Contains("RP_02 Risk Phrase 2"));
            Assert.That(model.RiskPhrases.Contains("RP_03 Risk Phrase 3"));
            Assert.That(model.RiskPhrases.Contains("RP_04 Risk Phrase 4"));
            Assert.That(model.SafetyPhrases.Length, Is.EqualTo(3));
            Assert.That(model.SafetyPhrases.Contains("SP_01 Safety Phrase 1"));
            Assert.That(model.SafetyPhrases.Contains("SP_02 Safety Phrase 2"));
            Assert.That(model.SafetyPhrases.Contains("SP_03 Safety Phrase 3"));
            Assert.That(model.AdditionalInformationRecords.Length, Is.EqualTo(2));
            Assert.That(model.AdditionalInformationRecords.Contains("SP_01: Additional Information 1"));
            Assert.That(model.AdditionalInformationRecords.Contains("SP_02: Additional Information 2"));
        }
        public void When_GetViewModel_Then_should_return_the_correct_viewmodel()
        {
            // Given
            var target = CreateTarget();

            var riskAssessment = new HazardousSubstanceRiskAssessmentDto()
                                     {
                                         CompanyId = _companyId,
                                         Id = _riskAssessmentId,
                                         HazardousSubstance = new HazardousSubstanceDto { Name = "Test Hazardous Substance 1" }
                                     };

            _riskAssessmentService
                .Setup(x => x.GetRiskAssessment(_riskAssessmentId, _companyId))
                .Returns(riskAssessment);
            
           
            var hazardousSubstances = new HazardousSubstanceDto[] { new HazardousSubstanceDto(), };
            _hazardousSubstanceService
                .Setup(x => x.GetHazardousSubstancesForSearchTerm("", _companyId, 100))
                .Returns(hazardousSubstances);

            // When
            var result = target
                            .WithCompanyId(_companyId)
                            .WithRiskAssessmentId(_riskAssessmentId)
                            .GetViewModel();

            // Then
            Assert.That(result, Is.TypeOf<DescriptionViewModel>());
            Assert.That(result.CompanyId, Is.EqualTo(_companyId));
            Assert.That(result.RiskAssessmentId, Is.EqualTo(_riskAssessmentId));
        }
        public void When_GetViewModel_Then_should_call_the_correct_methods()
        {
            // Given
            var target = CreateTarget();

            var riskAssessment = new HazardousSubstanceRiskAssessmentDto()
                                {
                                    CompanyId = _companyId,
                                    Id = _riskAssessmentId,
                                    HazardousSubstance = new HazardousSubstanceDto { Name = "Test Hazardous Substance 1" }
                                };

            _riskAssessmentService
                .Setup(x => x.GetRiskAssessment(_riskAssessmentId, _companyId))
                .Returns(riskAssessment);

          
            var hazardousSubstances = new HazardousSubstanceDto[]{ new HazardousSubstanceDto(), };
            _hazardousSubstanceService
                .Setup(x => x.GetHazardousSubstancesForSearchTerm("", _companyId, 100))
                .Returns(hazardousSubstances);

            // When
            target
                .WithCompanyId(_companyId)
                .WithRiskAssessmentId(_riskAssessmentId)
                .GetViewModel();

            // Then
            _riskAssessmentService.VerifyAll();
        }
        private static IEnumerable<SafetyPhraseAdditionalInformationViewModel> GetSafetyPhrasesAdditionalInformation(HazardousSubstanceDto hazardousSubstanceDto)
        {
            if (hazardousSubstanceDto.HazardousSubstanceSafetyPhrases.Any() == false)
            {
                return new List<SafetyPhraseAdditionalInformationViewModel>();
            }

            return hazardousSubstanceDto
                .HazardousSubstanceSafetyPhrases
                .Where(x => x.SafetyPhase.RequiresAdditionalInformation)
                .Select(x => new SafetyPhraseAdditionalInformationViewModel
                                 {
                                     AdditionalInformation = x.AdditionalInformation,
                                     ReferenceNumber = x.SafetyPhase.ReferenceNumber,
                                     SafetyPhaseId = x.SafetyPhase.Id
                                 }).ToList();
        }
        public void When_WithNewHazardousSubstanceId_Then_title_is_retrieved_from_service()
        {
            // Given
            var returnedHazSub = new HazardousSubstanceDto() { Name = "haz sub 01" };
            var companyId = 1234;
            var hazardousSubstanceId = 5678;

            _hazardousSubstanceService
                .Setup(x => x.GetByIdAndCompanyId(hazardousSubstanceId, companyId))
                .Returns(returnedHazSub);
            
            // When
            var result = _target.WithCompanyId(companyId).WithNewHazardousSubstanceId(hazardousSubstanceId).GetViewModel();

            // Then
            _hazardousSubstanceService.Verify(x => x.GetByIdAndCompanyId(hazardousSubstanceId, companyId));
            Assert.That(result.Title, Is.EqualTo(returnedHazSub.Name));
        }
 public static AutoCompleteViewModel ForHazardousSubstance(HazardousSubstanceDto hazardousSubstanceDto)
 {
     return new AutoCompleteViewModel(hazardousSubstanceDto.Name, hazardousSubstanceDto.Id.ToString());
 }
Ejemplo n.º 8
0
        public void GetViewModel_For_Edit_HazardousSunbstance_Returns_Correct_ViewModel()
        {
            // Given
            _hazardousSubstanceId = 200;


            var hazardousSubstance = new HazardousSubstanceDto()
                                         {
                                             Id = 200,
                                             Name = "Test Hazard",
                                             Reference = "Test Ref",
                                             SdsDate = DateTime.Now,
                                             Supplier = new SupplierDto() { Id = 1 },
                                             Standard = HazardousSubstanceStandard.European,
                                             Pictograms = new List<PictogramDto>()
                                                              {
                                                                  new PictogramDto()
                                                              },
                                             RiskPhrases = new List<RiskPhraseDto>()
                                                               {
                                                                   new RiskPhraseDto()
                                                               },
                                             HazardousSubstanceSafetyPhrases = new List<HazardousSubstanceSafetyPhraseDto>()
                                                                                   {
                                                                                       new HazardousSubstanceSafetyPhraseDto()
                                                                                           {
                                                                                               SafetyPhase = new SafetyPhraseDto()
                                                                                           }
                                                                                   },
                                            DetailsOfUse = "Test",
                                            AssessmentRequired = true
                                         };
            _hazardousSubstanceService
                .Setup(x => x.GetByIdAndCompanyId(_hazardousSubstanceId, _companyId))
                .Returns(hazardousSubstance);

            // When
            var result = _target.WithCompanyId(_companyId).WithHazardousSubstanceId(_hazardousSubstanceId).GetViewModel();

            // Then
            Assert.That(result.CompanyId, Is.EqualTo(_companyId));
            Assert.That(result.Pictograms.Count(), Is.EqualTo(_pictograms.Count()));
            Assert.That(result.RiskPhrases.Count(), Is.EqualTo(_riskPhrases.Count()));
            Assert.That(result.SafetyPhrases.Count(), Is.EqualTo(_safetyPhrses.Count()));

            Assert.That(result.Id, Is.EqualTo(hazardousSubstance.Id));
            Assert.That(result.Name, Is.EqualTo(hazardousSubstance.Name));
            Assert.That(result.Reference, Is.EqualTo(hazardousSubstance.Reference));
            Assert.That(result.SdsDate, Is.EqualTo(hazardousSubstance.SdsDate));
            Assert.That(result.SupplierId, Is.EqualTo(hazardousSubstance.Supplier.Id));

            Assert.That(result.HazardousSubstanceStandard, Is.EqualTo(hazardousSubstance.Standard));
            Assert.That(result.SelectedHazardousSubstanceSymbols.Count(), Is.EqualTo(hazardousSubstance.Pictograms.Count));
            Assert.That(result.SelectedRiskPhrases.Count(), Is.EqualTo(hazardousSubstance.RiskPhrases.Count));
            Assert.That(result.SafetyPhrases.Count(), Is.EqualTo(hazardousSubstance.HazardousSubstanceSafetyPhrases.Count()));
            Assert.That(result.DetailsOfUse, Is.EqualTo(hazardousSubstance.DetailsOfUse));
            Assert.That(result.AssessmentRequired, Is.EqualTo(hazardousSubstance.AssessmentRequired));
        }