Пример #1
0
        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);
        }
Пример #3
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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();
        }
Пример #14
0
        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());
        }
Пример #19
0
        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);
        }