public void File_edit_changes_filename_and_description_and_publishes_proper_event() { // Arrange FakeFileRepository fileRepository = new FakeFileRepository(); FakeEventPublisher eventPublisher = new FakeEventPublisher(); FakeCurrentUser currentUser = new FakeCurrentUser(); File file = new ExampleFileFactory().CreateFile(); fileRepository.Save(file); currentUser.Id = file.Owner.Id; var commandHandler = new EditFileCommandHandler(fileRepository, currentUser, eventPublisher); var command = new EditFileCommand("fileId", "newFileName", "newFileDescription"); // Act commandHandler.Handle(command); // Assert Assert.AreEqual("newFileName", file.FileName); Assert.AreEqual("newFileDescription", file.Description); File publishedEvent = eventPublisher.VerifyPublishedOnce <File>(); Assert.AreEqual(file, publishedEvent); }
public void File_can_only_be_edited_by_owner() { // Arrange FakeFileRepository fileRepository = new FakeFileRepository(); FakeEventPublisher eventPublisher = new FakeEventPublisher(); FakeCurrentUser currentUser = new FakeCurrentUser(); File file = new ExampleFileFactory().CreateFile(); fileRepository.Save(file); currentUser.Id = "otherUserId"; var commandHandler = new EditFileCommandHandler(fileRepository, currentUser, eventPublisher); var command = new EditFileCommand("fileId", "newFileName", "newFileDescription"); // Assert & Act Assert.Throws <PermissionException>(() => commandHandler.Handle(command)); }