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
            });
        }
Пример #3
0
        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
            });
        }
Пример #4
0
        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());
        }