public async Task ExistingPerson_Update_Updated()
        {
            //Arrange
            const string updatedValue = "Updated";
            var          unitOfWork   = await SingleKeyRepositoryArranger.TryGetUnitOfWorkRepositoryAsync().ConfigureAwait(false);

            var person = await CreateAndCommitPersonAsync(unitOfWork).ConfigureAwait(false);

            var existingEntityId = person.Id;

            //Act
            var updateOpRes = await unitOfWork.Repository.TryUpdateAsync(existingEntityId,
                                                                         p =>
            {
                p.FirstName = updatedValue;
                p.LastName  = updatedValue;
            }).ConfigureAwait(false);

            //Assert
            Assert.IsTrue(updateOpRes, updateOpRes.ErrorMessage);
            var getOpRes = await unitOfWork.Repository.TryGetSingleAsync(existingEntityId)
                           .ConfigureAwait(false);

            Assert.AreEqual(getOpRes.Value.FirstName, updatedValue);
            Assert.AreEqual(getOpRes.Value.LastName, updatedValue);
        }
Ejemplo n.º 2
0
        public async Task MultpliplePeopleMatchingFilter_GetMultipleByFilterWithOrderBy_AllMatchingFilterResultsReturnedOrdered()
        {
            //Arrange
            const byte numberOfPeople = 10;
            const byte minimalAge     = 10;
            var        repository     = await SingleKeyRepositoryArranger.TryGetRepositoryAsync().ConfigureAwait(false);

            var localRepo = new List <SingleKeyPerson>(numberOfPeople);

            for (var i = 0; i < numberOfPeople; i++)
            {
                var  postfix = (i + 1).ToString();
                byte age     = (byte)(i + minimalAge);
                var  person  = SingleKeyRepositoryArranger.CreatePerson(age, postfix, postfix);
                localRepo.Add(person);
                var addOpRes = await repository.TryAddAsync(person)
                               .ConfigureAwait(false);

                Assert.IsTrue(addOpRes, addOpRes.ErrorMessage);
            }

            //Act
            var getOpRes = await repository.TryGetMultipleAsync(p => p.Age >= minimalAge,
                                                                orderBy : people => people.OrderBy(p => p.Age))
                           .ConfigureAwait(false);

            //Assert
            Assert.IsTrue(getOpRes, getOpRes.ErrorMessage);
            Assert.AreEqual(numberOfPeople, getOpRes.Value.Items.Count);
            Assert.IsTrue(localRepo.OrderBy(p => p.Age).SequenceEqual(getOpRes.Value.Items));
        }
        public async Task ExistingPerson_Update_Updated()
        {
            //Arrange
            const string updatedValue = "Updated";
            var          repository   = await SingleKeyRepositoryArranger.TryGetRepositoryAsync().ConfigureAwait(false);

            var person   = SingleKeyRepositoryArranger.CreatePerson();
            var addOpRes = await repository.TryAddAsync(person)
                           .ConfigureAwait(false);

            var existingEntityId = addOpRes.Value.Id;

            Assert.IsTrue(addOpRes, addOpRes.ErrorMessage);
            var getOpRes = await repository.TryGetSingleAsync(existingEntityId)
                           .ConfigureAwait(false);

            Assert.IsTrue(getOpRes, getOpRes.ErrorMessage);
            Assert.AreEqual(getOpRes.Value, addOpRes.Value);

            //Act
            var updateOpRes = await repository.TryUpdateAsync(existingEntityId,
                                                              p =>
            {
                p.FirstName = updatedValue;
                p.LastName  = updatedValue;
            }).ConfigureAwait(false);

            //Assert
            Assert.IsTrue(updateOpRes, updateOpRes.ErrorMessage);
            getOpRes = await repository.TryGetSingleAsync(existingEntityId).ConfigureAwait(false);

            Assert.AreEqual(getOpRes.Value.FirstName, updatedValue);
            Assert.AreEqual(getOpRes.Value.LastName, updatedValue);
        }
        private static async Task <Entities.SingleKeyPerson> CreateAndCommitPersonAsync(
            IUnitOfWorkRepositoryFor <int, SingleKeyPerson> unitOfWork)
        {
            var person   = SingleKeyRepositoryArranger.CreatePerson();
            var addOpRes = await unitOfWork.Repository.TryAddAsync(person);

            Assert.IsTrue(addOpRes, addOpRes.ErrorMessage);
            var commitOpRes = await unitOfWork.TryCommitChangesAsync().ConfigureAwait(false);

            Assert.IsTrue(commitOpRes, commitOpRes.ErrorMessage);
            return(person);
        }
        public async Task NonExistingPerson_Add_Added()
        {
            //Arrange
            var repository = await SingleKeyRepositoryArranger.TryGetRepositoryAsync().ConfigureAwait(false);

            var person = SingleKeyRepositoryArranger.CreatePerson();

            //Act
            var opRes = await repository.TryAddAsync(person)
                        .ConfigureAwait(false);

            //Assert
            Assert.IsTrue(opRes, opRes.ErrorMessage);
        }
        public async Task NonExistingPerson_Add_Added()
        {
            //Arrange
            var unitOfWork = await SingleKeyRepositoryArranger.TryGetUnitOfWorkRepositoryAsync().ConfigureAwait(false);

            var person = SingleKeyRepositoryArranger.CreatePerson();

            //Act
            var addOpRes = await unitOfWork.Repository.TryAddAsync(person);

            var saveOpRes = await unitOfWork.TryCommitChangesAsync().ConfigureAwait(false);

            //Assert
            Assert.IsTrue(addOpRes, addOpRes.ErrorMessage);
            Assert.IsTrue(saveOpRes, saveOpRes.ErrorMessage);
        }
