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); }
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); }
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); }
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); }
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); }