public async Task Should_LogErrorToDb_When_UpdateTrainingCatalogThrowAggregateException() { // Arrange var trainingProvider = new TrainingProvider(); var description = "test update"; var mediaPathsContainer = new UpdateService.ServerMediaPathsContainer(); var updateDbContext = Mock.Of <UpdateDbContext>(x => x.UpdateEvents.Add(It.IsAny <UpdateEvent>()) == new UpdateEvent()); Mock.Get(updateDbContext).Setup(x => x.SetStateToDetached(It.IsAny <UpdateEvent>())); var mockContextFromFactory = new Mock <UpdateDbContext>(); mockContextFromFactory.Setup(x => x.SetStateToModified(It.IsAny <UpdateEvent>())); var dbContextFactory = Mock.Of <IDbContextFactory <UpdateDbContext> >(x => x.CreateDbContext() == mockContextFromFactory.Object); var mockTrainingCatalog = new Mock <ITrainingCatalog>(); mockTrainingCatalog.Setup(x => x.UpdateAsync(It.IsAny <UpdateEvent>(), It.IsAny <UpdateDbContext>(), It.IsAny <bool>(), It.IsAny <bool>())).Throws <AggregateException>(); var mockActivator = new Mock <IActivatorProxy>(); mockActivator.Setup(x => x.CreateInstance <ITrainingCatalog>(It.IsAny <string>())) .Returns(mockTrainingCatalog.Object); var sut = new UpdateService(string.Empty, ArchiveDirectoryPath, dbContextFactory, DateTimeProxy.Instance, mockActivator.Object); // Act await sut.UpdateTrainingCatalogAsync(updateDbContext, trainingProvider, description, mediaPathsContainer); // Assert Mock.Get(updateDbContext).Verify(x => x.SaveChangesAsync(), Times.Once); mockTrainingCatalog.Verify(x => x.UpdateAsync(It.IsAny <UpdateEvent>(), It.IsAny <UpdateDbContext>(), It.IsAny <bool>(), It.IsAny <bool>()), Times.Once); mockTrainingCatalog.Verify(x => x.Dispose(), Times.Once); Mock.Get(dbContextFactory).Verify(x => x.CreateDbContext(), Times.Once); mockContextFromFactory.Verify(x => x.SetStateToModified(It.IsAny <UpdateEvent>()), Times.Once()); mockContextFromFactory.Verify(x => x.SaveChanges(), Times.Once); }
public async Task Should_UpdateTrainingCatalog() { // Arrange var trainingProvider = new TrainingProvider(); var description = "test update"; var mediaPathsContainer = new UpdateService.ServerMediaPathsContainer(); var updateDbContext = Mock.Of <UpdateDbContext>(x => x.UpdateEvents.Add(It.IsAny <UpdateEvent>()) == new UpdateEvent() && x.AuthorsResolves.Local == new ObservableCollection <AuthorResolve>()); var mockContext = Mock.Get(updateDbContext); var mockTrainingCatalog = new Mock <ITrainingCatalog>(); var mockActivator = new Mock <IActivatorProxy>(); mockActivator.Setup(x => x.CreateInstance <ITrainingCatalog>(It.IsAny <string>())) .Returns(mockTrainingCatalog.Object); var sut = new UpdateService(string.Empty, ArchiveDirectoryPath, new DbContextFactory <UpdateDbContext>(), DateTimeProxy.Instance, mockActivator.Object); // Act await sut.UpdateTrainingCatalogAsync(mockContext.Object, trainingProvider, description, mediaPathsContainer); // Assert mockContext.Verify(x => x.UpdateEvents.Add(It.IsAny <UpdateEvent>()), Times.Once); mockContext.Verify(x => x.SaveChangesAsync(), Times.Exactly(2)); mockActivator.Verify(x => x.CreateInstance <ITrainingCatalog>(It.IsAny <string>()), Times.Once); mockTrainingCatalog.Verify(x => x.Initialize(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <LocationType>(), It.IsAny <IMediaPath>(), It.IsAny <string>()), Times.Once()); mockTrainingCatalog.Verify(x => x.UpdateAsync(It.IsAny <UpdateEvent>(), It.IsAny <UpdateDbContext>(), It.IsAny <bool>(), It.IsAny <bool>()), Times.Once); mockTrainingCatalog.Verify(x => x.Dispose(), Times.Once); }
public async Task Should_LogErrorToDb_When_UpdateTrainingCatalogThrowAggregateException() { // Arrange var trainingProvider = new TrainingProvider(); var description = "test update"; var mediaPathsContainer = new UpdateService.ServerMediaPathsContainer(); var updateDbContext = Mock.Of<UpdateDbContext>(x => x.UpdateEvents.Add(It.IsAny<UpdateEvent>()) == new UpdateEvent()); Mock.Get(updateDbContext).Setup(x => x.SetStateToDetached(It.IsAny<UpdateEvent>())); var mockContextFromFactory = new Mock<UpdateDbContext>(); mockContextFromFactory.Setup(x => x.SetStateToModified(It.IsAny<UpdateEvent>())); var dbContextFactory = Mock.Of<IDbContextFactory<UpdateDbContext>>(x => x.CreateDbContext() == mockContextFromFactory.Object); var mockTrainingCatalog = new Mock<ITrainingCatalog>(); mockTrainingCatalog.Setup(x => x.UpdateAsync(It.IsAny<UpdateEvent>(), It.IsAny<UpdateDbContext>(), It.IsAny<bool>(), It.IsAny<bool>())).Throws<AggregateException>(); var mockActivator = new Mock<IActivatorProxy>(); mockActivator.Setup(x => x.CreateInstance<ITrainingCatalog>(It.IsAny<string>())) .Returns(mockTrainingCatalog.Object); var sut = new UpdateService(string.Empty, ArchiveDirectoryPath, dbContextFactory, DateTimeProxy.Instance, mockActivator.Object); // Act await sut.UpdateTrainingCatalogAsync(updateDbContext, trainingProvider, description, mediaPathsContainer); // Assert Mock.Get(updateDbContext).Verify(x => x.SaveChangesAsync(), Times.Once); mockTrainingCatalog.Verify(x => x.UpdateAsync(It.IsAny<UpdateEvent>(), It.IsAny<UpdateDbContext>(), It.IsAny<bool>(), It.IsAny<bool>()), Times.Once); mockTrainingCatalog.Verify(x => x.Dispose(), Times.Once); Mock.Get(dbContextFactory).Verify(x => x.CreateDbContext(), Times.Once); mockContextFromFactory.Verify(x => x.SetStateToModified(It.IsAny<UpdateEvent>()), Times.Once()); mockContextFromFactory.Verify(x => x.SaveChanges(), Times.Once); }
public async Task Should_UpdateTrainingCatalog() { // Arrange var trainingProvider = new TrainingProvider(); var description = "test update"; var mediaPathsContainer = new UpdateService.ServerMediaPathsContainer(); var updateDbContext = Mock.Of<UpdateDbContext>(x => x.UpdateEvents.Add(It.IsAny<UpdateEvent>()) == new UpdateEvent() && x.AuthorsResolves.Local == new ObservableCollection<AuthorResolve>()); var mockContext = Mock.Get(updateDbContext); var mockTrainingCatalog = new Mock<ITrainingCatalog>(); var mockActivator = new Mock<IActivatorProxy>(); mockActivator.Setup(x => x.CreateInstance<ITrainingCatalog>(It.IsAny<string>())) .Returns(mockTrainingCatalog.Object); var sut = new UpdateService(string.Empty, ArchiveDirectoryPath, new DbContextFactory<UpdateDbContext>(), DateTimeProxy.Instance, mockActivator.Object); // Act await sut.UpdateTrainingCatalogAsync(mockContext.Object, trainingProvider, description, mediaPathsContainer); // Assert mockContext.Verify(x => x.UpdateEvents.Add(It.IsAny<UpdateEvent>()), Times.Once); mockContext.Verify(x => x.SaveChangesAsync(), Times.Exactly(2)); mockActivator.Verify(x => x.CreateInstance<ITrainingCatalog>(It.IsAny<string>()), Times.Once); mockTrainingCatalog.Verify(x => x.Initialize(It.IsAny<string>(), It.IsAny<int>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<LocationType>(),It.IsAny<IMediaPath>(), It.IsAny<string>()), Times.Once()); mockTrainingCatalog.Verify(x => x.UpdateAsync(It.IsAny<UpdateEvent>(), It.IsAny<UpdateDbContext>(), It.IsAny<bool>(), It.IsAny<bool>()), Times.Once); mockTrainingCatalog.Verify(x => x.Dispose(), Times.Once); }