public void All_ShouldReturnCorrectDataWithValidInputAndParticularSearchTerm() { const string SearchTerm = "Test"; //Arrange var controller = new AdminTownsController(this.townService.Object); this.townService.Setup(t => t.All(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <int>())) .Returns(this.GetTowns()); this.townService.Setup(t => t.TotalTowns(It.IsAny <string>())) .Returns(TotalTowns); //Act var result = controller.All(SearchTerm, MinPageSize); //Assert result.Should().BeOfType <ViewResult>(); var model = result.As <ViewResult>().Model.As <AllTowns>(); model.Towns.Should().HaveCount(TotalTowns); model.Pagination.SearchTerm.Should().Be(SearchTerm); model.Pagination.CurrentPage.Should().Be(MinPageSize); model.Pagination.NextPage.Should().Be(MaxPageSize); model.Pagination.PreviousPage.Should().Be(MinPageSize); model.Pagination.TotalElements.Should().Be(TotalTowns); }
public void All_ValidPageAndNoTownsShouldReturnCountZero() { //Arrange var controller = new AdminTownsController(this.townService.Object); this.townService.Setup(t => t.All(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <int>())) .Returns(new List <AdminTownListingServiceModel>()); this.townService.Setup(t => t.TotalTowns(It.IsAny <string>())) .Returns(0); //Act var result = controller.All(string.Empty, MinPageSize); //Assert result.Should().BeOfType <ViewResult>(); var model = result.As <ViewResult>().Model.As <AllTowns>(); model.Towns.Should().HaveCount(0); model.Pagination.SearchTerm.Should().Be(string.Empty); model.Pagination.CurrentPage.Should().Be(MinPageSize); model.Pagination.NextPage.Should().Be(0); model.Pagination.PreviousPage.Should().Be(MinPageSize); model.Pagination.TotalElements.Should().Be(0); }
public void All_PageGreaterThanTotalPagesShouldRedirectToAllTowns() { const int InvalidPageSize = 10; //Arrange var controller = new AdminTownsController(this.townService.Object); this.townService.Setup(t => t.All(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <int>())) .Returns(this.GetTowns()); this.townService.Setup(t => t.TotalTowns(It.IsAny <string>())) .Returns(TotalTowns); //Act var result = controller.All(string.Empty, InvalidPageSize); //Assert result.Should().BeOfType <RedirectToActionResult>(); var model = result.As <RedirectToActionResult>(); model.ActionName.Should().Be(WebConstants.Action.AdminAllTowns); model.RouteValues.Keys.Should().Contain(RouteValueKeyPage); model.RouteValues.Values.Should().Contain(MaxPageSize); model.RouteValues.Keys.Should().Contain(RouteValueKeySearchTerm); model.RouteValues.Values.Should().Contain(string.Empty); }
public void ControllerShoulBeForAuthorizedUsersOnly() { //Arrange var controller = new AdminTownsController(null); //Act var attributes = controller.GetType().GetCustomAttributes(true); //Assert attributes.Any(a => a.GetType() == typeof(AuthorizeAttribute)); }
public void Get_AddTownShouldReturnAddTownForm() { //Arrange var controller = new AdminTownsController(this.townService.Object); //Act var result = controller.Add(); //Assert result.Should().BeOfType <ViewResult>(); }
public void ControllerShoulBeForAdminsOnly() { //Arrange var controller = new AdminTownsController(null); //Act var attributes = controller.GetType().GetCustomAttributes(true); //Assert var authorizeAttribute = attributes.FirstOrDefault(a => a.GetType() == typeof(AuthorizeAttribute)); authorizeAttribute.As <AuthorizeAttribute>().Roles.Should().Be(Role.Administrator.ToString()); }
public void ControllerShoulBeInAdminArea() { //Arrange var controller = new AdminTownsController(null); //Act var attributes = controller.GetType().GetCustomAttributes(true); //Assert attributes.Any(a => a.GetType() == typeof(AreaAttribute)); var areaAttribute = attributes.FirstOrDefault(a => a.GetType() == typeof(AreaAttribute)); areaAttribute.As <AreaAttribute>().RouteValue.Should().Be(WebConstants.Area.Admin); }
public void All_WithPageLessOrEqualToZeroShouldRedirectToAllTowns(int page) { //Arrange var controller = new AdminTownsController(this.townService.Object); //Act var result = controller.All(string.Empty, page); //Assert result.Should().BeOfType <RedirectToActionResult>(); var model = result.As <RedirectToActionResult>(); model.ActionName.Should().Be(WebConstants.Action.AdminAllTowns); model.RouteValues.Keys.Should().Contain(RouteValueKeyPage); model.RouteValues.Values.Should().Contain(MinPageSize); model.RouteValues.Keys.Should().Contain(RouteValueKeySearchTerm); model.RouteValues.Values.Should().Contain(string.Empty); }
public void Post_AddTownShouldRedirectToAllTownsWithCorrectData() { //Arrange var controller = new AdminTownsController(this.townService.Object); this.townService.Setup(t => t.TownExistsByName(It.IsAny <string>())) .Returns(false); this.PrepareTempData(); controller.TempData = this.tempData.Object; //Act var result = controller.Add(this.GetAddTownForm()); //Assert result.Should().BeOfType <RedirectToActionResult>(); this.customMessage.Should().Be(string.Format(WebConstants.Message.TownAdded, TownName)); }
public void Post_AddTownShouldReturnAddTownFormForInvalidModelState() { //Arrange var controller = new AdminTownsController(this.townService.Object); controller.ModelState.AddModelError(string.Empty, "Error"); //Act var result = controller.Add(this.GetAddTownForm()); //Assert result.Should().BeOfType <ViewResult>(); var model = result.As <ViewResult>().Model; model.Should().BeOfType <AddTownFormModel>(); var form = model.As <AddTownFormModel>(); form.Name.Should().Be(TownName); }
public void TownStations_WithExistingTownAndNoStationsShouldReturnCountZero() { //Arrange var controller = new AdminTownsController(this.townService.Object); this.townService.Setup(t => t.TownExists(It.IsAny <int>())) .Returns(true); this.townService.Setup(t => t.TownStations(It.IsAny <int>())) .Returns(new List <AdminTownStationsServiceModel>()); //Act var result = controller.TownStations(TownId); //Assert result.Should().BeOfType <JsonResult>(); var model = result.As <JsonResult>().Value; model.As <IEnumerable <AdminTownStationsServiceModel> >().Should().HaveCount(0); }
public void TownStations_ShouldRedirectToAllTownsForNonExistingTown() { //Arrange var controller = new AdminTownsController(this.townService.Object); this.townService.Setup(t => t.TownExists(It.IsAny <int>())) .Returns(false); this.PrepareTempData(); controller.TempData = this.tempData.Object; //Act var result = controller.TownStations(TownId); //Assert result.Should().BeOfType <RedirectToActionResult>(); var model = result.As <RedirectToActionResult>(); model.ActionName.Should().Be(WebConstants.Action.AdminAllTowns); this.customMessage.Should().Be(string.Format(WebConstants.Message.NonExistingEntity, nameof(WebConstants.Entity.Town), TownId)); }
public void Post_AddTownShouldReturnAddTownFormForAlreadyExistingTown() { //Arrange var controller = new AdminTownsController(this.townService.Object); this.townService.Setup(t => t.TownExistsByName(It.IsAny <string>())) .Returns(true); //Act var result = controller.Add(this.GetAddTownForm()); //Assert result.Should().BeOfType <ViewResult>(); var errors = controller.ModelState.Root.Errors; errors.Any(e => e.ErrorMessage == string.Format(WebConstants.Message.EntityAlreadyExist, nameof(WebConstants.Entity.Town))); var model = result.As <ViewResult>().Model; model.Should().BeOfType <AddTownFormModel>(); var form = model.As <AddTownFormModel>(); form.Name.Should().Be(TownName); }