예제 #1
0
        public void StoresConsentHeaderWhenAddingConsent()
        {
            var subjectIdentifier = Random.String();

            var(personId, studySubjectEntity, studySubject) = CreateStudySubject(subjectIdentifier);

            var dateGiven = Random.Date().Date;


            var consent = CreateConsentRepository(updateContext)
                          .AddConsent(
                new Common.Consent.Consent(studySubject, dateGiven, personId, null)
                );

            updateContext.SaveChanges();


            var consentEntity = readContext.Set <ConsentEntity>()
                                .Include(_ => _.GivenBy)
                                .Include(_ => _.StudySubject)
                                .ThenInclude(_ => _.Study)
                                .SingleOrDefault(_ => _.Id == consent.Id);

            Assert.Equal(studySubjectEntity.Id, consentEntity.StudySubject.Id);
            Assert.Equal(personId.Id, consentEntity.GivenBy.Id);
            Assert.Equal(dateGiven, consentEntity.DateProvided);
            Assert.Null(consentEntity.DateWithdrawn);
        }
        public void SavesConsent()
        {
            var consentContext = Server.Host.Services.GetService <ConsentContext>();

            var study = consentContext.Add(new StudyEntity {
                Name = Random.String()
            }).Entity;
            var person = consentContext.Add(new PersonEntity()).Entity;

            consentContext.SaveChanges();

            var result = ApiClient.PutConsent(
                new ConsentSpecification
            {
                StudyId           = study.Id,
                DateGiven         = Random.Date().Date,
                GivenBy           = person.Id,
                PersonId          = person.Id,
                SubjectIdentifier = Random.String(15),
                Evidence          = new []
                {
                    Evidences.ClientMedwayDto(status: "Competent", givenBy: "Self", takenBy: "Jackson Pollock"),
                }
            });

            Assert.NotNull(result);
            var newConsentId  = Assert.IsType <long>(result);
            var consentEntity = consentContext.Set <ConsentEntity>()
                                .Include(_ => _.StudySubject)
                                .ThenInclude(_ => _.Study)
                                .Include(_ => _.StudySubject)
                                .ThenInclude(_ => _.Person)
                                .Include(_ => _.GivenBy)
                                .Single(_ => _.Id == newConsentId);

            Assert.NotNull(consentEntity);

            var evidence = consentContext.Set <GivenEvidenceEntity>().SingleOrDefault(_ => _.Consent.Id == newConsentId);

            using (new AssertionScope())
            {
                evidence.Should().NotBeNull();
                evidence.Value.Should().Be(
                    "<medway><competent-status>Competent</competent-status><consent-given-by>Self</consent-given-by><consent-taken-by>Jackson Pollock</consent-taken-by></medway>");
                evidence.Type.Should().Be("medway");
            }
        }
예제 #3
0
        public void StoresConsentGivenEvidenceWhenAddingConsent()
        {
            var subjectIdentifier = Random.String();

            var(personId, _, studySubject) = CreateStudySubject(subjectIdentifier);

            var dateGiven = Random.Date().Date;


            var evidence           = Evidences.MedwayEvidence(competencyStatus: "Competent", takenBy: "Nurse Randall");
            var marshalledEvidence =
                new CompositeIdentifierXmlMarshaller <Evidence, EvidenceDefinition>(KnownEvidence.Medway)
                .MarshallToXml(evidence)
                .ToString(SaveOptions.DisableFormatting);

            var consent = CreateConsentRepository(updateContext)
                          .AddConsent(
                new Common.Consent.Consent(studySubject, dateGiven, personId, new [] { evidence })
                );

            updateContext.SaveChanges();


            var savedConsent = readContext.Set <ConsentEntity>().AsNoTracking()
                               .Where(_ => _.Id == consent.Id)
                               .Include(_ => _.GivenEvidence)
                               .SingleOrDefault();

            savedConsent.Should().NotBeNull();
            savedConsent.GivenEvidence.Should().ContainSingle();
            var storedEvidence = savedConsent.GivenEvidence.SingleOrDefault();

            storedEvidence.Should().NotBeNull().And.BeOfType <GivenEvidenceEntity>();

            Assert.Equal(KnownEvidence.Medway.SystemName, storedEvidence.Type);

            Assert.Equal(marshalledEvidence,
                         storedEvidence.Value);
            Assert.NotNull(storedEvidence.Consent);
        }