public async Task TestUpdate_PersonEmail_CheckProperties()
        {
            var    personId = 1;
            Person person   = new Person
            {
                PersonId = personId
            };
            EmailAddressType emailAddressType = new EmailAddressType
            {
                EmailAddressTypeId   = EmailAddressType.Home.Id,
                EmailAddressTypeName = EmailAddressType.Home.Value
            };
            var          creatorId            = 1;
            var          updatorId            = 2;
            var          yesterday            = DateTimeOffset.UtcNow.AddDays(-1.0);
            var          emailAddressId       = 1;
            EmailAddress emailAddressToUpdate = null;

            context.SetupActions.Add(() =>
            {
                emailAddressToUpdate = new EmailAddress
                {
                    EmailAddressId = emailAddressId,
                    Person         = person,
                    PersonId       = person.PersonId
                };
                emailAddressToUpdate.History.CreatedBy = creatorId;
                emailAddressToUpdate.History.RevisedBy = creatorId;
                emailAddressToUpdate.History.CreatedOn = yesterday;
                emailAddressToUpdate.History.RevisedOn = yesterday;
                person.EmailAddresses.Add(emailAddressToUpdate);
                context.EmailAddressTypes.Add(emailAddressType);
                context.People.Add(person);
                context.EmailAddresses.Add(emailAddressToUpdate);
            });
            var updatedEmailModel = new UpdatedEmailAddress(new User(updatorId), emailAddressId, "*****@*****.**", emailAddressType.EmailAddressTypeId, true);

            Action beforeTester = () =>
            {
                Assert.AreEqual(1, context.People.Count());
                Assert.AreEqual(1, context.EmailAddresses.Count());
                Assert.IsNull(emailAddressToUpdate.Address);
            };
            Action afterTester = () =>
            {
                Assert.AreEqual(1, context.People.Count());
                Assert.AreEqual(1, context.EmailAddresses.Count());
                Assert.AreEqual(updatedEmailModel.Audit.User.Id, emailAddressToUpdate.History.RevisedBy);
                DateTimeOffset.UtcNow.Should().BeCloseTo(emailAddressToUpdate.History.RevisedOn, 20000);
                Assert.AreEqual(creatorId, emailAddressToUpdate.History.CreatedBy);
                Assert.AreEqual(yesterday, emailAddressToUpdate.History.CreatedOn);
                Assert.AreEqual(updatedEmailModel.Address, emailAddressToUpdate.Address);
                Assert.AreEqual(updatedEmailModel.IsPrimary, emailAddressToUpdate.IsPrimary);
                Assert.AreEqual(emailAddressType.EmailAddressTypeId, emailAddressToUpdate.EmailAddressTypeId);
            };

            context.Revert();
            beforeTester();
            service.Update(updatedEmailModel);
            afterTester();

            context.Revert();
            beforeTester();
            await service.UpdateAsync(updatedEmailModel);

            afterTester();
        }