public void GetById() { var controller = new LessonsController(); controller.AppSettings = this.AppSettings; //Initially no classes Assert.IsNull(controller.Get("not-there")); //Now add some classes var db = new CSALDatabase(DB_URL); db.SaveLesson(new Lesson { LessonID = "l1", TurnCount = 1 }); db.SaveLesson(new Lesson { LessonID = "l2", TurnCount = 2 }); //Still missing Assert.IsNull(controller.Get("not-there")); //Find what we inserted var oneLesson = controller.Get("l2"); Assert.AreEqual("l2", oneLesson.Id); Assert.AreEqual(2, oneLesson.TurnCount); }
public void Get() { var controller = new LessonsController(); controller.AppSettings = this.AppSettings; //Initially no lessons var noLessons = controller.Get(); Assert.AreEqual(0, noLessons.Count()); //Now add some lessons var db = new CSALDatabase(DB_URL); db.SaveLesson(new Lesson { LessonID = "l1", TurnCount = 1 }); db.SaveLesson(new Lesson { LessonID = "l2", TurnCount = 2 }); var twoLessons = controller.Get().OrderBy(c => c.Id).ToList(); Assert.AreEqual(2, twoLessons.Count); Assert.AreEqual("l1", twoLessons[0].Id); Assert.AreEqual("l2", twoLessons[1].Id); }
public async Task GetLessonReturnsNotFoundResultWhenLessonIdIsWrong() { // Arrange var id = 0; mock.Setup(serv => serv.GetByIdAsync(id, LessonExtensions.ToDto)).Returns(Task.Run(() => GetTestLessons().FirstOrDefault(x => x.Id == id))); var controller = new LessonsController(mock.Object); // Act var result = await controller.Get(id); // Arrange Assert.IsType <NotFoundObjectResult>(result.Result); }
public async Task FailedAddLessonReturnsIActionResult() { // Arrange var controller = new LessonsController(mock.Object); var newLesson = new LessonViewModel(); // Act var result = await controller.Post(newLesson); // Assert var viewResult = Assert.IsAssignableFrom <IActionResult>(result); Assert.Equal(result, viewResult); }
public void GetAllReturnsAnAsyncEnumerableResultWithLessons() { // Arrange mock.Setup(serv => serv.GetAllAsync(LessonExtensions.ToDto)).Returns(GetTestLessons().ToAsyncEnumerable()); var controller = new LessonsController(mock.Object); // Act var result = controller.Get(); // Assert var lessons = Assert.IsAssignableFrom <IAsyncEnumerable <LessonViewModel> >(result); Assert.Equal(lessons, result); }
public void BadPostById() { var controller = new LessonsController(); controller.AppSettings = this.AppSettings; Assert.IsNull(controller.Get("single-id")); //Try to save to wrong ID controller.Post("wrong-id", @"{ _id: 'single-id', LessonID: 'single-id', LastTurnTime: ISODate('2012-05-02T13:07:17.000Z'), TurnCount: 42, Students: ['s1', 's2'] }"); }
public async Task GetLessonReturnsOkResultWithLesson() { // Arrange int id = 1; mock.Setup(repo => repo.GetByIdAsync(id, LessonExtensions.ToDto)) .Returns(Task.Run(() => new LessonDto { Id = 1, Marks = new List <MarkDto>(), Title = "lesson1" })); var controller = new LessonsController(mock.Object); // Act var result = await controller.Get(id); //var lesson = Assert.IsAssignableFrom<ActionResult<LessonViewModel>>(result); //Assert.Equal("lessonId", lesson.Value.Title); Assert.IsType <OkObjectResult>(result.Result); }
public async Task GetByIdReturnsAnActionResultWithLessonAsync() { // Arrange var id = 1; var expectedLesson = GetTestLessons().FirstOrDefault(x => x.Id == id); mock.Setup(serv => serv.GetByIdAsync(id, LessonExtensions.ToDto)).Returns(Task.Run(() => expectedLesson)); var controller = new LessonsController(mock.Object); // Act var result = await controller.Get(id); // Assert var lesson = Assert.IsAssignableFrom <ActionResult <LessonViewModel> >(result); Assert.Equal(lesson, result); //Assert.Equal(expectedLesson., result); }
public void PostById() { var controller = new LessonsController(); controller.AppSettings = this.AppSettings; Assert.IsNull(controller.Get("single-id")); controller.Post("single-id", @"{ _id: 'single-id', LessonID: 'single-id', LastTurnTime: ISODate('2012-05-02T13:07:17.000Z'), TurnCount: 42, Students: ['s1', 's2'] }"); Lesson lesson = controller.Get("single-id"); Assert.AreEqual("single-id", lesson.Id); Assert.AreEqual("single-id", lesson.LessonID); Assert.AreEqual(new DateTime(2012, 5, 2, 13, 7, 17), lesson.LastTurnTime); Assert.AreEqual(42, lesson.TurnCount); CollectionAssert.AreEquivalent(new string[] { "s1", "s2" }, lesson.Students); }
public void SetupContext() { controller = new LessonsController(); result = controller.Index() as ViewResult; }
public async Task <ActionResult> UpdateBookingByCoach(LessonTimeViewModel viewModel) { ViewBag.ViewModel = viewModel; var profile = await HttpContext.GetUserAsync(); if (viewModel.KeyID != null) { viewModel.LessonID = viewModel.DecryptKeyValue(); } LessonTime item = models.GetTable <LessonTime>().Where(l => l.LessonID == viewModel.LessonID).FirstOrDefault(); if (item == null) { return(View("~/Views/Shared/JsAlert.cshtml", model: "修改上課時間資料不存在!!")); } if (item.LessonAttendance != null) { return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "已完成上課,不可修改!!")); } if (item.ContractTrustTrack.Any(t => t.SettlementID.HasValue)) { return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "課程資料已信託,不可修改!!")); } var coach = models.GetTable <ServingCoach>().Where(c => c.CoachID == viewModel.CoachID).FirstOrDefault(); if (coach == null) { return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "上課教練資料錯誤!!")); } if (!viewModel.ClassDate.HasValue) { return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "請選擇上課日期間!!")); } if (!item.BranchStore.IsVirtualClassroom() && !item.IsSTSession() && !models.GetTable <CoachWorkplace>() .Any(c => c.BranchID == item.BranchID && c.CoachID == item.AttendingCoach) && viewModel.ClassDate.Value < DateTime.Today.AddDays(1)) { return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml", model: "此時段不允許跨店預約!!")); } LessonTime timeItem = new LessonTime { InvitedCoach = item.InvitedCoach, AttendingCoach = item.AttendingCoach, ClassTime = viewModel.ClassDate, DurationInMinutes = item.DurationInMinutes }; if (item.IsPTSession()) { if (models.GetTable <Settlement>().Any(s => s.StartDate <= viewModel.ClassDate && s.EndExclusiveDate > viewModel.ClassDate)) { ViewBag.Message = "修改上課時間(" + String.Format("{0:yyyy/MM/dd}", viewModel.ClassDate) + "已信託結算!!"; return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml")); } } if (!item.IsCoachPISession() && !item.IsSTSession()) { var users = models.CheckOverlappingBooking(timeItem, item); if (users.Count() > 0) { ViewBag.Message = "上課成員(" + String.Join("、", users.Select(u => u.RealName)) + ")上課時間重複!!"; return(View("~/Views/ConsoleHome/Shared/JsAlert.cshtml")); } } else { if (viewModel.ClassEndTime.HasValue) { timeItem.DurationInMinutes = (int)(viewModel.ClassEndTime.Value - viewModel.ClassDate.Value).TotalMinutes; } } if (!ModelState.IsValid) { ViewBag.ModelState = this.ModelState; return(View(Startup.Properties["ReportInputError"])); } var changeCoach = item.AttendingCoach != viewModel.CoachID; if (item.IsCoachPISession()) { if (viewModel.AttendeeID == null || viewModel.AttendeeID.Length == 0) { models.DeleteAll <LessonTime>(r => r.LessonID != item.LessonID && r.GroupID == item.GroupID); models.DeleteAll <RegisterLesson>(r => r.RegisterID != item.RegisterID && r.RegisterGroupID == item.GroupID); } else { models.DeleteAll <LessonTime>(r => r.LessonID != item.LessonID && r.GroupID == item.GroupID && !viewModel.AttendeeID.Contains(r.AttendingCoach.Value)); models.DeleteAll <RegisterLesson>(r => r.RegisterID != item.RegisterID && r.RegisterGroupID == item.GroupID && !viewModel.AttendeeID.Contains(r.UID)); foreach (var uid in viewModel.AttendeeID.Distinct()) { if (!models.GetTable <RegisterLesson>().Any(r => r.UID == uid && r.RegisterGroupID == item.GroupID)) { var coachPI = models.GetTable <ServingCoach>().Any(s => s.CoachID == uid) ? LessonsController.SpawnCoachPI(item, uid, uid) : LessonsController.SpawnCoachPI(item, uid, coach.CoachID); models.GetTable <LessonTime>().InsertOnSubmit(coachPI); } } } models.SubmitChanges(); foreach (var s in models.GetTable <LessonTime>().Where(l => l.GroupID == item.GroupID)) { s.ClassTime = viewModel.ClassDate; if (models.GetTable <DailyWorkingHour>().Any(d => d.Hour == viewModel.ClassDate.Value.Hour)) { s.HourOfClassTime = viewModel.ClassDate.Value.Hour; } s.DurationInMinutes = timeItem.DurationInMinutes; s.BranchID = viewModel.BranchID; //item.TrainingBySelf = viewModel.TrainingBySelf; } } else { item.InvitedCoach = viewModel.CoachID; item.AssignLessonAttendingCoach(coach); item.ClassTime = viewModel.ClassDate; if (models.GetTable <DailyWorkingHour>().Any(d => d.Hour == viewModel.ClassDate.Value.Hour)) { item.HourOfClassTime = viewModel.ClassDate.Value.Hour; } item.DurationInMinutes = timeItem.DurationInMinutes; item.BranchID = viewModel.BranchID; foreach (var t in item.ContractTrustTrack) { t.EventDate = viewModel.ClassDate.Value; } //item.TrainingBySelf = viewModel.TrainingBySelf; } models.SubmitChanges(); if (item.IsPISession()) { models.ExecuteCommand("update TuitionInstallment set PayoffDate = {0} where RegisterID = {1} ", item.ClassTime, item.RegisterID); } if (!item.IsSTSession()) { item.BookingLessonTimeExpansion(models, item.ClassTime.Value, item.DurationInMinutes.Value); models.ExecuteCommand("delete PreferredLessonTime where LessonID = {0}", item.LessonID); item.ProcessBookingWhenCrossBranch(models); } return(Json(new { result = true, message = "上課時間修改完成!!", changeCoach = changeCoach, classTime = String.Format("{0:yyyy/MM/dd H:mm}", item.ClassTime) + "-" + String.Format("{0:H:mm}", item.ClassTime.Value.AddMinutes(item.DurationInMinutes.Value)) })); }
public ConsoleHost() { this._studentsController = new StudentsController(); this._lessonsController = new LessonsController(); }
private void InitControllers() { Lessons = new LessonsController(); Tiles = new TilesController(); }
public LessonsControllerTests() { _mapper = new Mock <IMapper>(); _lessonService = new Mock <ILessonService>(); _sut = new LessonsController(_mapper.Object, _lessonService.Object); }