public async void UpdateSelectiveAsync_ChangesFieldSubsetOnly()
        {
            //Arrange
            var contextOptions = InMemoryUtils.ProduceFreshDbContextOptions();
            var oldModel       = ResourceUtils.TestSet.First();

            using (var context = new ApplicationDbContext(contextOptions))
            {
                context.Resources.Add(oldModel);
                context.SaveChanges();
            }
            var newModel = ResourceUtils.TestSet.Last();

            //Act
            using (var context = new ApplicationDbContext(contextOptions))
            {
                ITrackEntityRepository <Resource, int, ApplicationUser, string> repo = new ResourcesRepository(context);
                newModel.Id = oldModel.Id;
                await repo.UpdateSelectiveAsync <ResourceTestUpdateSubset>(newModel);
            }

            //Assert
            using (var context = new ApplicationDbContext(contextOptions))
            {
                Assert.NotEqual(oldModel.Title, context.Resources.First().Title);
                Assert.Equal(newModel.Title, context.Resources.First().Title);
                Assert.NotEqual(newModel.Description, context.Resources.First().Description);
            }
        }
        public async void ExistsAsync_ReturnsCorrectBool(int id, bool expected)
        {
            //Arrange
            var options = InMemoryUtils.ProduceFreshDbContextOptions();

            using (var context = new ApplicationDbContext(options))
            {
                context.Resources.AddRange(ResourceUtils.TestSet);

                context.SaveChanges();
            }

            var model = ResourceUtils.TestSet.Any(r => r.Id == id) ? ResourceUtils.TestSet.Single(r => r.Id == id) : new Resource()
            {
                Id = 999
            };

            //Act
            using (var context = new ApplicationDbContext(options))
            {
                ITrackEntityRepository <Resource, int, ApplicationUser, string> repo = new ResourcesRepository(context);
                var resultKeyed = await repo.ExistsAsync(id);

                var resultModeled = await repo.ExistsAsync(model);

                //Assert
                Assert.IsAssignableFrom <bool>(resultKeyed);
                Assert.Equal(expected, resultKeyed);
                Assert.IsAssignableFrom <bool>(resultModeled);
                Assert.Equal(expected, resultModeled);
            }
        }
Пример #3
0
        public async void DeleteAsync_ChangesQuantity()
        {
            //Arrange
            var contextOptions = InMemoryUtils.ProduceFreshDbContextOptions();
            var oldModel       = ResourceUtils.TestSet.First();
            int oldQuantity;

            using (var context = new ApplicationDbContext(contextOptions))
            {
                context.Resources.Add(oldModel);
                context.SaveChanges();
                oldQuantity = context.Resources.Count();
            }

            //Act
            using (var context = new ApplicationDbContext(contextOptions))
            {
                IBasicRepositoryAsync <Resource, int> repo = new ResourcesRepository(context);
                await repo.DeleteAsync(oldModel.Id);
            }

            //Assert
            using (var context = new ApplicationDbContext(contextOptions))
            {
                Assert.Equal(1, oldQuantity);
                Assert.Empty(context.Resources);
            }
        }
Пример #4
0
        public async void UpdateAsync_ChangesFields()
        {
            //Arrange
            var contextOptions = InMemoryUtils.ProduceFreshDbContextOptions();
            var oldModel       = ResourceUtils.TestSet.First();

            using (var context = new ApplicationDbContext(contextOptions))
            {
                context.Resources.Add(oldModel);
                context.SaveChanges();
            }
            var newModel = ResourceUtils.TestSet.Last();

            //Act
            using (var context = new ApplicationDbContext(contextOptions))
            {
                IBasicRepositoryAsync <Resource, int> repo = new ResourcesRepository(context);
                newModel.Id = oldModel.Id;
                await repo.UpdateAsync(newModel);
            }

            //Assert
            using (var context = new ApplicationDbContext(contextOptions))
            {
                Assert.Equal(newModel.Title, context.Resources.First().Title);
                Assert.NotEqual(oldModel.Title, context.Resources.First().Title);
            }
        }
Пример #5
0
        public async void SaveAsync_ChangesQuantity_OnAdd()
        {
            //Arrange
            var contextOptions = InMemoryUtils.ProduceFreshDbContextOptions();

            //Act
            using (var context = new ApplicationDbContext(contextOptions))
            {
                context.Resources.Add(ResourceUtils.TestSet.First());

                IBasicRepositoryAsync <Resource, int> repo = new ResourcesRepository(context);
                await repo.SaveAsync();
            }

            //Assert
            using (var context = new ApplicationDbContext(contextOptions))
            {
                Assert.NotEmpty(context.Resources);
            }
        }
Пример #6
0
        public async void IsActiveAsync_ThrowsNotFound_OnNonExistent()
        {
            //Arrange
            var contextOptions = InMemoryUtils.ProduceFreshDbContextOptions();
            var oldModel       = ResourceUtils.TestSet.First();

            using (var context = new ApplicationDbContext(contextOptions))
            {
                context.Resources.Add(oldModel);
                context.SaveChanges();
            }
            var newModel = ResourceUtils.TestSet.Last();

            using (var context = new ApplicationDbContext(contextOptions))
            {
                IActEntityRepository <Resource, int, ApplicationUser, string> repo = new ResourcesRepository(context);

                //Assert-Act
                await Assert.ThrowsAsync <CurrentEntryNotFoundException>(() => repo.IsActiveAsync(ResourceUtils.NonExistentId));
            }
        }
