public async Task OnPostAsync_ReturnsAPageResult_WhenResourceLocationExists(int id, string existingLocation) { // Arrange var optionsBuilder = new DbContextOptionsBuilder <ClippyContext>() .UseInMemoryDatabase("InMemoryDb"); var mockContext = new Mock <ClippyContext>(optionsBuilder.Options); var idResource = DatabaseInitializer.GetSeedingResources().Single(r => r.Id == id); var locationResource = DatabaseInitializer.GetSeedingResources().Single(r => r.Location == existingLocation); mockContext.Setup(db => db.GetResourceAsync(id)).Returns(Task.FromResult(idResource)); mockContext.Setup(db => db.GetResourceByLocationAsync(existingLocation)).Returns(Task.FromResult(locationResource)); var httpContext = new DefaultHttpContext(); var modelState = new ModelStateDictionary(); var actionContext = new ActionContext(httpContext, new RouteData(), new PageActionDescriptor(), modelState); var modelMetadataProvider = new EmptyModelMetadataProvider(); var viewData = new ViewDataDictionary(modelMetadataProvider, modelState); var tempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>()); var pageContext = new PageContext(actionContext) { ViewData = viewData }; var pageModel = new EditModel(mockContext.Object) { PageContext = pageContext, TempData = tempData, Url = new UrlHelper(actionContext), Resource = new EditResourceModel { Title = "1234567890", Location = existingLocation } }; // Act var result = await pageModel.OnPostAsync(id); // Assert Assert.IsType <PageResult>(result); }
public async Task OnPostAsync_ReturnsAPageResult_WhenModelStateIsInvalid(int userId) { // Arrange var optionsBuilder = new DbContextOptionsBuilder <ClippyContext>() .UseInMemoryDatabase("InMemoryDb"); var mockContext = new Mock <ClippyContext>(optionsBuilder.Options); var mockLogger = new Mock <ILogger <EditModel> >(); var expectedUser = DatabaseInitializer.GetSeedingUsers().Single(u => u.Id == userId); mockContext.Setup(db => db.GetUserAsync(userId)).Returns(Task.FromResult(expectedUser)); var httpContext = new DefaultHttpContext(); var modelState = new ModelStateDictionary(); var actionContext = new ActionContext(httpContext, new RouteData(), new PageActionDescriptor(), modelState); var modelMetadataProvider = new EmptyModelMetadataProvider(); var viewData = new ViewDataDictionary(modelMetadataProvider, modelState); var tempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>()); var pageContext = new PageContext(actionContext) { ViewData = viewData }; var pageModel = new EditModel(mockContext.Object, mockLogger.Object) { PageContext = pageContext, TempData = tempData, Url = new UrlHelper(actionContext) }; pageModel.ModelState.AddModelError("Username", "Username is required."); // Act var result = await pageModel.OnPostAsync(userId); // Assert Assert.IsType <PageResult>(result); }
public async Task OnPostEditLoanApplicationAsync_ReturnsARedirectToPageResult_WhenModelStateIsInValid() { // Arrange var authorizationService = new Mock <IAuthorizationService>(); authorizationService.Setup(x => x.AuthorizeAsync(It.IsAny <ClaimsPrincipal>(), It.IsAny <object>(), It.IsAny <IEnumerable <IAuthorizationRequirement> >())) .ReturnsAsync(AuthorizationResult.Success()); var store = new Mock <IUserStore <IdentityUser> >(); var mgr = new Mock <UserManager <IdentityUser> >(store.Object, null, null, null, null, null, null, null, null); var httpContext = new DefaultHttpContext(); var modelState = new ModelStateDictionary(); var actionContext = new ActionContext(httpContext, new RouteData(), new PageActionDescriptor(), modelState); var modelMetadataProvider = new EmptyModelMetadataProvider(); var viewData = new ViewDataDictionary(modelMetadataProvider, modelState); var tempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>()); var pageContext = new PageContext(actionContext) { ViewData = viewData }; var loanId = 1; var pageModel = new EditModel(AppDbContext, authorizationService.Object, mgr.Object) { PageContext = pageContext, TempData = tempData, Url = new UrlHelper(actionContext), }; pageModel.ModelState.AddModelError("LoanApplication.Purpose", "Loan purpose is required."); // Act // A new ModelStateDictionary is valid by default. var result = await pageModel.OnPostAsync(loanId); // Assert Assert.IsType <PageResult>(result); }
public async Task OnPostAsync_EditAnAssignment_ShouldUpdateCoverageTypesAndApplicationModesToAllNotChecked() { // Arrange var pageModel = new EditModel(MockAppDbContext.Object) { Assignment = ApplicationDbContext.GetSeedingAssignments().First(x => x.Id == 1), }; pageModel.ApplicationModes = await pageModel.GetApplicationModes(1); pageModel.CoverageTypeOptions = await pageModel.GetCoverageTypeOptions(1); pageModel.ApplicationModes.ToList().ForEach(mode => mode.IsChecked = false); pageModel.CoverageTypeOptions.ToList().ForEach(type => type.IsChecked = false); // Act await pageModel.OnPostAsync(1); // Assert var updatedAssignment = await MockAppDbContext.Object.GetAssignmentById(1); updatedAssignment.AssignmentApplicationModes.ToList().ForEach(mode => Assert.False(mode.IsChecked)); updatedAssignment.AssignmentCoverageTypeOptions.ToList().ForEach(type => Assert.False(type.IsChecked)); }