Пример #1
0
        public void RemoveTag_When_ModelState_Invalid()
        {
            // arrange
            var destinationServiceMock = new Mock <IDestinationService>(MockBehavior.Strict);
            var tagServiceMock         = new Mock <ITagService>(MockBehavior.Strict);

            var tempDataMock = new Mock <ITempDataDictionary>();
            var controller   = new DestinationController(destinationServiceMock.Object, tagServiceMock.Object)
            {
                TempData = tempDataMock.Object
            };

            int destinationId = 1;
            int tagId         = 2;
            var model         = new RemoveTagRequestModel {
                DestinationId = destinationId, TagId = tagId
            };

            destinationServiceMock.Setup(s => s.ExistsAsync(destinationId)).ReturnsAsync(true);
            tagServiceMock.Setup(s => s.ExistsAsync(tagId)).ReturnsAsync(true);

            controller.ModelState.AddModelError(string.Empty, "Some error");

            // act
            var result = controller.RemoveTag(model);

            // assert
            Assert.IsAssignableFrom <RedirectToActionResult>(result.Result);
            var actionName = (result.Result as RedirectToActionResult)?.ActionName;

            Assert.True(actionName != null && actionName.Equals(nameof(DestinationController.All), StringComparison.CurrentCultureIgnoreCase));
            destinationServiceMock.VerifyAll();
            tagServiceMock.VerifyAll();
        }
        public async Task <IActionResult> RemoveTag(RemoveTagRequestModel model)
        {
            if (!await destinationService.ExistsAsync(model.DestinationId))
            {
                TempData.AddErrorMessage("Destination does not exist.");
                return(RedirectToAction(nameof(All)));
            }

            if (!await tagService.ExistsAsync(model.TagId))
            {
                TempData.AddErrorMessage("Destination does not exist.");
                return(RedirectToAction(nameof(Details), new { id = model.DestinationId }));
            }

            if (!ModelState.IsValid)
            {
                TempData.AddErrorMessage("Invalid data.");
                return(RedirectToAction(nameof(All)));
            }

            await destinationService.RemoveTagAsync(model.DestinationId, model.TagId);

            TempData.AddSuccessMessage();

            return(RedirectToAction(nameof(Details), new { id = model.DestinationId }));
        }
Пример #3
0
        public void RemoveTag_On_Success()
        {
            // arrange
            var destinationServiceMock = new Mock <IDestinationService>(MockBehavior.Strict);
            var tagServiceMock         = new Mock <ITagService>(MockBehavior.Strict);

            var tempDataMock = new Mock <ITempDataDictionary>();
            var controller   = new DestinationController(destinationServiceMock.Object, tagServiceMock.Object)
            {
                TempData = tempDataMock.Object
            };

            int destinationId = 1;
            int tagId         = 2;
            var model         = new RemoveTagRequestModel {
                DestinationId = destinationId, TagId = tagId
            };

            destinationServiceMock.Setup(s => s.ExistsAsync(destinationId)).ReturnsAsync(true);
            destinationServiceMock.Setup(s => s.RemoveTagAsync(destinationId, tagId)).ReturnsAsync(true);
            tagServiceMock.Setup(s => s.ExistsAsync(tagId)).ReturnsAsync(true);

            // act
            var result = controller.RemoveTag(model);

            // assert
            Assert.IsAssignableFrom <RedirectToActionResult>(result.Result);
            var castedResult = result.Result as RedirectToActionResult;
            var actionName   = castedResult?.ActionName;

            Assert.True(actionName != null && actionName.Equals(nameof(DestinationController.Details), StringComparison.CurrentCultureIgnoreCase));
            Assert.True(castedResult.RouteValues.Count == 1);
            Assert.True(castedResult.RouteValues.ContainsKey("id"));
            Assert.True(Convert.ToInt32(castedResult.RouteValues["id"]) == destinationId);
            destinationServiceMock.VerifyAll();
            tagServiceMock.VerifyAll();
        }