Пример #1
0
        public async Task AddTagGet_ReturnErrorViewOnException()
        {
            // Arrange
            // mocking repository
            var      mockRepo     = new Mock <IAsyncRepository>();
            Question tempQuestion = new Question {
                Id = 1, Title = "Test Title"
            };

            mockRepo.Setup(repo => repo.GetQuestionByIdWithoutDetailsAsync(It.IsAny <int>())).ReturnsAsync(tempQuestion).Verifiable();
            mockRepo.Setup(repo => repo.GetAllTagsNoDuplicates(It.IsAny <int>())).Throws(new Exception()).Verifiable();

            // adding a real mapper
            var myProfile     = new AskMateProfiles();
            var configuration = new MapperConfiguration(cfg => cfg.AddProfile(myProfile));
            var realMapper    = new Mapper(configuration);

            var controller = new TagsController(mockRepo.Object, realMapper);

            // Act
            var result = await controller.AddTag(1);

            // Assert
            var requestResult = Assert.IsType <ViewResult>(result);

            Assert.Equal("Error", requestResult.ViewName);
            mockRepo.Verify(x => x.GetQuestionByIdWithoutDetailsAsync(It.IsAny <int>()), Times.Once);
            mockRepo.Verify(x => x.GetAllTagsNoDuplicates(It.IsAny <int>()), Times.Once);
        }
        public async Task AllUsers_ReturnErrorViewOnException()
        {
            // Arrange
            // mocking repository
            var mockRepo = new Mock <IAsyncRepository>();

            mockRepo.Setup(repo => repo.GetAllUsers()).Throws(new Exception()).Verifiable();

            // adding a real mapper
            var myProfile     = new AskMateProfiles();
            var configuration = new MapperConfiguration(cfg => cfg.AddProfile(myProfile));
            var realMapper    = new Mapper(configuration);

            var controller = new UserController(mockRepo.Object, realMapper, userManager);

            // Act

            var result = await controller.AllUsers();

            // Assert
            var requestResult = Assert.IsType <ViewResult>(result);

            Assert.Equal("Error", requestResult.ViewName);
            mockRepo.Verify(x => x.GetAllUsers(), Times.Once);
        }
Пример #3
0
        public async Task AddTagPost_ReturnErrorOnException()
        {
            // Arrange
            // mocking repository
            var      mockRepo     = new Mock <IAsyncRepository>();
            Question tempQuestion = new Question {
                Id = 1, Title = "Test Title"
            };

            mockRepo.Setup(repo => repo.GetQuestionByIdWithoutDetailsAsync(It.IsAny <int>())).Throws(new Exception()).Verifiable();
            Tag tempTag = new Tag {
                Id = 1, Name = "Test Tag"
            };

            mockRepo.Setup(repo => repo.GetTagByIdAsync(It.IsAny <int>())).ReturnsAsync(tempTag).Verifiable();
            mockRepo.Setup(repo => repo.AddTagAsync(It.IsAny <Tag>())).ReturnsAsync(tempTag).Verifiable();
            mockRepo.Setup(repo => repo.AttachQuestionTagAsync(It.IsAny <QuestionTag>())).Verifiable();

            // adding a real mapper
            var myProfile     = new AskMateProfiles();
            var configuration = new MapperConfiguration(cfg => cfg.AddProfile(myProfile));
            var realMapper    = new Mapper(configuration);

            // mocking Response.StatusCode = 404 setter
            var mockHttpContext = new Mock <HttpContext>();
            var response        = new Mock <HttpResponse>();

            mockHttpContext.SetupGet(x => x.Response).Returns(response.Object);

            //creates an instance of an asp.net mvc controller
            var controller = new TagsController(mockRepo.Object, realMapper)
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = mockHttpContext.Object
                }
            };

            // Act
            var result = await controller.AddTag(new TagViewModel { Id = 1, Name = "Test Tag" }, 1);

            // Assert
            var requestResult = Assert.IsType <ViewResult>(result);

            Assert.Equal("Error", requestResult.ViewName);
            mockRepo.Verify(x => x.GetQuestionByIdWithoutDetailsAsync(It.IsAny <int>()), Times.Once);
            mockRepo.Verify(x => x.GetTagByIdAsync(It.IsAny <int>()), Times.Never);
            mockRepo.Verify(x => x.AddTagAsync(It.IsAny <Tag>()), Times.Never);
            mockRepo.Verify(x => x.AttachQuestionTagAsync(It.IsAny <QuestionTag>()), Times.Never);
        }
