public void Filter_Supplier_Returns_OwnNHSD() { var orgId = Guid.NewGuid().ToString(); var org = Creator.GetOrganisation(id: orgId, primaryRoleId: PrimaryRole.ApplicationServiceProvider); var otherOrgId = Guid.NewGuid().ToString(); var otherOrg = Creator.GetOrganisation(id: otherOrgId, primaryRoleId: PrimaryRole.ApplicationServiceProvider); var nhsdOrgId = Guid.NewGuid().ToString(); var nhsd = Creator.GetOrganisation(id: nhsdOrgId, primaryRoleId: PrimaryRole.GovernmentDepartment); var cont1 = Creator.GetContact(orgId: orgId); var cont2 = Creator.GetContact(orgId: orgId); var cont3 = Creator.GetContact(orgId: otherOrgId); var cont4 = Creator.GetContact(orgId: nhsdOrgId); _organisationDatastore.Setup(x => x.ByContact(cont1.Id)).Returns(org); _organisationDatastore.Setup(x => x.ByContact(cont2.Id)).Returns(org); _organisationDatastore.Setup(x => x.ByContact(cont3.Id)).Returns(otherOrg); _organisationDatastore.Setup(x => x.ByContact(cont4.Id)).Returns(nhsd); var ctx = Creator.GetContext(orgId: orgId, role: Roles.Supplier); _context.Setup(c => c.HttpContext).Returns(ctx); var filter = new ContactsFilter(_context.Object, _organisationDatastore.Object); var contacts = new[] { cont1, cont2, cont3, cont4 }; var res = filter.Filter(contacts); res.Should().BeEquivalentTo(new[] { cont1, cont2, cont4 }); }
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 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 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 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 Filter_None_Returns_All() { var filter = new ContactsFilter(); var contacts = new[] { Creator.GetContact(), Creator.GetContact(), Creator.GetContact() }; var res = filter.Filter(contacts); res.Should().BeEquivalentTo(contacts); }
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 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 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 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 Filter_NonSupplier_Returns_All(string role) { var ctx = Creator.GetContext(role: role); _context.Setup(c => c.HttpContext).Returns(ctx); var filter = new ContactsFilter(_context.Object, _organisationDatastore.Object); var contacts = new[] { Creator.GetContact(), Creator.GetContact(), Creator.GetContact() }; var res = filter.Filter(contacts); res.Should().BeEquivalentTo(contacts); }
public void ContactMustBeSameOrganisation_Same_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 contact = Creator.GetContact(orgId: orgId); var claim = Creator.GetClaimsBase(ownerId: contact.Id); _contactsDatastore.Setup(x => x.ById(contact.Id)).Returns(contact); validator.OwnerMustBeSameOrganisation(); var valres = validator.Validate(claim); valres.Errors.Should().BeEmpty(); }
public void Create_CallsValidator_WithRuleset() { _context.Setup(x => x.HttpContext).Returns(Creator.GetContext()); _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact()); var logic = new DummyEvidenceLogicBase(_modifier.Object, _datastore.Object, _contacts.Object, _validator.Object, _filter.Object, _context.Object); var evidence = Creator.GetEvidenceBase(); var valres = new ValidationResult(); _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres); logic.Create(evidence); _validator.Verify(x => x.ValidateAndThrowEx( It.Is <DummyEvidenceBase>(ev => ev == evidence), It.Is <string>(rs => rs == nameof(IEvidenceLogic <EvidenceLogicBase <EvidenceBase> > .Create))), Times.Once()); }
public void Update_Calls_Notifier_With_NewEntity() { var logic = Create(); var soln = Creator.GetSolution(); var ctx = Creator.GetContext(); var contact = Creator.GetContact(); _context.Setup(c => c.HttpContext).Returns(ctx); _contacts.Setup(c => c.ByEmail(ctx.Email())).Returns(contact); var valres = new ValidationResult(); _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres); logic.Update(soln); _notifier.Verify(x => x.Notify(It.Is <ChangeRecord <Solutions> >(cr => cr.NewVersion == soln)), Times.Once); }
public void Update_Calls_Modifier() { var logic = Create(); var soln = Creator.GetSolution(); var ctx = Creator.GetContext(); var contact = Creator.GetContact(); _context.Setup(c => c.HttpContext).Returns(ctx); _contacts.Setup(c => c.ByEmail(ctx.Email())).Returns(contact); 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 Create_CallsValidator_WithRuleset() { var logic = Create(); var soln = Creator.GetSolution(); _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.Create(soln); _validator.Verify(x => x.ValidateAndThrowEx( It.Is <Solutions>(s => s == soln), It.Is <string>(rs => rs == nameof(ISolutionsLogic.Create))), Times.Once()); }
public void Update_CallsValidator_WithRuleset() { var logic = new SolutionsLogic(_modifier.Object, _datastore.Object, _contacts.Object, _context.Object, _validator.Object, _filter.Object, _evidenceBlobStoreLogic.Object); var soln = Creator.GetSolution(); _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); _validator.Verify(x => x.ValidateAndThrowEx( It.Is <Solutions>(s => s == soln), It.Is <string>(rs => rs == nameof(ISolutionsLogic.Update))), Times.Once()); }
public void ContactMustBeSameOrganisation_Different_ReturnsError() { 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 contact = Creator.GetContact(orgId: orgId); var claim = Creator.GetClaimsBase(); _contactsDatastore.Setup(x => x.ById(contact.Id)).Returns(contact); validator.OwnerMustBeSameOrganisation(); var valres = validator.Validate(claim); valres.Errors.Should() .ContainSingle(x => x.ErrorMessage == "Contact must be from organisation") .And .HaveCount(1); }