Context MakeContext(string path = "/", string query = "?query=query") { var context = new Context(); var configurationMock = new Mock <IConfiguration>(); configurationMock.Setup(m => m[DefaultPasswordKey]) .Returns(DefaultPassword); context.Configuration = configurationMock.Object; context.Roles.Add(new Role { Id = 1, Name = Role.Names.Admin }); context.Roles.Add(new Role { Id = 2, Name = Role.Names.Operator }); context.Roles.Add(new Role { Id = 3, Name = Role.Names.Manager }); var rolesDaoMock = new Mock <IRolesDao>(); rolesDaoMock.Setup(m => m.GetAllAsync(It.IsAny <bool>())) .ReturnsAsync((bool includeAdmin) => { var roles = context.Roles.AsEnumerable(); if (!includeAdmin) { roles = roles.ExceptAdmin(); } return(roles); }); rolesDaoMock.Setup(m => m.GetByIdAsync(It.IsAny <long>())) .ReturnsAsync((long id) => context.Roles.First(r => r.Id == id)); context.RolesDao = rolesDaoMock.Object; var usersDaoMock = new Mock <IUsersDao>(); usersDaoMock.Setup(m => m.GetAllAsync( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <SortOrder>())) .ReturnsAsync(( string filterUserName, string filterEmail, string filterFistName, string filterLastName, string filterRoleName, string sortKey, SortOrder sortOrder) => { return(context.Users .Where(u => u.UserName.Contains(filterUserName)) .Where(u => u.Email.Contains(filterEmail)) .Where(u => u.FirstName.Contains(filterFistName)) .Where(u => u.LastName.Contains(filterLastName)) .Where(u => u.Role.Name.Contains(filterRoleName)) .Order(sortKey, sortOrder)); }); usersDaoMock.Setup(m => m.GetByIdWithRoleAsync(It.IsAny <long>())) .ReturnsAsync((long id) => context.Users.First(u => u.Id == id)); usersDaoMock.Setup(m => m.CreateAsync( It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>())) .Callback((User user, string password, string roleName) => { user.PasswordHash = password; user.UserRoles = new List <UserRole> { new UserRole { User = user, Role = new Role { Name = roleName } } }; context.Users.Add(user); }); usersDaoMock.Setup(m => m.UpdateAsync(It.IsAny <User>(), It.IsAny <long>())) .Callback((User user, long roleId) => { var contextUser = context.Users.First(u => u.Id == user.Id); contextUser.UserName = user.UserName; contextUser.Email = user.Email; contextUser.FirstName = user.FirstName; contextUser.LastName = user.LastName; contextUser.UserRoles.First().RoleId = roleId; }); usersDaoMock.Setup(m => m.ResetPasswordAsync(It.IsAny <long>(), It.IsAny <string>())) .Callback((long userId, string password) => { var user = context.Users.First(u => u.Id == userId); user.PasswordHash = password; }); usersDaoMock.Setup(m => m.DeleteAsync(It.IsAny <long>())) .Callback((long userId) => { var user = context.Users.First(u => u.Id == userId); context.Users.Remove(user); }); context.UsersDao = usersDaoMock.Object; var httpContextMock = new Mock <HttpContext>(); httpContextMock.Setup(m => m.Request.Path) .Returns(path); httpContextMock.Setup(m => m.Request.QueryString) .Returns(new QueryString(query)); var controllerContext = new ControllerContext { HttpContext = httpContextMock.Object }; context.ControllerContext = controllerContext; var tempDataDictionaryMock = new Mock <ITempDataDictionary>(); var tryGetValueCallback = new Context.TryGetTempDataValueCallback((string key, out object value) => { context.TempData.TryGetValue(key, out value); }); object dummy; tempDataDictionaryMock.Setup(m => m.TryGetValue(It.IsAny <string>(), out dummy)) .Callback(tryGetValueCallback) .Returns(true); tempDataDictionaryMock.SetupSet(m => m[It.IsAny <string>()] = It.IsAny <object>()) .Callback((string key, object o) => context.TempData[key] = o); context.TempDataDictionary = tempDataDictionaryMock.Object; return(context); }
Context MakeContext( string path = "/", string query = "?query=query", int myBranchIndex = 0) { var context = new Context(); var currentUserServiceMock = new Mock <ICurrentUserService>(); currentUserServiceMock.Setup(m => m.GetUserAsync()) .ReturnsAsync(context.LoggedInUser); currentUserServiceMock.Setup(m => m.GetBranchAsync()) .ReturnsAsync(context.Branches[myBranchIndex]); currentUserServiceMock.Setup(m => m.GetCarAsync()) .ReturnsAsync(context.MyCar); context.CurrentUserService = currentUserServiceMock.Object; var branchesDaoMock = new Mock <IBranchesDao>(); branchesDaoMock.Setup(m => m.GetAllAsync( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <SortOrder>())) .ReturnsAsync(context.Branches); context.BranchesDao = branchesDaoMock.Object; var mailDaoMock = new Mock <IMailDao>(); mailDaoMock.Setup(m => m.GetAllAsync( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <long?>(), It.IsAny <string>(), It.IsAny <long?>(), It.IsAny <long?>(), It.IsAny <long?>(), It.IsAny <PostState?>(), It.IsAny <string>(), It.IsAny <SortOrder>() )). ReturnsAsync(( string filterId, string filterPersonFrom, string filterPersonTo, string filterAddressTo, long?filterBranchId, string filterBranchStockAddress, long?filterCarId, long?filterSourceBranchId, long?filterDestinationBranchId, PostState? filterState, string sortKey, SortOrder sortOrder) => { var mail = context.Mail.AsEnumerable(); if (filterBranchId.HasValue) { mail = mail.Where(p => p.BranchId == filterBranchId.Value); } if (filterCarId.HasValue) { mail = mail.Where(p => p.CarId == filterCarId.Value); } return(mail .Where(p => p.SourceBranchId == filterSourceBranchId.Value) .Where(p => p.DestinationBranchId == filterDestinationBranchId.Value) .Where(p => p.State == filterState.Value) .Order(sortKey, sortOrder)); }); mailDaoMock.Setup(m => m.MoveToCarAsync( It.IsAny <long>(), It.IsAny <Car>(), It.IsAny <bool>(), It.IsAny <User>())) .Callback((long postId, Car car, bool courierDelivery, User user) => { var post = context.Mail.First(p => p.Id == postId); post.State = PostState.InDeliveryToBranchStock; post.BranchId = null; post.BranchStockAddress = null; post.CarId = car.Id; }); mailDaoMock.Setup(m => m.MoveToBranchStockAsync( It.IsAny <long>(), It.IsAny <Branch>(), It.IsAny <User>())) .Callback((long postId, Branch branch, User user) => { var post = context.Mail.First(p => p.Id == postId); post.State = PostState.InBranchStock; post.BranchId = branch.Id; post.BranchStockAddress = null; post.CarId = null; }); context.MailDaoMock = mailDaoMock; var httpContextMock = new Mock <HttpContext>(); httpContextMock.Setup(m => m.Request.Path) .Returns(path); httpContextMock.Setup(m => m.Request.QueryString) .Returns(new QueryString(query)); var controllerContext = new ControllerContext { HttpContext = httpContextMock.Object }; context.ControllerContext = controllerContext; var tempDataDictionaryMock = new Mock <ITempDataDictionary>(); var tryGetValueCallback = new Context.TryGetTempDataValueCallback((string key, out object value) => { context.TempData.TryGetValue(key, out value); }); object dummy; tempDataDictionaryMock.Setup(m => m.TryGetValue(It.IsAny <string>(), out dummy)) .Callback(tryGetValueCallback) .Returns(true); tempDataDictionaryMock.SetupSet(m => m[It.IsAny <string>()] = It.IsAny <object>()) .Callback((string key, object o) => context.TempData[key] = o); context.TempDataDictionary = tempDataDictionaryMock.Object; return(context); }
Context MakeContext() { var context = new Context(); var usersDaoMock = new Mock <IUsersDao>(); usersDaoMock.Setup(m => m.LoginAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>())) .ReturnsAsync((string email, string password, bool rememberMe) => { var user = context.Users.FirstOrDefault(u => u.Email == email); if (user == null) { return(false); } if (user.PasswordHash != password) { return(false); } context.LoggedInUser = user; return(true); }); usersDaoMock.Setup(m => m.LogoutAsync()) .Callback(() => context.LoggedInUser = null); usersDaoMock.Setup(m => m.CheckPasswordAsync(It.IsAny <long>(), It.IsAny <string>())) .ReturnsAsync((long id, string password) => { var user = context.Users.First(u => u.Id == id); return(user.PasswordHash == password); }); usersDaoMock.Setup(m => m.UpdateAsync(It.IsAny <User>(), It.IsAny <long>())) .Callback((User user, long roleId) => { var contextUser = context.Users.First(u => u.Id == user.Id); contextUser.UserName = user.UserName; contextUser.Email = user.Email; contextUser.FirstName = user.FirstName; contextUser.LastName = user.LastName; }); usersDaoMock.Setup(m => m.ChangePasswordAsync(It.IsAny <long>(), It.IsAny <string>(), It.IsAny <string>())) .Callback((long userId, string currentPassword, string newPassword) => { var user = context.Users.First(u => u.Id == userId); user.PasswordHash = newPassword; }); context.UsersDaoMock = usersDaoMock; context.UsersDao = usersDaoMock.Object; var branchesDaoMock = new Mock <IBranchesDao>(); branchesDaoMock.Setup(m => m.GetAllAsync( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <SortOrder>())) .ReturnsAsync(context.Branches); context.BranchesDao = branchesDaoMock.Object; var carsDaoMock = new Mock <ICarsDao>(); carsDaoMock.Setup(m => m.GetAllAsync( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <SortOrder>())) .ReturnsAsync(context.Cars); context.CarsDao = carsDaoMock.Object; var currentUserServiceMock = new Mock <ICurrentUserService>(); currentUserServiceMock.Setup(m => m.GetUserAsync()) .ReturnsAsync(() => { return(context.LoggedInUser); }); currentUserServiceMock.Setup(m => m.GetRoleAsync()) .ReturnsAsync(() => { return(context.LoggedInUser?.Role); }); currentUserServiceMock.Setup(m => m.GetBranchAsync()) .ReturnsAsync(() => { return(context.CurrentBranch); }); currentUserServiceMock.Setup(m => m.SetBranchAsync(It.IsAny <long>())) .Callback((long branchId) => { var branch = context.Branches.First(b => b.Id == branchId); context.CurrentBranch = branch; }) .ReturnsAsync(true); currentUserServiceMock.Setup(m => m.GetCarAsync()) .ReturnsAsync(() => { return(context.CurrentCar); }); currentUserServiceMock.Setup(m => m.SetCarAsync(It.IsAny <long>())) .Callback((long carId) => { var car = context.Cars.First(b => b.Id == carId); context.CurrentCar = car; }) .ReturnsAsync(true); currentUserServiceMock.Setup(m => m.Reset()) .Callback(() => { context.CurrentBranch = null; context.CurrentCar = null; }); context.CurrentUserServiceMock = currentUserServiceMock; context.CurrentUserService = currentUserServiceMock.Object; var tempDataDictionaryMock = new Mock <ITempDataDictionary>(); var tryGetValueCallback = new Context.TryGetTempDataValueCallback((string key, out object value) => { context.TempData.TryGetValue(key, out value); }); object dummy; tempDataDictionaryMock.Setup(m => m.TryGetValue(It.IsAny <string>(), out dummy)) .Callback(tryGetValueCallback) .Returns(true); tempDataDictionaryMock.SetupSet(m => m[It.IsAny <string>()] = It.IsAny <object>()) .Callback((string key, object o) => context.TempData[key] = o); context.TempDataDictionary = tempDataDictionaryMock.Object; return(context); }