public void MustBePending_NonDraft_ReturnsError( [Values( Roles.Buyer, Roles.Supplier, Roles.Admin )] string role, [Values( CapabilitiesImplementedStatus.Submitted, CapabilitiesImplementedStatus.Remediation, CapabilitiesImplementedStatus.Approved, CapabilitiesImplementedStatus.Rejected )] CapabilitiesImplementedStatus status) { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role)); var validator = new CapabilitiesImplementedValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object); var claim = Creator.GetCapabilitiesImplemented(status: status); validator.MustBePending(); var valres = validator.Validate(claim); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Only supplier can delete a draft claim") .And .HaveCount(1); }
public void Filter_Supplier_Returns_OwnNHSD() { var orgId = Guid.NewGuid().ToString(); var org = Creator.GetOrganisation(id: orgId, primaryRoleId: PrimaryRole.ApplicationServiceProvider); _organisationDatastore.Setup(x => x.ById(orgId)).Returns(org); var otherOrgId = Guid.NewGuid().ToString(); var otherOrg = Creator.GetOrganisation(id: otherOrgId, primaryRoleId: PrimaryRole.ApplicationServiceProvider); _organisationDatastore.Setup(x => x.ById(otherOrgId)).Returns(otherOrg); var nhsdOrgId = Guid.NewGuid().ToString(); var nhsd = Creator.GetOrganisation(id: nhsdOrgId, primaryRoleId: PrimaryRole.GovernmentDepartment); _organisationDatastore.Setup(x => x.ById(nhsdOrgId)).Returns(nhsd); var ctx = Creator.GetContext(orgId: orgId, role: Roles.Supplier); _context.Setup(c => c.HttpContext).Returns(ctx); var filter = new ContactFilter(_context.Object, _organisationDatastore.Object); var cont1 = GetContact(orgId: orgId); var cont2 = GetContact(orgId: orgId); var cont3 = GetContact(orgId: otherOrgId); var cont4 = GetContact(orgId: nhsdOrgId); var contacts = new[] { cont1, cont2, cont3, cont4 }; var res = filter.Filter(contacts.AsQueryable()); res.Should().BeEquivalentTo(new[] { cont1, cont2, cont4 }); }
public void Validate_Update_FinalState_ReturnsError( [Values( CapabilitiesImplementedStatus.Approved, CapabilitiesImplementedStatus.Rejected)] CapabilitiesImplementedStatus oldStatus, [Values( CapabilitiesImplementedStatus.Draft, CapabilitiesImplementedStatus.Submitted, CapabilitiesImplementedStatus.Remediation, CapabilitiesImplementedStatus.Approved, CapabilitiesImplementedStatus.Rejected)] CapabilitiesImplementedStatus newStatus, [Values( Roles.Admin, Roles.Buyer, Roles.Supplier)] string role) { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role)); var validator = new CapabilitiesImplementedValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object); var oldClaim = Creator.GetCapabilitiesImplemented(status: oldStatus); var newClaim = Creator.GetCapabilitiesImplemented(status: newStatus); _claimDatastore.Setup(x => x.ById(newClaim.Id)).Returns(oldClaim); validator.MustBeValidStatusTransition(); var valres = validator.Validate(newClaim); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Invalid Status transition") .And .HaveCount(1); }
public void Filter_Supplier_Returns_NotOther() { var orgId = Guid.NewGuid().ToString(); var ctx = Creator.GetContext(orgId: orgId, role: Roles.Supplier); _context.Setup(c => c.HttpContext).Returns(ctx); var filter = new FrameworkFilter(_context.Object, _solutionDatastore.Object, _frameworkDatastore.Object); var fw1 = GetFramework(); var fw2 = GetFramework(); var fw3 = GetFramework(); var frameworks = new[] { fw1, fw2, fw3 }; var soln1 = Creator.GetSolution(orgId: orgId); var soln2 = Creator.GetSolution(orgId: orgId); var soln3 = Creator.GetSolution(); _solutionDatastore .Setup(x => x.ByOrganisation(orgId)) .Returns(new[] { soln1, soln2 }.AsQueryable()); _frameworkDatastore .Setup(x => x.BySolution(soln1.Id)) .Returns(new[] { fw1 }.AsQueryable()); _frameworkDatastore .Setup(x => x.BySolution(soln2.Id)) .Returns(new[] { fw1, fw2 }.AsQueryable()); _frameworkDatastore .Setup(x => x.BySolution(soln3.Id)) .Returns(new[] { fw1, fw2, fw3 }.AsQueryable()); var res = filter.Filter(frameworks.AsQueryable()); res.Should().BeEquivalentTo(new[] { fw1, fw2 }); }
public void ContextOrganisationId_Returns_Expected(string orgId) { var ctx = Creator.GetContext(orgId: orgId); _context.Setup(c => c.HttpContext).Returns(ctx); var ctxOrgId = _context.Object.OrganisationId(); ctxOrgId.Should().Be(orgId); }
public void HasRole_Returns_Expected(string role) { var ctx = Creator.GetContext(role: role); _context.Setup(c => c.HttpContext).Returns(ctx); var isAdmin = _context.Object.HasRole(role); isAdmin.Should().BeTrue(); }
public void ContextEmail_Returns_Expected(string email) { var ctx = Creator.GetContext(email: email); _context.Setup(c => c.HttpContext).Returns(ctx); var ctxOrgId = _context.Object.Email(); ctxOrgId.Should().Be(email); }
public void MustBeSupplier_Supplier_Succeeds(string role) { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role)); var validator = new DummyValidatorBase(_context.Object, _logger.Object); var evidence = Creator.GetEvidenceBase(); validator.MustBeSupplier(); var valres = validator.Validate(evidence); valres.Errors.Should().BeEmpty(); }
public void ForCreate_SetsOriginalDate_ToUtcNow() { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact()); var modifier = new DummyEvidenceBaseModifier(_context.Object, _contacts.Object); var evidence = Creator.GetEvidenceBase(originalDate: DateTime.MinValue); modifier.ForCreate(evidence); evidence.OriginalDate.Should().BeCloseTo(DateTime.UtcNow); }
public void Validate_Admin_Returns_NoError() { var ctx = Creator.GetContext(role: Roles.Admin); _context.Setup(c => c.HttpContext).Returns(ctx); var validator = new LinkManagerValidator(_context.Object); var valres = validator.Validate(_context.Object); valres.Errors.Should().BeEmpty(); }
public void Validate_Admin_Update_Returns_NoError() { var ctx = Creator.GetContext(role: Roles.Admin); _context.Setup(c => c.HttpContext).Returns(ctx); var validator = new CapabilityValidator(_context.Object); var valres = validator.Validate(new Capability(), ruleSet: nameof(ICapabilityLogic.Update)); valres.Errors.Should().BeEmpty(); }
public void Validate_Admin_Delete_Completes(string role) { var ctx = Creator.GetContext(role: role); _context.Setup(c => c.HttpContext).Returns(ctx); var validator = new ContactValidator(_context.Object); var valres = validator.Validate(new Contact(), ruleSet: nameof(IContactLogic.Delete)); valres.Errors.Should().BeEmpty(); }
public void Validate_Supplier_Returns_Error() { var ctx = Creator.GetContext(role: Roles.Supplier); _context.Setup(c => c.HttpContext).Returns(ctx); var validator = new LinkManagerValidator(_context.Object); var valres = validator.Validate(_context.Object); valres.Errors.Count().Should().Be(1); }
public void ForCreate_SetsCreatedOn_ToUtcNow() { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact()); var modifier = new DummyReviewsBaseModifier(_context.Object, _contacts.Object); var review = Creator.GetReviewsBase(createdOn: DateTime.MinValue); modifier.ForCreate(review); review.CreatedOn.Should().BeCloseTo(DateTime.UtcNow); }
public void MustBePending_Draft_Succeeds(string role) { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role)); var validator = new CapabilitiesImplementedValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object); var claim = Creator.GetCapabilitiesImplemented(status: CapabilitiesImplementedStatus.Draft); validator.MustBePending(); var valres = validator.Validate(claim); valres.Errors.Should().BeEmpty(); }
public void Validate_NonAdmin_Update_Returns_Error(string role) { var ctx = Creator.GetContext(role: role); _context.Setup(c => c.HttpContext).Returns(ctx); var validator = new CapabilityValidator(_context.Object); var valres = validator.Validate(new Capability(), ruleSet: nameof(ICapabilityLogic.Update)); valres.Errors.Count().Should().Be(1); }
public void Validate_NonAdmin_Delete_Returns_Error(string role) { var ctx = Creator.GetContext(role: role); _context.Setup(c => c.HttpContext).Returns(ctx); var validator = new OrganisationValidator(_context.Object); var valres = validator.Validate(new Organisation(), ruleSet: nameof(IOrganisationLogic.Delete)); valres.Errors.Count().Should().Be(1); }
public void ForUpdate_DefaultOriginalDate_SetsOriginalDate_ToUtcNow() { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact()); var modifier = new DummyReviewsBaseModifier(_context.Object, _contacts.Object); var review = Creator.GetReviewsBase(originalDate: default(DateTime)); modifier.ForUpdate(review); review.OriginalDate.Should().BeCloseTo(DateTime.UtcNow); }
public void MustBeAdminOrSupplier_AdminSupplier_Succeeds(string role) { var ctx = Creator.GetContext(role: role); _context.Setup(c => c.HttpContext).Returns(ctx); var validator = new DummyValidatorBase(_context.Object, _logger.Object); validator.MustBeAdminOrSupplier(); var valres = validator.Validate(_context.Object); valres.Errors.Should().BeEmpty(); }
public void ForUpdate_OriginalDate_DoesNotSet_OriginalDate() { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact()); var modifier = new DummyReviewsBaseModifier(_context.Object, _contacts.Object); var originalDate = new DateTime(2006, 2, 20, 6, 3, 0); var review = Creator.GetReviewsBase(originalDate: originalDate); modifier.ForUpdate(review); review.OriginalDate.Should().BeCloseTo(originalDate); }
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 Validate_Buyer_AllOperations_ReturnsError( [ValueSource(nameof(Operations))] string operation ) { var ctx = Creator.GetContext(role: Roles.Buyer); _context.Setup(c => c.HttpContext).Returns(ctx); var validator = new AssessmentMessageValidator(_context.Object); var res = validator.Validate(Creator.GetAssessmentMessage(), ruleSet: operation); res.Errors.Count().Should().Be(1); }
public void Validate_Admin_Succeeds( [ValueSource(nameof(Operations))] string operation) { var ctx = Creator.GetContext(role: Roles.Admin); _context.Setup(c => c.HttpContext).Returns(ctx); var techCont = Creator.GetTechnicalContact(); var validator = new TechnicalContactValidator(_context.Object, _solutionDatastore.Object); var res = validator.Validate(techCont, ruleSet: operation); res.Errors.Should().BeEmpty(); }
public void MustBePending_Draft_ReturnsError(string role) { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role)); var validator = new CapabilitiesImplementedValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object); var claim = Creator.GetCapabilitiesImplemented(status: CapabilitiesImplementedStatus.Draft); validator.MustBePending(); var valres = validator.Validate(claim); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Only supplier can delete a draft claim") .And .HaveCount(1); }
public void Validate_AdminSupplier_BySolutionCreate_ReturnsNoError( [Values(nameof(IAssessmentMessageLogic.BySolution), nameof(IAssessmentMessageLogic.Create))] string operation, [Values(Roles.Admin, Roles.Supplier)] string role ) { var ctx = Creator.GetContext(role: role); _context.Setup(c => c.HttpContext).Returns(ctx); var validator = new AssessmentMessageValidator(_context.Object); var res = validator.Validate(Creator.GetAssessmentMessage(), ruleSet: operation); res.Errors.Should().BeEmpty(); }
public void MustBeValidStatusTransition_Valid_Succeeds(CapabilitiesImplementedStatus oldStatus, CapabilitiesImplementedStatus newStatus, string role) { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role)); var validator = new CapabilitiesImplementedValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object); var oldClaim = Creator.GetCapabilitiesImplemented(status: oldStatus); var newClaim = Creator.GetCapabilitiesImplemented(status: newStatus); _claimDatastore.Setup(x => x.ById(newClaim.Id)).Returns(oldClaim); validator.MustBeValidStatusTransition(); var valres = validator.Validate(newClaim); valres.Errors.Should().BeEmpty(); }
public void MustBeSupplier_NonSupplier_ReturnsError(string role) { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role)); var validator = new DummyValidatorBase(_context.Object, _logger.Object); var evidence = Creator.GetEvidenceBase(); validator.MustBeSupplier(); var valres = validator.Validate(evidence); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Must be supplier") .And .HaveCount(1); }
public void ForCreate_SetsCreatedById() { _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); var modifier = new DummyReviewsBaseModifier(_context.Object, _contacts.Object); var review = Creator.GetReviewsBase(originalDate: DateTime.MinValue); modifier.ForCreate(review); review.CreatedById.Should().Be(contactId); }
public void MustBePending_Draft_Succeeds( [Values(Roles.Supplier)] string role, [Values(StandardsApplicableStatus.Draft, StandardsApplicableStatus.NotStarted)] StandardsApplicableStatus status) { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role)); var validator = new StandardsApplicableValidator(_context.Object, _logger.Object, _claimDatastore.Object, _contactsDatastore.Object, _solutionsDatastore.Object); var claim = Creator.GetStandardsApplicable(status: status); validator.MustBePending(); var valres = validator.Validate(claim); valres.Errors.Should().BeEmpty(); }
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(); }