public void MustBePending_Draft_Succeeds(SolutionStatus status) { var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(status: status); validator.MustBePending(); var valres = validator.Validate(soln); valres.Errors.Should().BeEmpty(); }
public void PreviousVersionMustBeFromSameOrganisation_NoPrevious_Succeeds() { var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(); validator.PreviousVersionMustBeFromSameOrganisation(); var valres = validator.Validate(soln); valres.Errors.Should().BeEmpty(); }
public void MustBePending_NonDraft_ReturnsError(SolutionStatus status) { var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(status: status); validator.MustBePending(); var valres = validator.Validate(soln); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Status must be Draft") .And .HaveCount(1); }
public void Update_Calls_Modifier() { var logic = new SolutionsLogic(_modifier.Object, _datastore.Object, _contacts.Object, _context.Object, _validator.Object, _filter.Object, _evidenceBlobStoreLogic.Object); var soln = Creator.GetSolution(); var valres = new ValidationResult(); _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres); logic.Update(soln); _modifier.Verify(x => x.ForUpdate(soln), Times.Once); }
public void MustBeValidOrganisationId_NotGuid_ReturnsError() { var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(orgId: "some other Id"); validator.MustBeValidOrganisationId(); var valres = validator.Validate(soln); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Invalid OrganisationId") .And .HaveCount(1); }
public void Create_Calls_Modifier() { var logic = Create(); var soln = Creator.GetSolution(); var valres = new ValidationResult(); _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres); logic.Create(soln); _modifier.Verify(x => x.ForCreate(soln), Times.Once); }
public void MustBeFromSameOrganisationOrAdmin_Same_Succeeds() { var orgId = Guid.NewGuid().ToString(); _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(orgId: orgId, role: Roles.Supplier)); var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(orgId: orgId); validator.MustBeFromSameOrganisationOrAdmin(); var valres = validator.Validate(soln); valres.Errors.Should().BeEmpty(); }
public void MustBeDevelopment_Development_Succeeds( [ValueSource(nameof(DevelopmentEnvironments))] string environment) { var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(); _env.Setup(x => x.EnvironmentName).Returns(environment); validator.MustBeDevelopment(); var valres = validator.Validate(soln); valres.Errors.Should().BeEmpty(); }
public void SolutionMustBeInReview_Review_Succeeds(SolutionStatus status) { var validator = new StandardsApplicableEvidenceValidator(_evidenceDatastore.Object, _claimDatastore.Object, _solutionDatastore.Object, _context.Object, _logger.Object); var soln = Creator.GetSolution(status: status); var claim = Creator.GetStandardsApplicable(solnId: soln.Id); var evidence = Creator.GetStandardsApplicableEvidence(claimId: claim.Id); _claimDatastore.As <IClaimsDatastore <ClaimsBase> >().Setup(x => x.ById(evidence.ClaimId)).Returns(claim); _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(soln); validator.SolutionMustBeInReview(); var valres = validator.Validate(evidence); valres.Errors.Should().BeEmpty(); }
public void PreviousVersionMustBeFromSameOrganisation_Different_ReturnsError() { var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(previousId: Guid.NewGuid().ToString()); _solutionDatastore.Setup(x => x.ById(soln.PreviousId)).Returns(Creator.GetSolution()); validator.PreviousVersionMustBeFromSameOrganisation(); var valres = validator.Validate(soln); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Previous version must be from same organisation") .And .HaveCount(1); }
public void Filter_SupplierOther_ReturnsNull() { var filter = new DummyClaimsFilterBase(_context.Object, _solutionDatastore.Object); var orgId = Guid.NewGuid().ToString(); var soln = Creator.GetSolution(orgId: orgId); var claim = Creator.GetClaimsBase(solnId: soln.Id); var ctx = Creator.GetContext(); _context.Setup(c => c.HttpContext).Returns(ctx); _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(soln); var res = filter.FilterForSupplier(claim); res.Should().BeNull(); }
public void ForUpdate_Sets_ModifiedById() { var modifier = new SolutionsModifier(_context.Object, _contacts.Object); var soln = Creator.GetSolution(); _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); var contactId = Guid.NewGuid().ToString(); var contact = Creator.GetContact(id: contactId); _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(contact); modifier.ForUpdate(soln); soln.ModifiedById.Should().Be(contactId); }
public void ForCreate_Sets_ModifiedByOn() { var modifier = new SolutionsModifier(_context.Object, _contacts.Object); var soln = Creator.GetSolution(); soln.ModifiedOn = new DateTime(2006, 2, 20); _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); var contact = Creator.GetContact(); _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(contact); modifier.ForCreate(soln); soln.ModifiedOn.Should().BeCloseTo(DateTime.UtcNow); }
public void MustBeSameOrganisation_Same_NewClaim_Succeeds() { var orgId = Guid.NewGuid().ToString(); _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(orgId: orgId)); var validator = new DummyClaimsValidatorBase(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object); var claim = Creator.GetClaimsBase(); _solutionsDatastore.Setup(x => x.ById(claim.SolutionId)).Returns(Creator.GetSolution(orgId: orgId)); validator.MustBeSameOrganisation(); var valres = validator.Validate(claim); valres.Errors.Should().BeEmpty(); }
public void Filter_Supplier_Returns_Own([ValueSource(nameof(Statuses))] SolutionStatus status) { var orgId = Guid.NewGuid().ToString(); var ctx = Creator.GetContext(orgId: orgId, role: Roles.Supplier); _context.Setup(c => c.HttpContext).Returns(ctx); var filter = new SolutionsFilter(_context.Object); var soln1 = Creator.GetSolution(status: status, orgId: orgId); var soln2 = Creator.GetSolution(status: status); var soln3 = Creator.GetSolution(status: status); var solns = new[] { soln1, soln2, soln3 }; var res = filter.Filter(solns); res.Should().BeEquivalentTo(soln1); }
public void MustBeCurrentVersion_PreviousVersion_ReturnsError() { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(); _solutionDatastore.Setup(x => x.ByOrganisation(soln.OrganisationId)).Returns(new[] { Creator.GetSolution(previousId: soln.Id) }); validator.MustBeCurrentVersion(); var valres = validator.Validate(soln); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Can only change current version") .And .HaveCount(1); }
public void MustBeCurrentVersion_Current_Succeeds() { var solnId = Guid.NewGuid().ToString(); _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var oldSoln = Creator.GetSolution(id: solnId); var newSoln = Creator.GetSolution(id: solnId); _solutionDatastore.Setup(x => x.ByOrganisation(newSoln.OrganisationId)).Returns(new[] { oldSoln }); validator.MustBeCurrentVersion(); var valres = validator.Validate(newSoln); valres.Errors.Should().BeEmpty(); }
public void Update_CallsPrepareForSolution_WhenRegistered(SolutionStatus status) { var logic = Create(); var soln = Creator.GetSolution(status: status); _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact()); var valres = new ValidationResult(); _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres); logic.Update(soln); _evidenceBlobStoreLogic.Verify(x => x.PrepareForSolution(soln.Id), Times.Once); }
public void MustBeValidStatusTransition_Valid_Succeeds(SolutionStatus oldStatus, SolutionStatus newStatus, string role) { var solnId = Guid.NewGuid().ToString(); _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role)); var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var oldSoln = Creator.GetSolution(id: solnId, status: oldStatus); var newSoln = Creator.GetSolution(id: solnId, status: newStatus); _solutionDatastore.Setup(x => x.ById(solnId)).Returns(oldSoln); validator.MustBeValidStatusTransition(); var valres = validator.Validate(newSoln); valres.Errors.Should().BeEmpty(); }
public void Update_DoesNotCallPrepareForSolution_WhenNotRegistered(SolutionStatus status) { var logic = new SolutionsLogic(_modifier.Object, _datastore.Object, _contacts.Object, _context.Object, _validator.Object, _filter.Object, _evidenceBlobStoreLogic.Object); var soln = Creator.GetSolution(status: status); _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact()); var valres = new ValidationResult(); _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres); logic.Update(soln); _evidenceBlobStoreLogic.Verify(x => x.PrepareForSolution(soln.Id), Times.Never); }
public void MustBePendingToChangeVersion_SameVersion_Succeeds(SolutionStatus status) { var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(status: status); soln.Version = "Original version"; var solnOld = Creator.GetSolution(status: status, id: soln.Id); solnOld.Version = "Original version"; _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(solnOld); validator.MustBePendingToChangeVersion(); var valres = validator.Validate(soln); valres.Errors.Should().BeEmpty(); }
public void Filter_None_Returns_Approved( [ValueSource(typeof(Creator), nameof(Creator.SolutionStatuses))] SolutionStatus status) { var filter = new SolutionsFilter(); var solns = new[] { Creator.GetSolution(status: status), Creator.GetSolution(status: status), Creator.GetSolution(status: status) }; var expSolns = solns.Where(x => x.Status == SolutionStatus.Approved); var res = filter.Filter(solns); res.Should().BeEquivalentTo(expSolns); }
public void MustBeSameOrganisation_Different_ReturnsError() { var orgId = Guid.NewGuid().ToString(); var soln = Creator.GetSolution(orgId: orgId); var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(Creator.GetSolution()); validator.MustBeSameOrganisation(); var valres = validator.Validate(soln); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Cannot transfer solutions between organisations") .And .HaveCount(1); }
public void MustBeDevelopment_NonDevelopment_ReturnsError( [ValueSource(nameof(NonDevelopmentEnvironments))] string environment) { var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(); _env.Setup(x => x.EnvironmentName).Returns(environment); validator.MustBeDevelopment(); var valres = validator.Validate(soln); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Only available in Development environment") .And .HaveCount(1); }
public void Validate_Supplier_Other_ReturnsError( [ValueSource(nameof(Operations))] string operation) { var orgId = Guid.NewGuid().ToString(); var ctx = Creator.GetContext(orgId: orgId, role: Roles.Supplier); _context.Setup(c => c.HttpContext).Returns(ctx); var soln = Creator.GetSolution(); var techCont = Creator.GetTechnicalContact(); _solutionDatastore.Setup(x => x.ById(techCont.SolutionId)).Returns(soln); var validator = new TechnicalContactValidator(_context.Object, _solutionDatastore.Object); var res = validator.Validate(techCont, ruleSet: operation); res.Errors.Count().Should().Be(1); }
public void Filter_Admin_Returns_All([ValueSource(nameof(Statuses))] SolutionStatus status) { var ctx = Creator.GetContext(role: Roles.Admin); _context.Setup(c => c.HttpContext).Returns(ctx); var filter = new SolutionsFilter(_context.Object); var solns = new[] { Creator.GetSolution(status: status), Creator.GetSolution(status: status), Creator.GetSolution(status: status) }; var res = filter.Filter(solns); res.Should().BeEquivalentTo(solns); }
public void MustBeValidOrganisationId_Null_ReturnsError() { var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(orgId: null); soln.OrganisationId = null; validator.MustBeValidOrganisationId(); var valres = validator.Validate(soln); valres.Errors.Should() .Contain(x => x.ErrorMessage == "Invalid OrganisationId") .And .Contain(x => x.ErrorMessage == "'Organisation Id' must not be empty.") .And .HaveCount(2); }
public void SolutionMustBeInReview_Review_Succeeds(SolutionStatus status) { var validator = new CapabilitiesImplementedReviewsValidator(_reviewsDatastore.Object, _evidenceDatastore.Object, _claimDatastore.Object, _solutionDatastore.Object, _context.Object, _logger.Object); var soln = Creator.GetSolution(status: status); var review = GetCapabilitiesImplementedReview(); var claim = Creator.GetCapabilitiesImplemented(solnId: soln.Id); var evidence = Creator.GetCapabilitiesImplementedEvidence(claimId: claim.Id); _evidenceDatastore.As <IEvidenceDatastore <EvidenceBase> >().Setup(x => x.ById(review.EvidenceId)).Returns(evidence); _claimDatastore.As <IClaimsDatastore <ClaimsBase> >().Setup(x => x.ById(evidence.ClaimId)).Returns(claim); _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(soln); validator.SolutionMustBeInReview(); var valres = validator.Validate(review); valres.Errors.Should().BeEmpty(); }
public void SupplierOwn_Other_ReturnsError() { var orgId = Guid.NewGuid().ToString(); var ctx = Creator.GetContext(orgId: orgId, role: Roles.Supplier); _context.Setup(c => c.HttpContext).Returns(ctx); var soln = Creator.GetSolution(); var techCont = Creator.GetTechnicalContact(); _solutionDatastore.Setup(x => x.ById(techCont.SolutionId)).Returns(soln); var validator = new TechnicalContactsValidator(_context.Object, _logger.Object, _solutionDatastore.Object); validator.SupplierOwn(); var res = validator.Validate(techCont); res.Errors.Count().Should().Be(1); }
public void Filter_SupplierOwn_ReturnsOwn() { var filter = new DummyEvidenceFilterBase(_claimDatastore.Object, _solutionDatastore.Object, _context.Object); var orgId = Guid.NewGuid().ToString(); var soln = Creator.GetSolution(orgId: orgId); var claim = Creator.GetClaimsBase(solnId: soln.Id); var evidence = Creator.GetEvidenceBase(claimId: claim.Id); var ctx = Creator.GetContext(orgId: orgId); _context.Setup(c => c.HttpContext).Returns(ctx); _claimDatastore.Setup(x => x.ById(evidence.ClaimId)).Returns(claim); _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(soln); var res = filter.FilterForSupplier(new[] { evidence }); res.Should().BeEquivalentTo(evidence); }