public void EnsembleModel_WhenGivenValidData_StoresValidData() { /* Arrange */ // Create a Mocked IHostingEnviornment var mockHostEnv = new Mock <IHostingEnvironment>(); //Create a Ensemble Model var model = new EnsembleModel(); //create valid data var ensemble = new Ensemble(); var profiles = new List <Profile>(); var instruments = new List <SelectListItem>(); var selected = new List <string>(); var auds = new HashSet <Audition>(); /* Act */ model.Ensemble = ensemble; model.Profiles = profiles; model.Instruments = instruments; model.SelectedInsId = selected; model.Audition = auds; /* Assert */ Assert.IsType <Ensemble>(model.Ensemble); Assert.IsType <List <Profile> >(model.Profiles); Assert.IsType <List <string> >(model.SelectedInsId); Assert.IsAssignableFrom <ICollection <Audition> >(model.Audition); }
public void EditEnsemble_WhenCalledWithPost_UpdatesDatabase() { /* Arrange */ var mockHostEnv = new Mock <IHostingEnvironment>(); // Create DB data var uData = new List <User> { new User { UserId = 1, Password = "******", Email = "*****@*****.**" }, new User { UserId = 2, Password = "******", Email = "*****@*****.**" }, new User { UserId = 3, Password = "******", Email = "*****@*****.**" }, new User { UserId = 4, Password = "******", Email = "*****@*****.**" }, new User { UserId = 5, Password = "******", Email = "*****@*****.**" } }.AsQueryable(); var eData = new List <Ensemble> { new Ensemble { EnsembleId = 21, Ensemble_Name = "Blue Group", UserId = 1 }, new Ensemble { EnsembleId = 22, Ensemble_Name = "Red Group", UserId = 2 } }.AsQueryable(); // Create Mocked DB Sets var mockUsers = new Mock <DbSet <User> >(); mockUsers.As <IQueryable <User> >().Setup(u => u.Provider).Returns(uData.Provider); mockUsers.As <IQueryable <User> >().Setup(m => m.Expression).Returns(uData.Expression); mockUsers.As <IQueryable <User> >().Setup(m => m.ElementType).Returns(uData.ElementType); mockUsers.As <IQueryable <User> >().Setup(m => m.GetEnumerator()).Returns(uData.GetEnumerator()); var mockEnsemble = new Mock <DbSet <Ensemble> >(); mockEnsemble.As <IQueryable <Ensemble> >().Setup(u => u.Provider).Returns(eData.Provider); mockEnsemble.As <IQueryable <Ensemble> >().Setup(m => m.Expression).Returns(eData.Expression); mockEnsemble.As <IQueryable <Ensemble> >().Setup(m => m.ElementType).Returns(eData.ElementType); mockEnsemble.As <IQueryable <Ensemble> >().Setup(m => m.GetEnumerator()).Returns(eData.GetEnumerator()); // Create a Mocked DB var mockDB = new Mock <PluggedContext>(); // Set up necessary Mocked DB methods mockDB.Setup(x => x.Users) .Returns(mockUsers.Object); mockDB.Setup(x => x.Ensembles) .Returns(mockEnsemble.Object); mockDB.Setup(x => x.Ensembles.Find(It.IsAny <int>())) .Returns(mockEnsemble.Object.FirstOrDefault(p => p.EnsembleId == 21)); var controllerMock = new Mock <HomeController>(mockDB.Object, mockHostEnv.Object); // Mock the request object and the resulting login information SessionModel fakeSM = new SessionModel(); fakeSM.IsLoggedIn = true; fakeSM.UserID = 1; var controller = controllerMock.Object; controller.ControllerContext = new ControllerContext(); controller.ControllerContext.HttpContext = new DefaultHttpContext(); var mockReq = controller.ControllerContext.HttpContext.Request; controllerMock.Setup(x => x.GetSessionInfo(mockReq)).Returns(fakeSM); controllerMock.CallBase = true; EnsembleModel model = new EnsembleModel(); var ensemble = new Ensemble(); model.Ensemble = ensemble; model.Ensemble.Ensemble_Name = "Purple Group"; model.Ensemble.Formed_Date = new System.DateTime(2015, 4, 13); model.Ensemble.Disbanded_Date = new System.DateTime(2020, 4, 13); model.Ensemble.City = "Prospit"; model.Ensemble.State = "HS"; model.Ensemble.Type = "Brass Band"; model.Ensemble.Genre = "Jazz"; model.Ensemble.Bio = "Here is an about us"; /* Act */ var result = controller.EditEnsemble(21, model); /* Assert */ Assert.IsType <RedirectToActionResult>(result.Result); RedirectToActionResult redirect = (RedirectToActionResult)result.Result; Assert.Equal("Ensemble", redirect.ActionName); var editedensemble = mockDB.Object.Ensembles.Find(21); Assert.Equal("Purple Group", editedensemble.Ensemble_Name); Assert.Equal(new System.DateTime(2015, 4, 13), editedensemble.Formed_Date); Assert.Equal(new System.DateTime(2020, 4, 13), editedensemble.Disbanded_Date); Assert.Equal("Brass Band", editedensemble.Type); Assert.Equal("Jazz", editedensemble.Genre); Assert.Equal("Here is an about us", editedensemble.Bio); Assert.Equal("Prospit", editedensemble.City); Assert.Equal("HS", editedensemble.State); }
public void EditEnsemble_WhenCalledWithGet_ReturnsValidView() { /* Arrange */ var mockHostEnv = new Mock <IHostingEnvironment>(); // Create DB data var uData = new List <User> { new User { UserId = 1, Password = "******", Email = "*****@*****.**" }, new User { UserId = 2, Password = "******", Email = "*****@*****.**" }, new User { UserId = 3, Password = "******", Email = "*****@*****.**" }, new User { UserId = 4, Password = "******", Email = "*****@*****.**" }, new User { UserId = 5, Password = "******", Email = "*****@*****.**" } }.AsQueryable(); var eData = new List <Ensemble> { new Ensemble { EnsembleId = 21, Ensemble_Name = "Blue Group", UserId = 1 }, new Ensemble { EnsembleId = 22, Ensemble_Name = "Red Group", UserId = 2 } }.AsQueryable(); // Create Mocked DB Sets var mockUsers = new Mock <DbSet <User> >(); mockUsers.As <IQueryable <User> >().Setup(u => u.Provider).Returns(uData.Provider); mockUsers.As <IQueryable <User> >().Setup(m => m.Expression).Returns(uData.Expression); mockUsers.As <IQueryable <User> >().Setup(m => m.ElementType).Returns(uData.ElementType); mockUsers.As <IQueryable <User> >().Setup(m => m.GetEnumerator()).Returns(uData.GetEnumerator()); var mockEnsemble = new Mock <DbSet <Ensemble> >(); mockEnsemble.As <IQueryable <Ensemble> >().Setup(u => u.Provider).Returns(eData.Provider); mockEnsemble.As <IQueryable <Ensemble> >().Setup(m => m.Expression).Returns(eData.Expression); mockEnsemble.As <IQueryable <Ensemble> >().Setup(m => m.ElementType).Returns(eData.ElementType); mockEnsemble.As <IQueryable <Ensemble> >().Setup(m => m.GetEnumerator()).Returns(eData.GetEnumerator()); // Create a Mocked DB var mockDB = new Mock <PluggedContext>(); // Set up necessary Mocked DB methods mockDB.Setup(x => x.Users) .Returns(mockUsers.Object); mockDB.Setup(x => x.Ensembles) .Returns(mockEnsemble.Object); mockDB.Setup(x => x.Ensembles.Find(It.IsAny <int>())) .Returns(mockEnsemble.Object.FirstOrDefault(p => p.EnsembleId == 21)); var controllerMock = new Mock <HomeController>(mockDB.Object, mockHostEnv.Object); // Mock the request object and the resulting login information SessionModel fakeSM = new SessionModel(); fakeSM.IsLoggedIn = true; fakeSM.UserID = 1; var controller = controllerMock.Object; controller.ControllerContext = new ControllerContext(); controller.ControllerContext.HttpContext = new DefaultHttpContext(); var mockReq = controller.ControllerContext.HttpContext.Request; controllerMock.Setup(x => x.GetSessionInfo(mockReq)).Returns(fakeSM); controllerMock.CallBase = true; /* Act */ var result = controller.EditEnsemble(21); /* Assert */ Assert.IsType <ViewResult>(result.Result); ViewResult view = (ViewResult)result.Result; EnsembleModel model = (EnsembleModel)view.Model; Assert.Equal(21, model.Ensemble.EnsembleId); }