Пример #4
0
        public async Task AttachQuestionTagGet_RedirectToDetailsActionOnSuccess()
        {
            // Arrange
            // mocking repository
            var      mockRepo     = new Mock <IAsyncRepository>();
            Question tempQuestion = new Question {
                Id = 1, Title = "Test Title"
            };

            mockRepo.Setup(repo => repo.GetQuestionByIdWithoutDetailsAsync(It.IsAny <int>())).ReturnsAsync(tempQuestion).Verifiable();
            Tag tempTag = new Tag {
                Id = 1, Name = "Test Tag"
            };

            mockRepo.Setup(repo => repo.GetTagByIdAsync(It.IsAny <int>())).ReturnsAsync(tempTag).Verifiable();
            mockRepo.Setup(repo => repo.AttachQuestionTagAsync(It.IsAny <QuestionTag>())).Verifiable();

            // adding a real mapper
            var myProfile     = new AskMateProfiles();
            var configuration = new MapperConfiguration(cfg => cfg.AddProfile(myProfile));
            var realMapper    = new Mapper(configuration);

            // mocking Response.StatusCode = 404 setter
            var mockHttpContext = new Mock <HttpContext>();
            var response        = new Mock <HttpResponse>();

            mockHttpContext.SetupGet(x => x.Response).Returns(response.Object);

            var controller = new TagsController(mockRepo.Object, realMapper)
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = mockHttpContext.Object
                }
            };

            // Act
            var result = await controller.AttachQuestionTag(1, 1);

            // Assert
            var requestResult = Assert.IsType <RedirectToActionResult>(result);

            Assert.Equal("Details", requestResult.ActionName);
            Assert.Equal("Questions", requestResult.ControllerName);
            mockRepo.Verify(x => x.GetQuestionByIdWithoutDetailsAsync(It.IsAny <int>()), Times.Once);
            mockRepo.Verify(x => x.GetTagByIdAsync(It.IsAny <int>()), Times.Once);
            mockRepo.Verify(x => x.AttachQuestionTagAsync(It.IsAny <QuestionTag>()), Times.Once);
        }
        public async Task IndexGet_ReturnErrorViewOnException()
        {
            // Arrange
            // mocking repository
            var      mockRepo     = new Mock <IAsyncRepository>();
            Question tempQuestion = new Question {
                Id = 1, Title = "Test Title"
            };
            Question tempQuestion2 = new Question {
                Id = 2, Title = "Test Title 2"
            };
            List <Question> tempQuestionsList = new List <Question>();

            tempQuestionsList.Add(tempQuestion);
            tempQuestionsList.Add(tempQuestion2);
            mockRepo.Setup(repo => repo.GetLatestQuestions(It.IsAny <int>())).Throws(new Exception()).Verifiable();

            // adding a real mapper
            var myProfile     = new AskMateProfiles();
            var configuration = new MapperConfiguration(cfg => cfg.AddProfile(myProfile));
            var realMapper    = new Mapper(configuration);

            // mocking Response.StatusCode = 404 setter
            var mockHttpContext = new Mock <HttpContext>();
            var response        = new Mock <HttpResponse>();

            mockHttpContext.SetupGet(x => x.Response).Returns(response.Object);

            //creates an instance of an asp.net mvc controller
            var controller = new HomeController(logger, mockRepo.Object, realMapper)
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = mockHttpContext.Object
                }
            };

            // Act
            var result = await controller.Index();

            // Assert
            var requestResult = Assert.IsType <ViewResult>(result);

            Assert.Equal("Error", requestResult.ViewName);
            mockRepo.Verify(x => x.GetLatestQuestions(It.IsAny <int>()), Times.Once);
        }
