public void TestIndex()
        {
            //Arrange
            AdminController target = new AdminController(null);

            //Act
            RedirectToRouteResult result = target.Index() as RedirectToRouteResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteValues["Action"], "ManageUsers");
        }
        public void TestGetCreate()
        {
            //Arrange
            AdminController target = new AdminController(null);

            //Act
            ViewResult result = target.Create() as ViewResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("", result.ViewName);
        }
        public void TestEditContent()
        {
            //Arrange
            Mock<IAdminRepository> mockRepo = new Mock<IAdminRepository>();
            mockRepo.Setup(x => x.GetContent()).Returns(new ContentViewModel());
            AdminController target = new AdminController(mockRepo.Object);

            //Act
            ViewResult result = target.EditContent() as ViewResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("", result.ViewName);
            mockRepo.Verify(x => x.GetContent(), Times.Once());
        }
        public void TestDeleteSuccess()
        {
            //Arrange
            Mock<AppUser> mockUser = new Mock<AppUser>();
            Mock<IAdminRepository> mockRepo = new Mock<IAdminRepository>();
            mockRepo.Setup(x => x.FindUser(It.IsAny<string>())).
                Returns(Task.FromResult<AppUser>(mockUser.Object));
            mockRepo.Setup(x => x.DeleteQuestionsAndCommentsFromUser(mockUser.Object));
            mockRepo.Setup(x => x.DeleteUser(mockUser.Object)).
                Returns(Task.FromResult<IdentityResult>(IdentityResult.Success));
            AdminController target = new AdminController(mockRepo.Object);

            //Act
            Task<ActionResult> result = target.Delete("") as Task<ActionResult>;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Result, typeof(RedirectToRouteResult));
            RedirectToRouteResult redirectRouteResult = result.Result as RedirectToRouteResult;
            Assert.AreEqual("ManageUsers", redirectRouteResult.RouteValues["Action"]);
            mockRepo.Verify(x => x.FindUser(It.IsAny<string>()), Times.Once());
            mockRepo.Verify(x => x.DeleteQuestionsAndCommentsFromUser(It.IsAny<AppUser>()), Times.Once());
            mockRepo.Verify(x => x.DeleteUser(It.IsAny<AppUser>()), Times.Once());
        }
        public void TestManageUsers()
        {
            //Arrange
            Mock<IAdminRepository> mockRepo = new Mock<IAdminRepository>();
            mockRepo.Setup(x => x.GetUsersAndAdmins(It.IsAny<string>(), It.IsAny<int>())).Returns(new UsersAndAdminsViewModel());
            AdminController target = new AdminController(mockRepo.Object);

            //Act
            ViewResult result = target.ManageUsers("", 0) as ViewResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.ViewName, "");
            mockRepo.Verify(x => x.GetUsersAndAdmins(It.IsAny<string>(), It.IsAny<int>()), Times.Once());
        }
        public void TestPostCreateValidModelAndSuccess()
        {
            //Arrange
            CreateModel validModel = new CreateModel
            {
                Name = "ValidName",
                Email = "*****@*****.**",
                Password = "******"
            };
            Mock<IAdminRepository> mockRepo = new Mock<IAdminRepository>();
            mockRepo.Setup(x => x.CreateUser(It.IsAny<CreateModel>())).
                Returns(Task.FromResult<IdentityResult>(IdentityResult.Success));
            AdminController target = new AdminController(mockRepo.Object);

            //Act
            Task<ActionResult> result = target.Create(validModel) as Task<ActionResult>;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(target.ModelState.IsValid);
            Assert.IsInstanceOfType(result.Result, typeof (RedirectToRouteResult));
            RedirectToRouteResult redirectRouteResult = result.Result as RedirectToRouteResult;
            Assert.AreEqual("ManageUsers", redirectRouteResult.RouteValues["Action"]);
        }