public async Task <CreateNoteResult> Handle(CreateNoteCommand request, CancellationToken cancellationToken) { Guid NoteId = request.Note.Id.HasValue ? request.Note.Id.Value : Guid.NewGuid(); // Guid should not be returned from the store. A command shouldn't return values || request.Note.Id, if (string.IsNullOrEmpty(request.Note.Value)) { throw new Exceptions.NoteIsEmptyException(NoteId);//request.Note.Id); } var note = new Core.Entities.Note() { Id = NoteId, On = System.DateTime.UtcNow, Value = request.Note.Value }; dataStore.Notes.AddNote(note); await dataStore.CommitChanges(); eventBus.Publish(new NoteCreated("TenantId", NoteId, note.Value)); return(new CreateNoteResult() { NoteId = NoteId }); }
public async Task <DeleteNoteResult> Handle(DeleteNoteCommand request, CancellationToken cancellationToken) { var note = new Core.Entities.Note() { Id = request.NoteId }; dataStore.Notes.DeleteNote(note); await dataStore.CommitChanges(); eventBus.Publish(new Events.NoteDeleted("TenantId", note.Id)); return(new DeleteNoteResult() { NoteId = request.NoteId }); }
public async Task <UpdateNoteResult> Handle(UpdateNoteCommand request, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(request.Note.Value)) { throw new Exceptions.NoteIsEmptyException(request.Note.Id); } var note = new Core.Entities.Note() { Id = request.Note.Id, On = System.DateTime.UtcNow, Value = request.Note.Value }; dataStore.Notes.UpdateNote(note); await dataStore.CommitChanges(); eventBus.Publish(new NoteUpdated("TenantId", note.Id, note.Value)); return(new UpdateNoteResult() { NoteId = note.Id }); }
public void PostToEditShouldExecuteEditNoteCommandForTheSpecifiedNoteAndRedirectsToIndex() { var mockCommandInvoker = new Mock<ICommandInvoker>(); var mockUserRepository = new Mock<IUserRepository>(); var mockNoteRepository = new Mock<INoteRepository>(); Guid noteId = Guid.NewGuid(); Guid ownerId = Guid.NewGuid(); var note = new Core.Entities.Note { Content = "Test Content", Title = "Test Title", Id = noteId, OwnerId = ownerId }; mockNoteRepository.Setup(x => x.GetNote(noteId)).Returns(note); mockUserRepository.Setup(x => x.GetByUsername("boco")).Returns(new User { Id = ownerId }); var notesController = GetNotesController(mockCommandInvoker, mockNoteRepository, mockUserRepository); var editNoteViewModel = new EditNoteViewModel { Content = "New Content", Title = "New Title" }; var result = notesController.Edit(editNoteViewModel, noteId.ToString()) as RedirectToRouteResult; Assert.IsNotNull(result); Assert.AreEqual("index", result.RouteValues["action"]); mockCommandInvoker.Verify(x => x.Execute(It.Is<EditNoteCommand>(enc => enc.Content == editNoteViewModel.Content && enc.Title == editNoteViewModel.Title && enc.NoteId == noteId)), Times.Once()); }