Пример #1
0
        public async Task AddItemPost_ShouldReturn_RedirectToActionIndex_IfModelIsValid()
        {
            // Arrange
            var fakeUser = new IdentityUser();

            // Make the mockUserManager return a fake user
            mockUserManager
            .Setup(x => x.GetUserAsync(It.IsAny <ClaimsPrincipal>()))
            .Returns(Task.FromResult <IdentityUser>(fakeUser));

            // Make the mockTodoItemService always succeed
            mockTodoItemService
            .Setup(x => x.AddItemAsync(It.IsAny <TodoItem>(), It.IsAny <IdentityUser>()))
            .Returns(Task.FromResult(true));

            var controller = new TodoController(mockTodoItemService.Object, mockCategoryService.Object, mockUserManager.Object);
            var model      = new TodoItemAddViewModel();

            //Act
            var result = await controller.AddItem(model);

            var objectResult = result as RedirectToActionResult;

            // Assert
            Assert.NotNull(objectResult);
            Assert.Equal(nameof(TodoController.Index), objectResult.ActionName);
        }
Пример #2
0
        public async Task AddItemPost_ShouldReturn_BadRequest_IfFailed()
        {
            // Arrange
            var fakeUser = new IdentityUser();

            // Make the mockUserManager always return a fake user for GetUserAsync
            mockUserManager
            .Setup(x => x.GetUserAsync(It.IsAny <ClaimsPrincipal>()))
            .Returns(Task.FromResult <IdentityUser>(fakeUser));

            // Make the mockTodoItemService always fails
            mockTodoItemService
            .Setup(x => x.AddItemAsync(It.IsAny <TodoItem>(), It.IsAny <IdentityUser>()))
            .Returns(Task.FromResult(false));

            var controller = new TodoController(mockTodoItemService.Object, mockCategoryService.Object, mockUserManager.Object);
            var model      = new TodoItemAddViewModel();

            //Act
            var result = await controller.AddItem(model);

            var objectResult = result as BadRequestObjectResult;

            // Assert
            Assert.NotNull(objectResult);
            Assert.IsType <string>(objectResult.Value);
        }
        public async Task <IActionResult> AddItem(TodoItemAddViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var currentUser = await _userManager.GetUserAsync(User);

            if (currentUser == null)
            {
                return(Challenge());
            }

            var newItem = new TodoItem
            {
                Id       = model.Id,
                Title    = model.Title,
                DueAt    = model.DueAt,
                Category = _categoryService.GetByIdAsync(model.CategoryId).Result
            };
            var successful = await _todoItemService.AddItemAsync(newItem, currentUser);

            if (!successful)
            {
                return(BadRequest("Could not add item."));
            }
            return(RedirectToAction("Index"));
        }
Пример #4
0
        public async Task AddItemPost_ShouldReturn_ChallengeResult_IfUserIsUnauthorize()
        {
            // Arrange
            // Make the mockUserManager always return null for GetUserAsync
            mockUserManager
            .Setup(x => x.GetUserAsync(It.IsAny <ClaimsPrincipal>()))
            .Returns(Task.FromResult <IdentityUser>(null));
            var controller = new TodoController(mockTodoItemService.Object, mockCategoryService.Object, mockUserManager.Object);
            var model      = new TodoItemAddViewModel();

            // Act
            var result = await controller.AddItem(model);

            // Assert
            Assert.IsType <ChallengeResult>(result);
        }
Пример #5
0
        public async Task AddItemPost_ShouldReturn_BadRequest_IfModelIsInvalid()
        {
            // Arrange
            var controller = new TodoController(mockTodoItemService.Object, mockCategoryService.Object, mockUserManager.Object);
            var model      = new TodoItemAddViewModel();

            controller.ModelState.AddModelError("error", "testerror");

            //Act
            var result = await controller.AddItem(model);

            var objectResult = result as BadRequestObjectResult;

            // Assert
            Assert.NotNull(objectResult);
            Assert.IsType <SerializableError>(objectResult.Value);
        }
        public async Task <IActionResult> AddItem()
        {
            var currentUser = await _userManager.GetUserAsync(User);

            if (currentUser == null)
            {
                return(Challenge());
            }
            var categories = await _categoryService.GetAsync();

            // Put items into a model
            var model = new TodoItemAddViewModel()
            {
                Categories = categories.ToList()
            };

            // Render view using the model
            return(View(model));
        }