Ejemplo n.º 7
0
        public async Task ExistingPerson_GetSingle_ReturnedExistingPerson()
        {
            //Arrange
            var repository = await SingleKeyRepositoryArranger.TryGetRepositoryAsync().ConfigureAwait(false);

            var person   = SingleKeyRepositoryArranger.CreatePerson();
            var addOpRes = await repository.TryAddAsync(person)
                           .ConfigureAwait(false);

            Assert.IsTrue(addOpRes, addOpRes.ErrorMessage);

            //Act
            var getOpRes = await repository.TryGetSingleAsync(addOpRes.Value.Id)
                           .ConfigureAwait(false);

            //Assert
            Assert.IsTrue(getOpRes, getOpRes.ErrorMessage);
            Assert.AreEqual(getOpRes.Value, addOpRes.Value);
        }
        public async Task GetMultipleWithPaging_SingleItemPerPage_ExpectedNumberOfPagesWithResultsReturned()
        {
            //Arrange
            const byte numberOfPeople = 10;
            const byte minimalAge     = 10;
            var        repository     = await SingleKeyRepositoryArranger
                                        .TryGetRepositoryAsync()
                                        .ConfigureAwait(false);

            for (var i = 0; i < numberOfPeople; i++)
            {
                var  postfix  = (i + 1).ToString();
                byte age      = (byte)(i + minimalAge);
                var  person   = SingleKeyRepositoryArranger.CreatePerson(age, postfix, postfix);
                var  addOpRes = await repository.TryAddAsync(person)
                                .ConfigureAwait(false);

                Assert.IsTrue(addOpRes, addOpRes.ErrorMessage);
            }

            const int itemsPerPage         = 1;
            int       expctedNumberOfPages = 10;
            int       currentPage          = 1;

            for (int i = 0; i < expctedNumberOfPages; i++)
            {
                //Act
                var getOpRes = await repository.TryGetMultipleAsync(
                    p => p.Age >= minimalAge,
                    pagingParams : new Storage.Common.DataTypes.PagingParams(currentPage, itemsPerPage))
                               .ConfigureAwait(false);

                ++currentPage;

                //Assert
                Assert.IsTrue(getOpRes, getOpRes.ErrorMessage);
                Assert.AreEqual(getOpRes.Value.ItemsPerPage, itemsPerPage);
                Assert.AreEqual(getOpRes.Value.TotalNumberOfPages, expctedNumberOfPages);
                Assert.AreEqual(getOpRes.Value.Items.Count, itemsPerPage);
                Assert.AreEqual(getOpRes.Value.TotalNumberOfItems, numberOfPeople);
            }
        }
        public async Task ExistingPerson_Get_ReturnedExistingPerson()
        {
            //Arrange
            var unitOfWork = await SingleKeyRepositoryArranger.TryGetUnitOfWorkRepositoryAsync().ConfigureAwait(false);

            var person   = SingleKeyRepositoryArranger.CreatePerson();
            var addOpRes = await unitOfWork.Repository.TryAddAsync(person);

            Assert.IsTrue(addOpRes, addOpRes.ErrorMessage);
            var commitOpRes = await unitOfWork.TryCommitChangesAsync().ConfigureAwait(false);

            Assert.IsTrue(commitOpRes, commitOpRes.ErrorMessage);

            //Act
            var getOpRes = await unitOfWork.Repository.TryGetSingleAsync(person.Id)
                           .ConfigureAwait(false);

            //Assert
            Assert.IsTrue(getOpRes, getOpRes.ErrorMessage);
            Assert.AreEqual(getOpRes.Value, person);
        }
        public async Task ExistingPerson_Remove_Removed()
        {
            //Arrange
            var repository = await SingleKeyRepositoryArranger.TryGetRepositoryAsync().ConfigureAwait(false);

            var person   = SingleKeyRepositoryArranger.CreatePerson();
            var addOpRes = await repository.TryAddAsync(person)
                           .ConfigureAwait(false);

            var existingEntityId = addOpRes.Value.Id;

            //Act
            var removeOpRes = await repository.TryRemoveAsync(existingEntityId)
                              .ConfigureAwait(false);

            //Assert
            Assert.IsTrue(removeOpRes, removeOpRes.ErrorMessage);
            var getOpRes = await repository.TryGetSingleAsync(existingEntityId).ConfigureAwait(false);

            Assert.IsFalse(getOpRes);
        }
        public async Task ExistingPerson_Remove_Removed()
        {
            //Arrange
            var unitOfWork = await SingleKeyRepositoryArranger.TryGetUnitOfWorkRepositoryAsync().ConfigureAwait(false);

            var person = await CreateAndCommitPersonAsync(unitOfWork).ConfigureAwait(false);

            var existingEntityId = person.Id;

            //Act
            var removeOpRes = await unitOfWork.Repository.TryRemoveAsync(existingEntityId)
                              .ConfigureAwait(false);

            var commitOpRes = await unitOfWork.TryCommitChangesAsync().ConfigureAwait(false);

            //Assert
            Assert.IsTrue(commitOpRes, commitOpRes.ErrorMessage);
            Assert.IsTrue(removeOpRes, removeOpRes.ErrorMessage);
            var getOpRes = await unitOfWork.Repository.TryGetSingleAsync(existingEntityId)
                           .ConfigureAwait(false);

            Assert.IsFalse(getOpRes);
        }