private void SetupPatientRepository(CareContextRepresentation alreadyLinked, CareContextRepresentation unlinkedCareContext) { var testPatient = new Patient { PhoneNumber = phoneNumber, Uuid = openMrsPatientReferenceNumber, Identifier = openMrsPatientIdentifier, Gender = Faker().PickRandom <Gender>(), Name = name, CareContexts = new[] { alreadyLinked, unlinkedCareContext } }; patientRepository.Setup(x => x.PatientWithAsync(testPatient.Identifier)) .ReturnsAsync(Option.Some(testPatient)); }
private async void ShouldReturnPatientForAlreadyLinkedPatient() { var alreadyLinked = new CareContextRepresentation(Faker().Random.Uuid().ToString(), Faker().Random.String()); var unlinkedCareContext = new List <CareContextRepresentation> { new CareContextRepresentation(Faker().Random.Uuid().ToString(), Faker().Random.String()) }; var expectedPatient = BuildExpectedPatientByExpectedMatchTypes( expectedCareContextRepresentation: unlinkedCareContext, expectedMatchTypes: Match.ConsentManagerUserId); var discoveryRequest = discoveryRequestBuilder.Build(); SetupPatientRepository(alreadyLinked, unlinkedCareContext.First()); SetupLinkRepositoryWithLinkedPatient(alreadyLinked, openMrsPatientIdentifier); var(discoveryResponse, error) = await patientDiscovery.PatientFor(discoveryRequest); discoveryResponse.Patient.Should().BeEquivalentTo(expectedPatient); discoveryRequestRepository.Verify( x => x.Add(It.Is <HipService.Discovery.Model.DiscoveryRequest>( r => r.TransactionId == transactionId && r.ConsentManagerUserId == consentManagerUserId)), Times.Once); error.Should().BeNull(); }
private void SetupLinkRepositoryWithLinkedPatient( CareContextRepresentation linkedCareContextRepresentation, params string[] patientIds) { var linkedCareContexts = linkedCareContextRepresentation switch { null => new List <CareContextRepresentation> { new CareContextRepresentation(Faker().Random.Uuid().ToString(), Faker().Random.String()) }, _ => new List <CareContextRepresentation> { linkedCareContextRepresentation } }; var linkedAccounts = patientIds.Select(p => new LinkedAccounts(p, Faker().Random.Hash(), consentManagerUserId, It.IsAny <string>(), linkedCareContexts.Select(c => c.ReferenceNumber).ToList()) ); linkPatientRepository.Setup(e => e.GetLinkedCareContexts(consentManagerUserId)) .ReturnsAsync(new Tuple <IEnumerable <LinkedAccounts>, Exception>(linkedAccounts, null)); }
private async void ShouldReturnPatientForAlreadyLinkedPatient() { var patientDiscovery = new PatientDiscovery( matchingRepository.Object, discoveryRequestRepository.Object, linkPatientRepository.Object, patientRepository.Object, logger.Object); var phoneNumber = Faker().Phone.PhoneNumber(); var verifiedIdentifiers = new[] { new Identifier(IdentifierType.MOBILE, phoneNumber) }; var unverifiedIdentifiers = new[] { new Identifier(IdentifierType.MR, Faker().Random.String()) }; var patientId = Faker().Random.String(); var name = Faker().Name.FullName(); var alreadyLinked = new CareContextRepresentation(Faker().Random.Uuid().ToString(), Faker().Random.String()); var unlinkedCareContext = new CareContextRepresentation(Faker().Random.Uuid().ToString(), Faker().Random.String()); var expectedPatient = new PatientEnquiryRepresentation( patientId, name, new[] { unlinkedCareContext }, new[] { Match.ConsentManagerUserId.ToString() }); var transactionId = Faker().Random.String(); var patientRequest = new PatientEnquiry(patientId, verifiedIdentifiers, unverifiedIdentifiers, name, HipLibrary.Patient.Model.Gender.M, 2019); var discoveryRequest = new DiscoveryRequest(patientRequest, RandomString(), transactionId, DateTime.Now); var sessionId = Faker().Random.Hash(); var linkedCareContext = new[] { alreadyLinked.ReferenceNumber }; var testLinkAccounts = new LinkedAccounts(patientId, sessionId, Faker().Random.Hash(), It.IsAny <string>(), linkedCareContext.ToList()); var testPatient = new HipLibrary.Patient.Model.Patient { PhoneNumber = phoneNumber, Identifier = patientId, Gender = Faker().PickRandom <HipLibrary.Patient.Model.Gender>(), Name = name, CareContexts = new[] { alreadyLinked, unlinkedCareContext } }; linkPatientRepository.Setup(e => e.GetLinkedCareContexts(patientId)) .ReturnsAsync(new Tuple <IEnumerable <LinkedAccounts>, Exception>( new List <LinkedAccounts> { testLinkAccounts }, null)); patientRepository.Setup(x => x.PatientWith(testPatient.Identifier)) .Returns(Option.Some(testPatient)); var(discoveryResponse, error) = await patientDiscovery.PatientFor(discoveryRequest); discoveryResponse.Patient.Should().BeEquivalentTo(expectedPatient); discoveryRequestRepository.Verify( x => x.Add(It.Is <HipService.Discovery.Model.DiscoveryRequest>( r => r.TransactionId == transactionId && r.ConsentManagerUserId == patientId)), Times.Once); error.Should().BeNull(); }