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 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 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 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 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 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 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 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 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 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 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 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 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 MustBeFromSameOrganisationOrAdmin_Different_ReturnsError( [Values( Roles.Buyer, Roles.Supplier)] string role) { _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 soln = Creator.GetSolution(); validator.MustBeFromSameOrganisationOrAdmin(); var valres = validator.Validate(soln); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Must be from same organisation") .And .HaveCount(1); }
public void MustBePendingToChangeVersion_NonDraft_ReturnsError(SolutionStatus status) { var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object); var soln = Creator.GetSolution(status: status); soln.Version = "New 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() .ContainSingle(x => x.ErrorMessage == "Can only change version in Draft") .And .HaveCount(1); }
public void MustBeValidStatusTransition_Invalid_ReturnsError(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() .ContainSingle(x => x.ErrorMessage == "Invalid Status transition") .And .HaveCount(1); }
public void MustBeValidStatusTransition_FinalState_ReturnsError( #region params [Values( SolutionStatus.Approved, SolutionStatus.Failed)] SolutionStatus oldStatus, [Values( SolutionStatus.Failed, SolutionStatus.Draft, SolutionStatus.Registered, SolutionStatus.CapabilitiesAssessment, SolutionStatus.StandardsCompliance, SolutionStatus.SolutionPage, SolutionStatus.FinalApproval, SolutionStatus.Approved)] SolutionStatus newStatus, [Values( Roles.Admin, Roles.Buyer, Roles.Supplier)] #endregion 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() .ContainSingle(x => x.ErrorMessage == "Invalid Status transition") .And .HaveCount(1); }