public async Task OnPostDeleteAsync_ReturnsARedirectToPageResult(int userId) { // Arrange var optionsBuilder = new DbContextOptionsBuilder <ClippyContext>() .UseInMemoryDatabase("InMemoryDb"); var mockContext = new Mock <ClippyContext>(optionsBuilder.Options); var mockLogger = new Mock <ILogger <DetailsModel> >(); var expectedUser = DatabaseInitializer.GetSeedingUsers().Single(u => u.Id == userId); mockContext.Setup( db => db.GetUserAsync(userId)).Returns(Task.FromResult(expectedUser)); var httpContext = new DefaultHttpContext(); var tempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>()); var pageModel = new DetailsModel(mockContext.Object, mockLogger.Object) { TempData = tempData }; pageModel.UnitTesting = true; // Act var result = await pageModel.OnPostDeleteAsync(userId); // Assert Assert.IsType <RedirectToPageResult>(result); }
public async Task OnGetAsync_PopulatesThePageModel_WithAUser(int userId) { // Arrange var optionsBuilder = new DbContextOptionsBuilder <ClippyContext>() .UseInMemoryDatabase("InMemoryDb"); var mockContext = new Mock <ClippyContext>(optionsBuilder.Options); var mockLogger = new Mock <ILogger <DetailsModel> >(); var expectedUser = DatabaseInitializer.GetSeedingUsers().Single(u => u.Id == userId); mockContext.Setup( db => db.GetUserAsync(userId)).Returns(Task.FromResult(expectedUser)); var httpContext = new DefaultHttpContext(); var tempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>()); var pageModel = new DetailsModel(mockContext.Object, mockLogger.Object) { TempData = tempData }; // Act await pageModel.OnGetAsync(userId); // Assert var actualUser = Assert.IsAssignableFrom <User>(pageModel.UserEntity); Assert.Equal(expectedUser.Username, actualUser.Username); }
public async Task OnPostAsync_ReturnsAPageResult_WhenChangedUsernameExists(int existingUserId, string otherUsername) { // Arrange var optionsBuilder = new DbContextOptionsBuilder <ClippyContext>() .UseInMemoryDatabase("InMemoryDb"); var mockContext = new Mock <ClippyContext>(optionsBuilder.Options); var mockLogger = new Mock <ILogger <EditModel> >(); var existingUser = DatabaseInitializer.GetSeedingUsers().Single(u => u.Id == existingUserId); var otherUser = new User { Username = otherUsername, Name = existingUser.Username }; mockContext.Setup(db => db.GetUserAsync(existingUser.Id)).Returns(Task.FromResult(existingUser)); mockContext.Setup(db => db.GetUserByUsernameAsync(otherUsername)).Returns(Task.FromResult(otherUser)); 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), UserEntity = new EditUserModel { Username = otherUsername, Name = existingUser.Name } }; // Act var result = await pageModel.OnPostAsync(existingUserId); // Assert Assert.IsType <PageResult>(result); }
public async Task OnGetAsync_PopulatesThePageModel_WithAUser(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); expectedUser.Roles = new List <Role>(); mockContext.Setup( db => db.GetUserAsync(userId)).Returns(Task.FromResult(expectedUser)); var pageModel = new EditModel(mockContext.Object, mockLogger.Object); // Act await pageModel.OnGetAsync(userId); // Assert var actualUser = Assert.IsAssignableFrom <EditUserModel>(pageModel.UserEntity); Assert.Equal(expectedUser.Username, actualUser.Username); }
public async Task OnPostAsync_ReturnsAPageResult_WhenModelStateIsInvalid() { // Arrange var optionsBuilder = new DbContextOptionsBuilder <ClippyContext>() .UseInMemoryDatabase("InMemoryDb"); var mockContext = new Mock <ClippyContext>(optionsBuilder.Options); var mockLogger = new Mock <ILogger <AddModel> >(); var expectedUsers = DatabaseInitializer.GetSeedingUsers(); mockContext.Setup(db => db.GetUsersAsync()).Returns(Task.FromResult(expectedUsers)); // mockLogger.Setup(l => l.LogWarning(AdminLoggingEvents.AddUserEvent, )) 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 AddModel(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(); // Assert Assert.IsType <PageResult>(result); }