public void Setup() { var movies = Mock.Of<IRepository<Movie>>(r => r.FindAsync(movie.MovieId) == Task.FromResult(movie)); var theatres = Mock.Of<IRepository<MovieTheater>>(r => r.FindAsync(theater.MovieTheaterId) == Task.FromResult(theater)); var showtimes = Mock.Of<IShowtimesRepository>(); UnitOfWork = Mock.Of<IUnitOfWork>(u => u.MovieTheatres == theatres && u.Movies == movies && u.Showtimes == showtimes ); Sut = new ShowtimesSchedulingService(UnitOfWork); }
public void Setup() { var movies = Mock.Of <IRepository <Movie> >(r => r.FindAsync(movie.MovieId) == Task.FromResult(movie)); var theatres = Mock.Of <IRepository <MovieTheater> >(r => r.FindAsync(theater.MovieTheaterId) == Task.FromResult(theater)); var showtimes = Mock.Of <IShowtimesRepository>(); UnitOfWork = Mock.Of <IUnitOfWork>(u => u.MovieTheatres == theatres && u.Movies == movies && u.Showtimes == showtimes ); Sut = new ShowtimesSchedulingService(UnitOfWork); }
public async Task<ActionResult> Edit([Bind(Include = "MovieTheaterId, MovieId, Date, SessionTimesStr")] ShowtimesEdit model) { try { if (!string.IsNullOrWhiteSpace(model.SessionTimesStr)) { TimeSpan ts; var sessionTimesInput = model.SessionTimesStr .Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries) .Select(s => s.Trim()); var sessionTimesAreInCorrectFormat = sessionTimesInput .All(s => TimeSpan.TryParseExact(s, new[] { "h\\:mm", "hh\\:mm" }, null, out ts)); if (!sessionTimesAreInCorrectFormat) { ModelState.AddModelError("SessionTimesStr", "Session Times are invalid"); } else if (sessionTimesInput.Distinct().Count() != sessionTimesInput.Count()) { ModelState.AddModelError("SessionTimesStr", "Duplicate session times"); } } if ((await unitOfWork.MovieTheatres.FindAsync(model.MovieTheaterId)) == null) { ModelState.AddModelError("MovieTheaterId", "Movie theater doesn't exist"); } if ((await unitOfWork.Movies.FindAsync(model.MovieId)) == null) { ModelState.AddModelError("MovieId", "Movie doesn't exist"); } if (ModelState.IsValid) { var sessionTimesInput = model.SessionTimesStr .Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries) .Select(s => s.Trim()); var sessionTimes = sessionTimesInput .Select(t => model.Date.Date + TimeSpan.ParseExact(t, new[] { "h\\:mm", "hh\\:mm" }, null)) .ToArray(); var service = new ShowtimesSchedulingService(unitOfWork); await service.ScheduleShowtimes(model.MovieTheaterId, model.MovieId, sessionTimes); await unitOfWork.SaveAsync(); return RedirectToAction("Index", new { date = model.Date.ToString(Constants.UrlDateFormat) }); } await FillMoviesSelectList(model.MovieId); await FillMovieTheatresSelectList(model.MovieTheaterId); return View(model); } catch { return View(); } }
public async Task <ActionResult> Edit([Bind(Include = "MovieTheaterId, MovieId, Date, SessionTimesStr")] ShowtimesEdit model) { try { if (!string.IsNullOrWhiteSpace(model.SessionTimesStr)) { TimeSpan ts; var sessionTimesInput = model.SessionTimesStr .Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries) .Select(s => s.Trim()); var sessionTimesAreInCorrectFormat = sessionTimesInput .All(s => TimeSpan.TryParseExact(s, new[] { "h\\:mm", "hh\\:mm" }, null, out ts)); if (!sessionTimesAreInCorrectFormat) { ModelState.AddModelError("SessionTimesStr", "Session Times are invalid"); } else if (sessionTimesInput.Distinct().Count() != sessionTimesInput.Count()) { ModelState.AddModelError("SessionTimesStr", "Duplicate session times"); } } if ((await unitOfWork.MovieTheatres.FindAsync(model.MovieTheaterId)) == null) { ModelState.AddModelError("MovieTheaterId", "Movie theater doesn't exist"); } if ((await unitOfWork.Movies.FindAsync(model.MovieId)) == null) { ModelState.AddModelError("MovieId", "Movie doesn't exist"); } if (ModelState.IsValid) { var sessionTimesInput = model.SessionTimesStr .Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries) .Select(s => s.Trim()); var sessionTimes = sessionTimesInput .Select(t => model.Date.Date + TimeSpan.ParseExact(t, new[] { "h\\:mm", "hh\\:mm" }, null)) .ToArray(); var service = new ShowtimesSchedulingService(unitOfWork); await service.ScheduleShowtimes(model.MovieTheaterId, model.MovieId, sessionTimes); await unitOfWork.SaveAsync(); return(RedirectToAction("Index", new { date = model.Date.ToString(Constants.UrlDateFormat) })); } await FillMoviesSelectList(model.MovieId); await FillMovieTheatresSelectList(model.MovieTheaterId); return(View(model)); } catch { return(View()); } }