Ejemplo n.º 1
0
        public ActionResult Edit(EditNoteViewModel model, string noteId)
        {
            Guid noteGuid = Guid.Parse(noteId);
            Core.Entities.Note note = noteRepository.GetNote(noteGuid);
            if (note == null)
            {
                return RedirectToAction("index");
            }

            var user = userRepository.GetByUsername(User.Identity.Name);
            if (note.OwnerId != user.Id)
            {
                return RedirectToAction("index");
            }

            commandInvoker.Execute(new EditNoteCommand(model.Title, model.Content, noteGuid));

            return RedirectToAction("index");
        }
Ejemplo n.º 2
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());
        }
Ejemplo n.º 3
0
        public void PostToNewShouldRedirectToIndexAction()
        {
            var noteNewViewModel = new EditNoteViewModel
            {
                Content = "This is some content",
                Title = "This is the title"
            };

            var id = Guid.NewGuid();
            var mockCommandInvoker = new Mock<ICommandInvoker>();
            var mockUserRepository = new Mock<IUserRepository>();
            mockUserRepository.Setup(x => x.GetByUsername("boco")).Returns(new User { Id = id });
            var notesController = GetNotesController(mockCommandInvoker, new Mock<INoteRepository>(), mockUserRepository);

            var result = notesController.New(noteNewViewModel) as RedirectToRouteResult;
            Assert.IsNotNull(result);
            Assert.AreEqual("index", result.RouteValues["action"]);
        }
Ejemplo n.º 4
0
        public void PostToNewShouldInvokeAddNewNoteCommandWithCurrentlYLoggedinUserAsNoteOwner()
        {
            var noteNewViewModel = new EditNoteViewModel
            {
                Content = "This is some content",
                Title = "This is the title"
            };

            var id = Guid.NewGuid();
            var mockCommandInvoker = new Mock<ICommandInvoker>();
            var mockUserRepository = new Mock<IUserRepository>();
            mockUserRepository.Setup(x => x.GetByUsername("boco")).Returns(new User { Id = id });
            var notesController = GetNotesController(mockCommandInvoker, new Mock<INoteRepository>(), mockUserRepository);
            var mockHttpContext = new Mock<ControllerContext>();
            mockHttpContext.Setup(x => x.HttpContext.User.Identity.Name).Returns("boco");
            notesController.ControllerContext = mockHttpContext.Object;
            notesController.New(noteNewViewModel);

            mockHttpContext.VerifyGet(x => x.HttpContext.User.Identity.Name, Times.Once());
        }
Ejemplo n.º 5
0
        public void PostToNewShouldInvokeAddNewNoteCommand()
        {
            var noteNewViewModel = new EditNoteViewModel
            {
                Content = "This is some content",
                Title = "This is the title"
            };

            var id = Guid.NewGuid();
            var mockCommandInvoker = new Mock<ICommandInvoker>();
            var mockUserRepository = new Mock<IUserRepository>();
            mockUserRepository.Setup(x => x.GetByUsername("boco")).Returns(new User { Id = id });
            var notesController = GetNotesController(mockCommandInvoker, new Mock<INoteRepository>(), mockUserRepository);

            notesController.New(noteNewViewModel);

            mockCommandInvoker.Verify(x =>
                x.Execute(
                    It.Is<AddNewNoteCommand>(
                        nnc => nnc.Content == noteNewViewModel.Content && nnc.Title == noteNewViewModel.Title && nnc.OwnerId == id)), Times.Once());
        }
Ejemplo n.º 6
0
        public ActionResult UpdateNoteJson(EditNoteViewModel model, string noteId)
        {
            Guid noteGuid = Guid.Parse(noteId);
            var note = userRepository.GetByUsername(User.Identity.Name).Notes.SingleOrDefault(x => x.Id == noteGuid);
            if(note == null)
            {
                return Json(new {Error = "The note does not exist"});
            }

            commandInvoker.Execute(new EditNoteCommand(model.Title, model.Content, Guid.Parse(noteId)));
            return Json(null);
        }
Ejemplo n.º 7
0
 public ActionResult New(EditNoteViewModel model)
 {
     var user = userRepository.GetByUsername(User.Identity.Name);
     commandInvoker.Execute(new AddNewNoteCommand(model.Title, model.Content, user.Id, DateTime.Now));
     return RedirectToAction("index");
 }