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