public async Task TestDeleteDirectoryOperation() { var directoryServiceMock = new Mock <IDirectoryService>(); directoryServiceMock .Setup(m => m.RemoveRecursively(SourceName)) .Verifiable(); var filesServiceMock = new Mock <IFileService>(); var pathServiceMock = new Mock <IPathService>(); var operationsFactory = new OperationsFactory( _taskPool, directoryServiceMock.Object, filesServiceMock.Object, pathServiceMock.Object, _fileNameGenerationService); var deleteOperation = operationsFactory.CreateDeleteOperation( new UnaryFileSystemOperationSettings(new[] { SourceName }, new string[] {}, SourceName)); Assert.Equal(OperationState.NotStarted, deleteOperation.State); var callbackCalled = false; deleteOperation.StateChanged += (sender, args) => callbackCalled = true; await deleteOperation.RunAsync(); Assert.Equal(OperationState.Finished, deleteOperation.State); Assert.True(callbackCalled); directoryServiceMock.Verify(m => m.RemoveRecursively(SourceName), Times.Once()); }
public async Task TestDeleteFileOperation(bool throws, OperationState state) { var directoryServiceMock = new Mock <IDirectoryService>(); var filesServiceMock = new Mock <IFileService>(); var removeSetup = filesServiceMock .Setup(m => m.Remove(SourceName)); if (throws) { removeSetup.Throws(new AccessViolationException()).Verifiable(); } else { removeSetup.Verifiable(); } var pathServiceMock = new Mock <IPathService>(); var operationsFactory = new OperationsFactory( _taskPool, directoryServiceMock.Object, filesServiceMock.Object, pathServiceMock.Object, _fileNameGenerationService); var deleteOperation = operationsFactory.CreateDeleteOperation( new UnaryFileSystemOperationSettings(new string[] {}, new[] { SourceName }, SourceName)); Assert.Equal(OperationState.NotStarted, deleteOperation.State); var callbackCalled = false; deleteOperation.StateChanged += (sender, args) => callbackCalled = true; await deleteOperation.RunAsync(); Assert.Equal(state, deleteOperation.State); Assert.True(callbackCalled); filesServiceMock.Verify(m => m.Remove(SourceName), Times.Once()); }