public void File_remove_removes_file_and_publishes_event() { // Arrange FakeFileStorage fileStorage = new FakeFileStorage(); FakeFileRepository fileRepository = new FakeFileRepository(); FakeEventPublisher eventPublisher = new FakeEventPublisher(); FakeCurrentUser currentUser = new FakeCurrentUser(); File file = new ExampleFileFactory().CreateFile(); fileRepository.Save(file); fileStorage.SaveFile(file, Stream.Null); currentUser.Id = file.Owner.Id; var commandHandler = new DeleteFileCommandHandler(fileStorage, currentUser, fileRepository, eventPublisher); var command = new DeleteFileCommand("fileId"); // Act commandHandler.Handle(command); // Assert Assert.IsNull(fileRepository.GetById("fileId")); Assert.False(fileStorage.Exists(file)); File publishedEvent = eventPublisher.VerifyPublishedOnce <File>(); Assert.AreEqual(file, publishedEvent); }
public async Task Handle_Invalid_Throws() { // arrange var id = new Guid("a87887ec-df44-4607-9e6f-28f361670f9b"); var request = new DeleteFileCommand(id); var repositoryMock = new Mock <IRepository <File> >(); repositoryMock.Setup(x => x.Delete(It.IsAny <Guid>(), CancellationToken.None)).ThrowsAsync(new Exception()); var handler = new DeleteFileCommandHandler(repositoryMock.Object); // act await Assert.ThrowsAsync <DeleteException>(() => handler.Handle(request, CancellationToken.None)); // assert repositoryMock.Verify(x => x.Delete(It.IsAny <Guid>(), CancellationToken.None), Times.Once); repositoryMock.VerifyNoOtherCalls(); }
public void File_can_be_removed_only_by_owner() { // Arrange FakeFileStorage fileStorage = new FakeFileStorage(); FakeFileRepository fileRepository = new FakeFileRepository(); FakeEventPublisher eventPublisher = new FakeEventPublisher(); FakeCurrentUser currentUser = new FakeCurrentUser(); File file = new ExampleFileFactory().CreateFile(); fileRepository.Save(file); fileStorage.SaveFile(file, Stream.Null); currentUser.Id = "otherUserId"; var commandHandler = new DeleteFileCommandHandler(fileStorage, currentUser, fileRepository, eventPublisher); var command = new DeleteFileCommand("fileId"); // Assert & Act Assert.Throws <PermissionException>(() => commandHandler.Handle(command)); }
public async Task Handle_Valid_Deletes() { // arrange var id = new Guid("a87887ec-df44-4607-9e6f-28f361670f9b"); var request = new DeleteFileCommand(id); var inputGuidToAssert = Guid.Empty; var repositoryMock = new Mock <IRepository <File> >(); var insertSetup = repositoryMock.Setup(x => x.Delete(It.IsAny <Guid>(), CancellationToken.None)); insertSetup.Callback((Guid guid, CancellationToken token) => inputGuidToAssert = guid); var handler = new DeleteFileCommandHandler(repositoryMock.Object); // act await handler.Handle(request, CancellationToken.None); // assert repositoryMock.Verify(x => x.Delete(id, CancellationToken.None), Times.Once); repositoryMock.VerifyNoOtherCalls(); Assert.Equal(id, inputGuidToAssert); }
public DeleteFileCommandHandlerTests() { _fileRepositoryMock = new Mock <IFileRepository>(); _fileSystemServiceMock = new Mock <IFileSystemService>(); _handler = new DeleteFileCommandHandler(_fileRepositoryMock.Object, _fileSystemServiceMock.Object); }