private string AddCrmContactIdForResident(Resident person)
        {
            var externalSystemLookup = new ExternalSystemLookup
            {
                Name = "CRM"
            };

            ResidentContactContext.ExternalSystemLookups.Add(externalSystemLookup);
            ResidentContactContext.SaveChanges();
            var externalLink = new ExternalSystemId
            {
                ResidentId             = person.Id,
                ExternalIdName         = "ContactId",
                ExternalSystemLookupId = externalSystemLookup.Id,
                ExternalIdValue        = _fixture.Create <string>()
            };

            ResidentContactContext.ExternalSystemIds.Add(externalLink);
            ResidentContactContext.SaveChanges();
            return(externalLink.ExternalIdValue);
        }
        public static ExternalSystemId AddCrmContactIdForResidentId(ResidentContactContext context, int residentId)
        {
            var fixture = new Fixture();
            var externalSystemLookup = new ExternalSystemLookup
            {
                Name = "CRM"
            };

            context.ExternalSystemLookups.Add(externalSystemLookup);
            context.SaveChanges();
            var externalLink = new ExternalSystemId
            {
                ResidentId             = residentId,
                ExternalIdName         = "ContactId",
                ExternalSystemLookupId = externalSystemLookup.Id,
                ExternalIdValue        = fixture.Create <string>()
            };

            context.ExternalSystemIds.Add(externalLink);
            context.SaveChanges();
            return(externalLink);
        }
        public async Task ShouldReturn201WhenNewResidentRecordIsInserted()
        {
            var externalSystemLookup = new ExternalSystemLookup
            {
                Name = _faker.Random.Word()
            };

            ResidentContactContext.ExternalSystemLookups.Add(externalSystemLookup);
            ResidentContactContext.SaveChanges();

            var request = new InsertResidentRequest
            {
                FirstName          = _faker.Random.Word(),
                LastName           = _faker.Random.Word(),
                DateOfBirth        = _faker.Date.Past(),
                ExternalReferences = new List <InsertExternalReferenceRequest> {
                    new InsertExternalReferenceRequest {
                        ExternalReferenceValue = _faker.Random.Word(),
                        ExternalReferenceName  = _faker.Random.Word(),
                        ExternalSystemId       = externalSystemLookup.Id
                    }
                }
            };

            var url = new Uri("/api/v1/residents", UriKind.Relative);

            using var requestContent =
                      new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
            var response = await Client.PostAsync(url, requestContent).ConfigureAwait(true);

            var content = response.Content.ReadAsStringAsync().Result;
            var insertResidentResponse = JsonConvert.DeserializeObject <InsertResidentResponse>(content);

            response.StatusCode.Should().Be(201);
            CheckResidentHasBeenInserted(insertResidentResponse.ResidentId, request);
        }