Пример #6
0
        public async Task AddTagPost_ReturnAttachTagOnInvalidModel()
        {
            // Arrange
            // mocking repository
            var      mockRepo     = new Mock <IAsyncRepository>();
            Question tempQuestion = new Question {
                Id = 1, Title = "Test Title"
            };

            mockRepo.Setup(repo => repo.GetQuestionByIdWithoutDetailsAsync(It.IsAny <int>())).ReturnsAsync(tempQuestion).Verifiable();
            Tag tempTag = new Tag {
                Id = 1, Name = "Test Tag"
            };

            mockRepo.Setup(repo => repo.GetTagByIdAsync(It.IsAny <int>())).ReturnsAsync(tempTag).Verifiable();
            mockRepo.Setup(repo => repo.AddTagAsync(It.IsAny <Tag>())).ReturnsAsync(tempTag).Verifiable();
            mockRepo.Setup(repo => repo.AttachQuestionTagAsync(It.IsAny <QuestionTag>())).Verifiable();

            // adding a real mapper
            var myProfile     = new AskMateProfiles();
            var configuration = new MapperConfiguration(cfg => cfg.AddProfile(myProfile));
            var realMapper    = new Mapper(configuration);

            var controller = new TagsController(mockRepo.Object, realMapper);

            controller.ModelState.AddModelError("Name", "Required");

            // Act
            var result = await controller.AddTag(new TagViewModel { Id = 1 }, 1);

            // Assert
            var requestResult = Assert.IsType <ViewResult>(result);

            Assert.Equal("AddTag", requestResult.ViewName);
            mockRepo.Verify(x => x.GetQuestionByIdWithoutDetailsAsync(It.IsAny <int>()), Times.Never);
            mockRepo.Verify(x => x.GetTagByIdAsync(It.IsAny <int>()), Times.Never);
            mockRepo.Verify(x => x.AddTagAsync(It.IsAny <Tag>()), Times.Never);
            mockRepo.Verify(x => x.AttachQuestionTagAsync(It.IsAny <QuestionTag>()), Times.Never);
        }
        public async Task UserActivity_ReturnUserAcctivityViewOnSuccess()
        {
            // Arrange
            // mocking repository
            var mockRepo = new Mock <IAsyncRepository>();

            mockRepo.Setup(repo => repo.GetUserQuestions(It.IsAny <string>())).ReturnsAsync(new List <Question>()).Verifiable();
            mockRepo.Setup(repo => repo.GetUserAnswers(It.IsAny <string>())).ReturnsAsync(new List <Answer>()).Verifiable();
            mockRepo.Setup(repo => repo.GetUserQuestionComments(It.IsAny <string>())).ReturnsAsync(new List <QuestionComment>()).Verifiable();
            mockRepo.Setup(repo => repo.GetUserAnswerComments(It.IsAny <string>())).ReturnsAsync(new List <AnswerComment>()).Verifiable();

            // mocking UserManager
            var             mockUserManager = MockHelpers.MockUserManager <ApplicationUser>();
            ApplicationUser tempUser        = new ApplicationUser {
                Id = "abcd", Email = "*****@*****.**"
            };

            mockUserManager.Setup(um => um.GetUserAsync(It.IsAny <ClaimsPrincipal>())).ReturnsAsync(tempUser).Verifiable();

            // adding a real mapper
            var myProfile     = new AskMateProfiles();
            var configuration = new MapperConfiguration(cfg => cfg.AddProfile(myProfile));
            var realMapper    = new Mapper(configuration);

            var controller = new UserController(mockRepo.Object, realMapper, mockUserManager.Object);

            // Act

            var result = await controller.UserActivity();

            // Assert
            var requestResult = Assert.IsType <ViewResult>(result);

            Assert.Equal("UserActivity", requestResult.ViewName);
            mockRepo.Verify(x => x.GetUserQuestions(It.IsAny <string>()), Times.Once);
            mockRepo.Verify(x => x.GetUserAnswers(It.IsAny <string>()), Times.Once);
            mockRepo.Verify(x => x.GetUserQuestionComments(It.IsAny <string>()), Times.Once);
            mockRepo.Verify(x => x.GetUserAnswerComments(It.IsAny <string>()), Times.Once);
        }
Пример #8
0
        public async Task AddTagPost_RedirectToDetailsActionOnSuccessNewTag()
        {
            // Arrange
            // mocking repository
            var      mockRepo     = new Mock <IAsyncRepository>();
            Question tempQuestion = new Question {
                Id = 1, Title = "Test Title"
            };

            mockRepo.Setup(repo => repo.GetQuestionByIdWithoutDetailsAsync(It.IsAny <int>())).ReturnsAsync(tempQuestion).Verifiable();
            Tag tempTag = new Tag {
                Id = 1, Name = "Test Tag"
            };
            Tag tempNullTag = null;

            mockRepo.SetupSequence(repo => repo.GetTagByIdAsync(It.IsAny <int>())).ReturnsAsync(tempNullTag).ReturnsAsync(tempTag);
            mockRepo.Setup(repo => repo.AddTagAsync(It.IsAny <Tag>())).ReturnsAsync(tempTag).Verifiable();
            mockRepo.Setup(repo => repo.AttachQuestionTagAsync(It.IsAny <QuestionTag>())).Verifiable();

            // adding a real mapper
            var myProfile     = new AskMateProfiles();
            var configuration = new MapperConfiguration(cfg => cfg.AddProfile(myProfile));
            var realMapper    = new Mapper(configuration);

            var controller = new TagsController(mockRepo.Object, realMapper);

            // Act
            var result = await controller.AddTag(new TagViewModel { Id = 1, Name = "Test Name" }, 1);

            // Assert
            var requestResult = Assert.IsType <RedirectToActionResult>(result);

            Assert.Equal("Details", requestResult.ActionName);
            Assert.Equal("Questions", requestResult.ControllerName);
            mockRepo.Verify(x => x.GetQuestionByIdWithoutDetailsAsync(It.IsAny <int>()), Times.Exactly(2));
            mockRepo.Verify(x => x.AddTagAsync(It.IsAny <Tag>()), Times.Once);
            mockRepo.Verify(x => x.AttachQuestionTagAsync(It.IsAny <QuestionTag>()), Times.Once);
        }