public AccountRoutes() : base("/account") { Get[@"/login"] = _ => View["account/login/index"]; Post[@"/login"] = _ => { var loginParams = this.Bind<LoginParams>(); FakeDatabaseUser user; FakeDatabase db = new FakeDatabase(); user = db.Users.FirstOrDefault( x => x.UserName.Equals(loginParams.LoginName) && x.Password.Equals(loginParams.Password)); if (user == null) { return View["account/loginerror"]; } return this.Login(user.UserId, fallbackRedirectUrl: "http://*****:*****@"/logout"] = _ => this.LogoutAndRedirect("http://localhost:3579/account/login"); }
public void DataCenterEditExistingStartTest() { var db = new FakeDatabase(); db.AddSet(TestDataCenterData.DataCenters); var controller = new DataCentersController(db); controller.ControllerContext = new FakeControllerContext(); ViewResult result = controller.Edit(1) as ViewResult; Assert.IsNotNull(result); Assert.AreEqual(typeof(DataCenter), result.Model.GetType()); Assert.AreEqual("Test1", ((DataCenter)result.Model).Name); }
public void AjaxSeatList() { var db = new FakeDatabase(); var st = new FakeSkyTap(); db.AddSet(TestSeatTempData.SeatTemps); var controller = new ClassroomsController(db, st); controller.ControllerContext = new FakeControllerContext(); DTParameters param = new DTParameters() {SessionId= "12345", Start = 2, Length = 3, Search = new DTSearch(), Order = new DTOrder[1] { new DTOrder() { Column = 1, Dir = DTOrderDir.ASC } } }; JsonResult result = controller.AjaxSeat(param) as JsonResult; Assert.IsNotNull(result); Assert.AreEqual(3, ((List<SeatTemp>)((DTResult<SeatTemp>)result.Data).data).Count); }
public void Register(string email, string password) { if (!email.Contains("@")) throw new Exception("Email is not an email!"); var user = new User(email, password); var db = new FakeDatabase(); db.Save(user); var smtpClient = new FakeSmtpClient(); smtpClient.Send(new MailMessage("*****@*****.**", email) { Subject = "Hello fool!" }); }
public void DataCenterAjaxList() { var db = new FakeDatabase(); db.AddSet(TestDataCenterData.DataCenters); var controller = new DataCentersController(db); controller.ControllerContext = new FakeControllerContext(); DTParameters param = new DTParameters() { Start = 2, Length = 3, Search = new DTSearch(), Order = new DTOrder[1] { new DTOrder() { Column = 1, Dir = DTOrderDir.ASC } } }; JsonResult result = controller.Ajax(param) as JsonResult; Assert.IsNotNull(result); Assert.AreEqual(3, ((List<DataCenter>)((DTResult<DataCenter>)result.Data).data).Count); Assert.AreEqual("Test2", ((List<DataCenter>)((DTResult<DataCenter>)result.Data).data)[0].Name); }
public void CourseControllerIndexTest() { // Arrange var db = new FakeDatabase(); var st = new FakeSkyTap(); CoursesController controller = new CoursesController(db, st); // Act ViewResult result = controller.Index() as ViewResult; // Assert Assert.IsNotNull(result); }
public void HomeControllerInitialIndexTest() { // Arrange var db = new FakeDatabase(); db.AddSet(TestUserData.Users); HomeController controller = new HomeController(db); controller.ControllerContext = new FakeControllerContext(); // Act ViewResult result = controller.Index() as ViewResult; // Assert Assert.IsNotNull(result); }
public void UsersControllerInitialIndexTest() { // Arrange var db = new FakeDatabase(); IAuth auth = new FakeFormAuthenticator(); UsersController controller = new UsersController(db, auth); // Act ViewResult result = controller.Index() as ViewResult; // Assert Assert.IsNotNull(result); }
public void MachineAjaxList() { var db = new FakeDatabase(); var st = new FakeSkyTap(); db.AddSet(TestCourseMachineTempData.CourseMachineTemps); var controller = new CoursesController(db, st); controller.ControllerContext = new FakeControllerContext(); DTParameters param = new DTParameters() { Start = 2, Length = 5, Search = new DTSearch(), Order = new DTOrder[1] { new DTOrder() { Column = 1, Dir = DTOrderDir.ASC } }, Course = 1, SessionId = "12345" }; JsonResult result = controller.MachineAjax(param) as JsonResult; Assert.IsNotNull(result); Assert.AreEqual(5, ((List<CourseMachineTemp>)((DTResult<CourseMachineTemp>)result.Data).data).Count); Assert.AreEqual("Test3", ((List<CourseMachineTemp>)((DTResult<CourseMachineTemp>)result.Data).data)[0].VMName); }
public void EditStartNew() { var db = new FakeDatabase(); db.AddSet(TestUserData.Users); db.AddSet(TestSeatData.Seats); db.AddSet(TestSeatTempData.SeatTemps); db.AddSet(TestDataCenterData.DataCenters); db.AddSet(TestCourseData.Courses); var st = new FakeSkyTap(); var controller = new ClassroomsController(db, st); controller.ControllerContext = new FakeControllerContext(); ViewResult result = controller.Edit(0) as ViewResult; Assert.IsNotNull(result); Assert.AreEqual(0, ((Classroom)result.Model).ClassroomId); }
public void CourseEditNewStartTest() { var db = new FakeDatabase(); var st = new FakeSkyTap(); db.AddSet(TestCourseData.Courses); db.AddSet(TestCourseMachineTempData.CourseMachineTemps); st.AddSet(TestTemplateRESTData.templates); var controller = new CoursesController(db, st); controller.ControllerContext = new FakeControllerContext(); ViewResult result = controller.Edit(0) as ViewResult; Assert.IsNotNull(result); Assert.AreEqual(11, ((List<Template>)((SelectList)result.ViewBag.Template).Items).Count); Assert.AreEqual(typeof(Course), result.Model.GetType()); Assert.AreEqual("New", ((Course)result.Model).Name); }
public void LogWriteTest() { // Arrange FakeDatabase db = new FakeDatabase(); HttpContextBase cx = new FakeHttpContext(); // Act Log.Write(db, cx, new Log() {Detail="TestMessage", Message=LogMessages.connected }); // Assert Assert.AreEqual(1, db.LogAdded.Count); Assert.AreEqual(LogMessages.connected, ((Log)db.LogAdded[0]).Message); Assert.AreEqual("TestMessage", ((Log)db.LogAdded[0]).Detail); }
public void UsersControllerEditExistingUserInitialTest() { var db = new FakeDatabase(); IAuth auth = new FakeFormAuthenticator(); //// var st = new FakeSkyTap(); db.AddSet(TestUserData.Users); //// db.AddSet(TestCourseData.Courses); //// db.AddSet(TestClassroomData.Classrooms); //// st.AddSet(TestTemplateRESTData.templates); var controller = new UsersController(db, auth); //// controller.ControllerContext = new FakeControllerContext(); ViewResult result = controller.Edit(1) as ViewResult; Assert.IsNotNull(result); Assert.AreEqual(typeof(User), result.Model.GetType()); Assert.AreEqual("*****@*****.**", ((User)result.Model).EmailAddress); }
public void UsersControllerEditNewUserPostbackValidPasswordTest() { var db = new FakeDatabase(); IAuth auth = new FakeFormAuthenticator(); ////var st = new FakeSkyTap(); db.AddSet(TestUserData.Users); ////db.AddSet(TestCourseData.Courses); ////db.AddSet(TestClassroomData.Classrooms); ////st.AddSet(TestTemplateRESTData.templates); UsersController controller = new UsersController(db, auth); controller.ControllerContext = new FakeControllerContext(); User testUser = new User() { UserId = 0, EmailAddress = "TestNew", NewPassword1 = "TestPassword", NewPassword2 = "TestPassword" }; var result = controller.Edit(testUser); Assert.IsNotNull(result); Assert.AreEqual(typeof(RedirectToRouteResult), result.GetType()); Assert.AreEqual(1, db.Added.Count); Assert.AreEqual("TestNew", ((User)db.Added[0]).EmailAddress); Assert.AreEqual(true, PasswordHash.ValidatePassword("TestPassword", ((User)db.Added[0]).Password)); Assert.AreEqual(1, db.LogAdded.Count); Assert.AreEqual(2, db.saved); }
public UserServiceTests(ITestOutputHelper output) { _fakeDatabase = new FakeDatabase(); _userService = new UserService(l => output.WriteLine(l), _fakeDatabase); }
public ReportServiceTest() { db = FakeDatabase.InitialDatabase(); }
protected override async ValueTask LeaseOrderItems( Lease lease, List <OrderItemContext <SessionOpportunity> > orderItemContexts, StoreBookingFlowContext flowContext, OrderStateContext stateContext, OrderTransaction databaseTransaction) { // Check that there are no conflicts between the supplied opportunities // Also take into account spaces requested across OrderItems against total spaces in each opportunity foreach (var ctxGroup in orderItemContexts.Where(ctx => !ctx.HasErrors).GroupBy(x => x.RequestBookableOpportunityOfferId)) { // TODO: ENSURE THAT THIS IS CALLED EVERY TIME BY THE STOREBOOKINGENGINE, EVEN WITH ZERO ITEMS // This will ensure that items can be removed from the Order before the booking is confirmed if all items of that type have been removed from the lease // Step 1: Get existing lease from database // Step 2: Compare items in the existing lease to items in the request // Step 3: Add/remove lease items to match the request //Dictionary<long, int> existingLease = new Dictionary<long, int>(); // Check that the Opportunity ID and type are as expected for the store if (ctxGroup.Key.OpportunityType != OpportunityType.ScheduledSession || !ctxGroup.Key.ScheduledSessionId.HasValue) { foreach (var ctx in ctxGroup) { ctx.AddError(new OpportunityIntractableError(), "Opportunity ID and type are as not expected for the store. Likely a configuration issue with the Booking System."); } } else { //var existingOpportunities = existingLease[ctxGroup.Key.ScheduledSessionId.Value]; // Attempt to lease for those with the same IDs, which is atomic var(result, capacityErrors, capacityLeaseErrors) = await FakeDatabase.LeaseOrderItemsForClassOccurrence( databaseTransaction.FakeDatabaseTransaction, flowContext.OrderId.ClientId, flowContext.SellerId.SellerIdLong ?? null /* Hack to allow this to work in Single Seller mode too */, flowContext.OrderId.uuid, ctxGroup.Key.ScheduledSessionId.Value, ctxGroup.Count()); switch (result) { case ReserveOrderItemsResult.Success: // Do nothing, no errors to add break; case ReserveOrderItemsResult.SellerIdMismatch: foreach (var ctx in ctxGroup) { ctx.AddError(new SellerMismatchError(), "An OrderItem SellerID did not match"); } break; case ReserveOrderItemsResult.OpportunityNotFound: foreach (var ctx in ctxGroup) { ctx.AddError(new UnableToProcessOrderItemError(), "Opportunity not found"); } break; case ReserveOrderItemsResult.OpportunityOfferPairNotBookable: foreach (var ctx in ctxGroup) { ctx.AddError(new OpportunityOfferPairNotBookableError(), "Opportunity not bookable"); } break; case ReserveOrderItemsResult.NotEnoughCapacity: var contexts = ctxGroup.ToArray(); for (var i = contexts.Length - 1; i >= 0; i--) { var ctx = contexts[i]; if (capacityErrors > 0) { ctx.AddError(new OpportunityHasInsufficientCapacityError()); capacityErrors--; } else if (capacityLeaseErrors > 0) { ctx.AddError(new OpportunityCapacityIsReservedByLeaseError()); capacityLeaseErrors--; } } break; default: foreach (var ctx in ctxGroup) { ctx.AddError(new OpportunityIntractableError(), "OrderItem could not be leased for unexpected reasons."); } break; } } } }
public static void Main (string[] args) { var db = new FakeDatabase (); var query1 = from lecture in db.Lectures group lecture by lecture.TeacherId into grouped join teacher in db.Teachers on grouped.Key equals teacher.Id where teacher.LastName == "Williams" select new { TeacherId = grouped.Key, Name = teacher.GivenName }; var query2 = db.Lectures .GroupBy (lecture => lecture.TeacherId) .Join (db.Teachers, g => g.Key, t => t.Id, (g, t) => new { Grouped = g, Teacher = t}) .Where (anon => anon.Teacher.LastName == "Williams") .Select (anon => new { TeacherId = anon.Grouped.Key, Name = anon.Teacher.GivenName }); Console.WriteLine ("Query syntax"); foreach (var obj in query1) { Console.WriteLine (obj.TeacherId + " " + obj.Name); } #region Count Console.WriteLine (Environment.NewLine); Console.WriteLine ("Method syntax"); foreach (var obj in query2) { Console.WriteLine (obj.TeacherId + " " + obj.Name); } #endregion #region Sum Console.Write (Environment.NewLine); var profesoresConL = db.Teachers.Count (p => p.GivenName.StartsWith ("L")); Console.Write ("Profesores con L : " + profesoresConL); Console.Write (Environment.NewLine); var menosDe30Total = db.Teachers .Where (t => t.Age < 30) .Sum (t => t.Age); var menosDe30Total1 = (from t in db.Teachers where t.Age < 30 select t.Age).Sum (); Console.Write ("Suma de las edades de profesores menores a 30: " + menosDe30Total + " | " + menosDe30Total1); #endregion #region Min y Max Console.Write (Environment.NewLine); var edadMinSinEmail = (from t in db.Teachers where t.Email == "" select t).Min (t => t.Age); var edadMaxSinEmail = db.Teachers .Where (t => t.Email != "") .Max (t => t.Age); Console.WriteLine ("Edad mínima " + edadMinSinEmail + ", edad máxima " + edadMaxSinEmail); #endregion #region Average Console.Write (Environment.NewLine); var promedioEdadSMail = (from t in db.Teachers where t.Email == "" select t).Average (t => t.Age); var promedioEmailCMail = db.Teachers .Where (t => t.Email != "") .Average (t => t.Age); Console.WriteLine ("Edad promedio sin mail " + promedioEdadSMail + ", promedio edad con email " + promedioEmailCMail); #endregion #region All Console.Write (Environment.NewLine); bool todosMayores = db.Teachers.All (teacher => teacher.Age > 18); Console.WriteLine ((todosMayores ? "Todos " : "No todos ") + "los maestros son mayores"); #endregion #region Any bool existeCosmeFulanito = db.Teachers.Any (teacher => teacher.GivenName == "Cosme" && teacher.LastName == "Fulanito"); Console.WriteLine ((existeCosmeFulanito ? "Existe " : "No existe ") + "Cosme Fulanito"); bool hayClases = db.Lectures.Any (); Console.WriteLine (hayClases ? "Hay clases, yay! " : "No hay clases :( :("); #endregion #region Order By var maestrosOrdenados1 = from t in db.Teachers orderby t.LastName.Length descending select t; Console.Write (Environment.NewLine); var maestrosOrdenados2 = db.Teachers .OrderBy (t => t.LastName.Length); Console.Write (Environment.NewLine); var maestrosOrdenados3 = db.Teachers .OrderBy (t => t.LastName.Length) .ThenByDescending (t => t.GivenName); Console.WriteLine ("Maestros ordenados 1: "); foreach (var teacher in maestrosOrdenados1) { Console.Write (teacher.GivenName + " "); } Console.WriteLine (); Console.WriteLine ("Maestros ordenados 2: "); foreach (var teacher in maestrosOrdenados2) { Console.Write (teacher.GivenName + " "); } Console.WriteLine (); Console.WriteLine ("Maestros ordenados 3: "); foreach (var teacher in maestrosOrdenados3) { Console.Write (teacher.GivenName + " "); } Console.WriteLine (); #endregion #region Partition var cincoMenores20 = (from t in db.Teachers where t.Age < 20 orderby t.Age select t).Take (5); Console.WriteLine ("Maestros menores: "); foreach (var teacher in cincoMenores20) { Console.WriteLine (teacher.GivenName + " " + teacher.Age); } var otrosMaestros = db.Teachers .Where(t=> t.Age > 30) .OrderByDescending(t => t.Age) .Skip(4); Console.WriteLine ("Otros mayores: "); foreach (var teacher in otrosMaestros) { Console.WriteLine (teacher.GivenName + " " + teacher.Age); } #endregion Console.Read (); }
public void InvalidPassword() { var db = new FakeDatabase(); var auth = new FakeFormAuthenticator(); db.AddSet(TestUserData.Users); var cx = new FakeControllerContext(); var controller = new UsersController(db, auth); controller.ControllerContext = cx; var result = controller.Login(new LoginViewModel() { UserName = "******", Password = "******", ReturnUrl = "/" }) as ViewResult; Assert.IsNotNull(result); Assert.IsNotNull(result.ViewData.ModelState[""]); Assert.IsNotNull(result.ViewData.ModelState[""].Errors); Assert.IsTrue(result.ViewData.ModelState[""].Errors.Count == 1); Assert.AreEqual("The User Name or password provided is incorrect.", result.ViewData.ModelState[""].Errors[0].ErrorMessage); Assert.AreEqual(1, db.LogAdded.Count); Assert.AreEqual(LogMessages.incorrectlogon, ((Log)db.LogAdded[0]).Message); }
private void Back_Click(object sender, RoutedEventArgs e) { FakeDatabase.update(); Navigator.navigateBack(); }
public void EditWriteBackNew() { var db = new FakeDatabase(); db.AddSet(TestClassroomData.Classrooms); db.AddSet(TestUserData.Users); db.AddSet(TestSeatData.Seats); db.AddSet(TestSeatTempData.SeatTemps); db.AddSet(TestDataCenterData.DataCenters); db.AddSet(TestCourseData.Courses); var st = new FakeSkyTap(); var controller = new ClassroomsController(db, st); controller.ControllerContext = new FakeControllerContext(); Classroom NewRoom = new Classroom() { ClassroomId = 0, CourseId = 1, DataCenterId = 1, Project = "ABCDE", Start = System.DateTime.Now, UserId = 1 }; ActionResult result = controller.Edit(NewRoom, "12345"); Assert.IsNotNull(result); }
public void UsersControllerEditExistingUserPostbackUserInvalidPasswordChangeBadOldPasswordTest() { var db = new FakeDatabase(); IAuth auth = new FakeFormAuthenticator(); ////var st = new FakeSkyTap(); db.AddSet(TestUserData.Users); ////st.AddSet(TestTemplateRESTData.templates); UsersController controller = new UsersController(db, auth); controller.ControllerContext = new FakeControllerContext(); User testUser = new User() { UserId = 1, EmailAddress = "TestUpdate", OldPassword = "******", NewPassword1 = "NewPassword", NewPassword2 = "NewPassword" }; var result = controller.Edit(testUser); Assert.IsNotNull(result); Assert.AreNotEqual(typeof(RedirectToRouteResult), result.GetType()); Assert.AreEqual("Edit", ((ViewResult)result).ViewName); Assert.AreEqual(0, db.Added.Count); }
private void Home_Click(object sender, RoutedEventArgs e) { FakeDatabase.update(); Navigator.navigateAndClearStack(new MainScreen()); }
public void CourseDeleteStartTest() { var db = new FakeDatabase(); var st = new FakeSkyTap(); db.AddSet(TestCourseData.Courses); db.AddSet(TestCourseMachineData.CourseMachines); var controller = new CoursesController(db, st); controller.ControllerContext = new FakeControllerContext(); var result = controller.Delete(1); Assert.IsNotNull(result); }
public void UsersControllerEditNewUserPostbackInValidPasswordTest() { var db = new FakeDatabase(); IAuth auth = new FakeFormAuthenticator(); ////var st = new FakeSkyTap(); db.AddSet(TestUserData.Users); ////db.AddSet(TestCourseData.Courses); ////db.AddSet(TestClassroomData.Classrooms); ////st.AddSet(TestTemplateRESTData.templates); UsersController controller = new UsersController(db, auth); controller.ControllerContext = new FakeControllerContext(); User testUser = new User() { UserId = 0, EmailAddress = "TestNew", NewPassword1 = "TestPassword", NewPassword2 = "WrongPassword" }; var result = controller.Edit(testUser); Assert.IsNotNull(result); Assert.AreNotEqual(typeof(RedirectToRouteResult), result.GetType()); Assert.AreEqual("Edit", ((ViewResult)result).ViewName); Assert.AreEqual(0, db.Added.Count); }
public HairLengthsContextTests() { _db = new FakeDatabase(); _hairLengthsContext = new HairLengthsContext(_db.HairLengths); }
//TODO: This should reuse code of LeaseOrderItem protected override async ValueTask BookOrderItems(List <OrderItemContext <SessionOpportunity> > orderItemContexts, StoreBookingFlowContext flowContext, OrderStateContext stateContext, OrderTransaction databaseTransaction) { // Check that there are no conflicts between the supplied opportunities // Also take into account spaces requested across OrderItems against total spaces in each opportunity // TODO: ENSURE THAT THIS IS CALLED EVERY TIME BY THE STOREBOOKINGENGINE, EVEN WITH ZERO ITEMS // This will ensure that items can be removed from the Order before the booking is confirmed if all items of that type have been removed from the lease // Step 1: Call lease to ensure items are already leased // Step 2: Set OrderItems to booked // Step 3: Write attendee and orderItemIntakeFormResponse to the OrderItem records, for inclusion in P later foreach (var ctxGroup in orderItemContexts.GroupBy(x => x.RequestBookableOpportunityOfferId)) { // Check that the Opportunity ID and type are as expected for the store if (ctxGroup.Key.OpportunityType != OpportunityType.ScheduledSession || !ctxGroup.Key.ScheduledSessionId.HasValue) { throw new OpenBookingException(new UnableToProcessOrderItemError(), "Opportunity ID and type are as not expected for the SessionStore, during booking"); } // Attempt to book for those with the same IDs, which is atomic var(result, bookedOrderItemInfos) = await FakeDatabase.BookOrderItemsForClassOccurrence( databaseTransaction.FakeDatabaseTransaction, flowContext.OrderId.ClientId, flowContext.SellerId.SellerIdLong ?? null /* Hack to allow this to work in Single Seller mode too */, flowContext.OrderId.uuid, ctxGroup.Key.ScheduledSessionId.Value, RenderOpportunityId(ctxGroup.Key), RenderOfferId(ctxGroup.Key), ctxGroup.Count(), false ); switch (result) { case ReserveOrderItemsResult.Success: foreach (var(ctx, bookedOrderItemInfo) in ctxGroup.Zip(bookedOrderItemInfos, (ctx, bookedOrderItemInfo) => (ctx, bookedOrderItemInfo))) { // Set OrderItemId and access properties for each orderItemContext ctx.SetOrderItemId(flowContext, bookedOrderItemInfo.OrderItemId); BookedOrderItemHelper.AddPropertiesToBookedOrderItem(ctx, bookedOrderItemInfo); } break; case ReserveOrderItemsResult.SellerIdMismatch: throw new OpenBookingException(new SellerMismatchError(), "An OrderItem SellerID did not match"); case ReserveOrderItemsResult.OpportunityNotFound: throw new OpenBookingException(new UnableToProcessOrderItemError(), "Opportunity not found"); case ReserveOrderItemsResult.NotEnoughCapacity: throw new OpenBookingException(new OpportunityHasInsufficientCapacityError()); case ReserveOrderItemsResult.OpportunityOfferPairNotBookable: throw new OpenBookingException(new UnableToProcessOrderItemError(), "Opportunity and offer pair were not bookable"); default: throw new OpenBookingException(new OrderCreationFailedError(), "Booking failed for an unexpected reason"); } } }
private BaseRepository <FooEntity> GivenABaseRepositoryWithDatabase(DataBase database) { return(new BaseRepository <FooEntity>(FakeDatabase.GivenAFactoryWithDatabase(database).Object)); }
public void RemoveSeatTestInvalidRequest() { var db = new FakeDatabase(); var st = new FakeSkyTap(); db.AddSet(TestSeatTempData.SeatTemps); var controller = new ClassroomsController(db, st); var httpRequest = new Mock<HttpRequestBase>(); var stream = new MemoryStream(Encoding.Default.GetBytes("{'WrongParameter':50}")); httpRequest.Setup(r => r.InputStream).Returns(stream); var httpContext = new Mock<HttpContextBase>(); httpContext.Setup(c => c.Request).Returns(httpRequest.Object); var routeData = new RouteData(); controller.ControllerContext = // set mocked context new ControllerContext(httpContext.Object, routeData, controller); var result = controller.RemoveSeat(); dynamic jsonObject = result.Data; Assert.AreEqual("Done", jsonObject["Status"]); Assert.AreEqual(0, db.Removed.Count); }
public void UsersControllerEditExistingUserPostbackAdminsitratorNoPasswordChangeTest() { var db = new FakeDatabase(); IAuth auth = new FakeFormAuthenticator(); ////var st = new FakeSkyTap(); db.AddSet(TestUserData.Users); ////st.AddSet(TestTemplateRESTData.templates); UsersController controller = new UsersController(db, auth); controller.ControllerContext = new FakeControllerContext(); User testUser = new User() { UserId = 1, EmailAddress = "TestUpdate" }; var result = controller.Edit(testUser); Assert.IsNotNull(result); Assert.AreEqual(typeof(RedirectToRouteResult), result.GetType()); Assert.AreEqual(0, db.Added.Count); Assert.AreEqual(1, db.Updated.Count); Assert.AreEqual("TestUpdate", ((User)db.Updated[0]).EmailAddress); Assert.AreEqual(1, db.LogAdded.Count); Assert.AreEqual(2, db.saved); }
public void AddSeatTestInvalidClassroom() { var db = new FakeDatabase(); var st = new FakeSkyTap(); db.AddSet(TestSeatTempData.SeatTemps); db.AddSet(TestUserData.Users); var controller = new ClassroomsController(db, st); var httpRequest = new Mock<HttpRequestBase>(); var stream = new MemoryStream(Encoding.Default.GetBytes("{'NewSeats':'[email protected]\[email protected]','Session':'12345','Classroom':'Invalid'}")); httpRequest.Setup(r => r.InputStream).Returns(stream); var httpContext = new Mock<HttpContextBase>(); httpContext.Setup(c => c.Request).Returns(httpRequest.Object); var routeData = new RouteData(); controller.ControllerContext = // set mocked context new ControllerContext(httpContext.Object, routeData, controller); var result = controller.AddSeats(); dynamic jsonObject = result.Data; Assert.AreEqual("Done", jsonObject["Status"]); Assert.AreEqual(0, db.Added.Count); }
public void ValidUser() { var db = new FakeDatabase(); var auth = new FakeFormAuthenticator(); db.AddSet(TestUserData.Users); var controller = new UsersController(db, auth); controller.ControllerContext = new FakeControllerContext(); var result = controller.Login(new LoginViewModel() { UserName = "******", Password = "******", ReturnUrl = "/" }); Assert.AreEqual(typeof(RedirectResult), result.GetType()); Assert.AreEqual(1, db.LogAdded.Count); Assert.AreEqual(LogMessages.logon, ((Log)db.LogAdded[0]).Message); }
public void CourseEditNewWriteTest() { var db = new FakeDatabase(); var st = new FakeSkyTap(); db.AddSet(TestCourseData.Courses); db.AddSet(TestCourseMachineData.CourseMachines); db.AddSet(TestCourseMachineTempData.CourseMachineTemps); st.AddSet(TestTemplateRESTData.templates); var controller = new CoursesController(db, st); controller.ControllerContext = new FakeControllerContext(); Course testCourse = new Course() { CourseId = 0, Name = "TestNew", Days = 5, Hours = 8, Template = "11111111" }; var result = controller.Edit(testCourse, Guid.NewGuid().ToString()); Assert.IsNotNull(result); Assert.AreEqual(typeof(RedirectToRouteResult), result.GetType()); Assert.AreEqual(1, db.Added.Count); Assert.AreEqual("TestNew", ((Course)db.Added[0]).Name); Assert.AreEqual(3, db.saved); }
public ActionResult Cancel() { FakeDatabase.SetUserHasAccepted(false); return(RedirectToAction("Home", "Home")); }
protected override async ValueTask LeaseOrderItems(Lease lease, List <OrderItemContext <FacilityOpportunity> > orderItemContexts, StoreBookingFlowContext flowContext, OrderStateContext stateContext, OrderTransaction databaseTransaction) { // Check that there are no conflicts between the supplied opportunities // Also take into account spaces requested across OrderItems against total spaces in each opportunity foreach (var ctxGroup in orderItemContexts.Where(ctx => !ctx.HasErrors).GroupBy(x => x.RequestBookableOpportunityOfferId)) { // Check that the Opportunity ID and type are as expected for the store if (ctxGroup.Key.OpportunityType != OpportunityType.FacilityUseSlot || !ctxGroup.Key.SlotId.HasValue) { foreach (var ctx in ctxGroup) { ctx.AddError(new OpportunityIntractableError(), "Opportunity ID and type are as not expected for the store. Likely a configuration issue with the Booking System."); } } else { // Attempt to lease for those with the same IDs, which is atomic var(result, capacityErrors, capacityLeaseErrors) = await FakeDatabase.LeaseOrderItemsForFacilitySlot(databaseTransaction.FakeDatabaseTransaction, flowContext.OrderId.ClientId, flowContext.SellerId.SellerIdLong ?? null /* Hack to allow this to work in Single Seller mode too */, flowContext.OrderId.uuid, ctxGroup.Key.SlotId.Value, ctxGroup.Count()); switch (result) { case ReserveOrderItemsResult.Success: // Do nothing, no errors to add break; case ReserveOrderItemsResult.SellerIdMismatch: foreach (var ctx in ctxGroup) { ctx.AddError(new SellerMismatchError(), "An OrderItem SellerID did not match"); } break; case ReserveOrderItemsResult.OpportunityNotFound: foreach (var ctx in ctxGroup) { ctx.AddError(new UnableToProcessOrderItemError(), "Opportunity not found"); } break; case ReserveOrderItemsResult.OpportunityOfferPairNotBookable: foreach (var ctx in ctxGroup) { ctx.AddError(new OpportunityOfferPairNotBookableError(), "Opportunity not bookable"); } break; case ReserveOrderItemsResult.NotEnoughCapacity: var contexts = ctxGroup.ToArray(); for (var i = contexts.Length - 1; i >= 0; i--) { var ctx = contexts[i]; if (capacityErrors > 0) { ctx.AddError(new OpportunityHasInsufficientCapacityError()); capacityErrors--; } else if (capacityLeaseErrors > 0) { ctx.AddError(new OpportunityCapacityIsReservedByLeaseError()); capacityLeaseErrors--; } } break; default: foreach (var ctx in ctxGroup) { ctx.AddError(new OpportunityIntractableError(), "OrderItem could not be leased for unexpected reasons."); } break; } } } }
private object ParseCommand() { if (Connection.State != ConnectionState.Open) { throw new Exception("Cmd001: Connection must be open before calling a command"); } foreach (FakeParameter param in _parameterCollection) { CommandText = CommandText.Replace(param.ParameterName, param.Value.ToString()); } FakeQuery operations = JsonConvert.DeserializeObject <FakeQuery>(CommandText); object result = null; { { if (operations.Create != null) { if (operations.Create.Table == null) { throw new FakeException("Create:Table is not specified"); } { FakeDatabase db = JsonConvert.DeserializeObject <FakeDatabase>(File.ReadAllText(Connection.Database)); if (db == null) { db = new FakeDatabase() { Name = Connection.Database } } ; if (db.Tables.Find(x => x.Name == operations.Create.Table.Name) != null) { throw new FakeException("Create:Table is already exists"); } db.Tables.Add(operations.Create.Table); File.WriteAllText(Connection.Database, JsonConvert.SerializeObject(db)); } result = 1; } else if (operations.Insert != null) { int rowsAffected = 0; { FakeDatabase db = JsonConvert.DeserializeObject <FakeDatabase>(File.ReadAllText(Connection.Database)); var table = db.Tables.Find(x => x.Name == operations.Insert.Into); if (table == null) { throw new FakeException("Insert:Table is not exists"); } List <object> rows = new List <object>(); for (int i = 0; i < table.Headers.Count; i++) { rows.Add(new object()); } for (int i = 0; i < operations.Insert.Values.Count; i++) { int index = i % operations.Insert.Headers.Count; var header = table.Headers.Find(x => x.Name == operations.Insert.Headers[index]); if (header.Attributes.Contains(FakeDbAttribute.NotNull) && operations.Insert.Values[i] == null) { throw new FakeException($"Insert: Field {operations.Insert.Headers[index]} has NotNull attribute, but passed value is null"); } rows[i] = operations.Insert.Values[i]; if (i % operations.Insert.Headers.Count == operations.Insert.Headers.Count - 1) { table.Rows.Add(rows); rows = new List <object>(table.Headers.Count); rowsAffected++; } } File.WriteAllText(Connection.Database, JsonConvert.SerializeObject(db)); } result = rowsAffected; } else if (operations.Update != null) { int rowsAffected = 0; { FakeDatabase db = JsonConvert.DeserializeObject <FakeDatabase>(File.ReadAllText(Connection.Database)); var table = db.Tables.Find(x => x.Name == operations.Update.Table); // Parse where string[] words = operations.Update.Where.Split('='); int index = table.Headers.FindIndex(u => u.Name == words[0]); foreach (var row in table.Rows.Where(u => u[index].ToString() == words[1].Trim())) { for (int i = 0; i < operations.Update.To.Count; i++) { int idx = table.Headers.FindIndex(x => x.Name.ToLower() == operations.Update.To[i].Field.Trim().ToLower()); row[idx] = operations.Update.To[i].Value; } rowsAffected++; } File.WriteAllText(Connection.Database, JsonConvert.SerializeObject(db)); } result = rowsAffected; } else if (operations.Delete != null) { int rowsAffected = 0; { FakeDatabase db = JsonConvert.DeserializeObject <FakeDatabase>(File.ReadAllText(Connection.Database)); var table = db.Tables.Find(x => x.Name == operations.Delete.From); // Parse where string[] words = operations.Delete.Where.Split('='); int index = table.Headers.FindIndex(u => u.Name == words[0]); var rowsToDelete = table.Rows.Where(u => u[index].ToString() == words[1].Trim()).ToList(); for (int i = 0; i < rowsToDelete.Count; i++) { table.Rows.Remove(rowsToDelete[i]); rowsAffected++; } File.WriteAllText(Connection.Database, JsonConvert.SerializeObject(db)); } result = rowsAffected; } else if (operations.Select != null) { { FakeDatabase db = JsonConvert.DeserializeObject <FakeDatabase>(File.ReadAllText(Connection.Database)); var table = db.Tables.Find(x => x.Name == operations.Select.From); List <List <object> > rowsToSelect; if (operations.Select.Where != null) { // Where filter string[] words = operations.Select.Where.Split('='); int index = table.Headers.FindIndex(u => u.Name == words[0]); rowsToSelect = table.Rows.Where(u => u[index].ToString() == words[1].Trim()).ToList(); } else { // Without where rowsToSelect = table.Rows; } List <List <object> > tableResults = new List <List <object> >(); List <object> headers = new List <object>(); List <int> indices = new List <int>(); if (operations.Select.Fields != null && operations.Select.Fields.Count > 0) { // Fields filter for (int i = 0; i < operations.Select.Fields.Count; i++) { int indexOfHeader = table.Headers.FindIndex(u => u.Name == operations.Select.Fields[i]); if (indexOfHeader == -1) { throw new FakeException($"Select: Field {operations.Select.Fields[i]} is not exists"); } headers.Add(operations.Select.Fields[i]); indices.Add(indexOfHeader); } } else { // All fields for (int i = 0; i < table.Headers.Count; i++) { headers.Add(table.Headers[i].Name); indices.Add(i); } } tableResults.Add(headers); foreach (List <object> row in rowsToSelect) { List <object> fieldRow = new List <object>(); for (int i = 0; i < indices.Count; i++) { fieldRow.Add(row[indices[i]]); } tableResults.Add(fieldRow); } result = tableResults; } } } } return(result); }
public ProjectService(FakeDatabase fakeDatabase) : base(fakeDatabase) { }
public UsersContextTests() { _db = new FakeDatabase(); _usersContext = new UsersContext(_db.Users); }
private void Button_Click(object sender, RoutedEventArgs e) { video.toggleRecent(); FakeDatabase.update(); Navigator.navigate(new PlayScreen()); }