Пример #7
0
        public async void CreateAsync_ChangesQtyAndSavesModelRight()
        {
            //Arrange
            var options       = InMemoryUtils.ProduceFreshDbContextOptions();
            var expectedCount = 1;
            var addedModel    = ResourceUtils.TestSet.First();

            //Act
            using (var context = new ApplicationDbContext(options))
            {
                IBasicRepositoryAsync <Resource, int> repo = new ResourcesRepository(context);
                await repo.CreateAsync(addedModel);
            }

            //Assert
            using (var context = new ApplicationDbContext(options))
            {
                Assert.Equal(addedModel.Title, context.Resources.First().Title);
                Assert.Equal(expectedCount, context.Resources.Count());
            }
        }
Пример #8
0
        public async void ListActiveAsync_ReturnsActiveResources()
        {
            //Arrange
            var options = InMemoryUtils.ProduceFreshDbContextOptions();

            using (var context = new ApplicationDbContext(options))
            {
                context.Resources.Add(ResourceUtils.TestSet.First(r => r.IsActive == true));
                context.SaveChanges();
            }

            //Act
            using (var context = new ApplicationDbContext(options))
            {
                IActEntityRepository <Resource, int, ApplicationUser, string> repo = new ResourcesRepository(context);
                var result = await repo.ListActiveAsync();

                //Assert
                Assert.NotEmpty(result);
                Assert.IsAssignableFrom <IEnumerable <Resource> >(result);
            }
        }
Пример #9
0
        public async void CountAsync_ReturnsCorrectCount()
        {
            //Arrange
            var options = InMemoryUtils.ProduceFreshDbContextOptions();

            using (var context = new ApplicationDbContext(options))
            {
                context.Resources.AddRange(ResourceUtils.TestSet);
                context.SaveChanges();
            }

            //Act
            using (var context = new ApplicationDbContext(options))
            {
                IActEntityRepository <Resource, int, ApplicationUser, string> repo = new ResourcesRepository(context);
                var result = await repo.CountActiveAsync();

                //Assert
                Assert.IsAssignableFrom <int>(result);
                Assert.Equal(ResourceUtils.TestSet.Count(r => r.IsActive == true), result);
            }
        }
Пример #10
0
        public async void GetAsync_ReturnsResource()
        {
            //Arrange
            var options = InMemoryUtils.ProduceFreshDbContextOptions();
            var oldSet  = ResourceUtils.TestSet;

            using (var context = new ApplicationDbContext(options))
            {
                context.Resources.Add(ResourceUtils.TestSet.First());
                context.SaveChanges();
            }

            //Act
            using (var context = new ApplicationDbContext(options))
            {
                IBasicRepositoryAsync <Resource, int> repo = new ResourcesRepository(context);
                var result = await repo.GetAsync(context.Resources.First().Id);

                //Assert
                Assert.IsAssignableFrom <Resource>(result);
            }
        }
Пример #11
0
        public async void IsActiveAsync_ReturnsCorrectBool(int id, bool expected)
        {
            //Arrange
            var options = InMemoryUtils.ProduceFreshDbContextOptions();

            using (var context = new ApplicationDbContext(options))
            {
                context.Resources.AddRange(ResourceUtils.TestSet);

                context.SaveChanges();
            }

            //Act
            using (var context = new ApplicationDbContext(options))
            {
                IActEntityRepository <Resource, int, ApplicationUser, string> repo = new ResourcesRepository(context);
                var result = await repo.IsActiveAsync(id);

                //Assert
                Assert.IsAssignableFrom <bool>(result);
                Assert.Equal(expected, result);
            }
        }
        public async void UpdateSelectiveAsync_ThrowsNotFound_OnNonExistent()
        {
            //Arrange
            var contextOptions = InMemoryUtils.ProduceFreshDbContextOptions();
            var oldModel       = ResourceUtils.TestSet.First();

            using (var context = new ApplicationDbContext(contextOptions))
            {
                context.Resources.Add(oldModel);
                context.SaveChanges();
            }
            var newModel = ResourceUtils.TestSet.Last();

            using (var context = new ApplicationDbContext(contextOptions))
            {
                ITrackEntityRepository <Resource, int, ApplicationUser, string> repo = new ResourcesRepository(context);
                newModel.Id = ResourceUtils.NonExistentId;

                //Assert-Act
                await Assert.ThrowsAsync <CurrentEntryNotFoundException>(() => repo.UpdateSelectiveAsync <ResourceTestUpdateSubset>(newModel));

                Assert.Equal(oldModel.Title, context.Resources.First().Title);
            }
        }
        public async void ListByUpdater_ReturnsCorrectResources()
        {
            //Arrange
            var options = InMemoryUtils.ProduceFreshDbContextOptions();
            var updater = ResourceUtils.VincentVanGogh;

            using (var context = new ApplicationDbContext(options))
            {
                context.Resources.Add(ResourceUtils.TestSet.First());
                context.SaveChanges();
            }

            //Act
            using (var context = new ApplicationDbContext(options))
            {
                ITrackEntityRepository <Resource, int, ApplicationUser, string> repo = new ResourcesRepository(context);
                var result = await repo.ListByUpdater(updater);

                //Assert
                Assert.NotEmpty(result);
                Assert.IsAssignableFrom <IEnumerable <Resource> >(result);
                Assert.Single(result);
            }
        }