public async Task UpdateSuccessItemTestAsync()
        {
            //Given

            Account testAccount;
            var     repository = new EfCoreAsyncAccountRepository(_databaseFactory);

            using (var efCoreAsyncUnitOfWork = new EfCoreAsyncUnitOfWork <SharedLibraryContext>(_databaseFactory))
            {
                testAccount = await repository.SaveAsync(AccountEntityHelper.CreateEfTestAccount()).ConfigureAwait(true);

                await efCoreAsyncUnitOfWork.CommitAsync().ConfigureAwait(true);

                //When
                testAccount.CompanyName = "Updated account";
                await repository.SaveAsync(testAccount).ConfigureAwait(true);

                await efCoreAsyncUnitOfWork.CommitAsync().ConfigureAwait(true);
            }

            //Then
            var finalRepo   = new EfCoreAsyncAccountRepository(_databaseFactory);
            var itemToCheck = await finalRepo.GetByIdAsync(testAccount.AccountId).ConfigureAwait(true);

            EqualityHelper.PropertyValuesAreEqual(itemToCheck, testAccount, new[] { "LastModified", "Contact" });
        }
        public async Task GetAsyncByIdAsyncExceptionTestAsync()
        {
            //Given
            var repository = new EfCoreAsyncAccountRepository(_databaseFactory);

            //When
            var shouldBeNull = await repository.GetByIdAsync(-1).ConfigureAwait(true);

            //Then
            Assert.IsNull(shouldBeNull, "The item was found when it should have never existed.");
        }
        public async Task RetrieveItemByIdTestAsync()
        {
            //Given
            var repository = new EfCoreAsyncAccountRepository(_databaseFactory);

            using (var efCoreAsyncUnitOfWork = new EfCoreAsyncUnitOfWork <SharedLibraryContext>(_databaseFactory))
            {
                var addedAccount = await repository.SaveAsync(AccountEntityHelper.CreateEfTestAccount()).ConfigureAwait(true);

                await efCoreAsyncUnitOfWork.CommitAsync().ConfigureAwait(true);

                //When
                var retrievedItem = await repository.GetByIdAsync(addedAccount.AccountId).ConfigureAwait(true);

                //Then
                EqualityHelper.PropertyValuesAreEqual(retrievedItem, addedAccount);
            }
        }
        public async Task DeleteAsyncItemSuccessTestAsync()
        {
            //Given
            using (var efCoreAsyncUnitOfWork = new EfCoreAsyncUnitOfWork <SharedLibraryContext>(_databaseFactory))
            {
                //Given
                var repository  = new EfCoreAsyncAccountRepository(_databaseFactory);
                var testAccount = await repository.SaveAsync(AccountEntityHelper.CreateEfTestAccount()).ConfigureAwait(true);

                await efCoreAsyncUnitOfWork.CommitAsync().ConfigureAwait(true);

                //When
                await repository.DeleteAsync(testAccount).ConfigureAwait(true);

                await efCoreAsyncUnitOfWork.CommitAsync().ConfigureAwait(true);

                //Then
                var retrievedAccount = await repository.GetByIdAsync(testAccount.AccountId).ConfigureAwait(true);

                Assert.IsNull(retrievedAccount, "The account was not DeleteAsyncd.");
            }
        }