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); } }
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); } }
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); } }
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); } }
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)); } }
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()); } }
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); } }
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); } }
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); } }
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); } }