public Movie Handle(BookSeats command) { var movie = _eventStoreRepository.GetMovie(command.MovieId); movie.BookSeats(command.Seats); _eventStoreRepository.Save(movie); return(movie); }
public void CreateMovie() { //Create movie var movieId = Guid.NewGuid().ToString(); var createMovieCommand = new CreateMovie { MovieId = movieId, Title = "Batman", Seats = 10 }; var movie = _movieHandler.Handle(createMovieCommand); Assert.AreEqual(movie.Id, movieId); Assert.AreEqual(movie.Title, "Batman"); Assert.AreEqual(movie.AvaliableSeats, 10); // Book 2 seats var bookTwoSeatsCommand = new BookSeats { MovieId = movieId, Seats = 2 }; movie = _movieHandler.Handle(bookTwoSeatsCommand); Assert.AreEqual(movie.AvaliableSeats, 8); // Cant book more seats than available var bookTooManySeats = new BookSeats { MovieId = movieId, Seats = 10 }; movie = _movieHandler.Handle(bookTooManySeats); Assert.AreEqual(movie.AvaliableSeats, 8); // Book 4 seats var bookFourSeatsCommand = new BookSeats { MovieId = movieId, Seats = 4 }; _movieHandler.Handle(bookFourSeatsCommand); // How many seats booked var seatsBooked = _views.GetSeatsBookedFor(movieId); Assert.AreEqual(seatsBooked, 6); // Create a snapshot _snapshotGenerator.SnapshotMovieAggregate(movieId); // Get events from snapshot aggregate seatsBooked = _views.GetSeatsBookedFor(movieId); Assert.AreEqual(seatsBooked, 6); // Book 1 seats var bookOneSeatCommand = new BookSeats { MovieId = movieId, Seats = 1 }; movie = _movieHandler.Handle(bookOneSeatCommand); Assert.AreEqual(movie.AvaliableSeats, 3); // Book 1 seats movie = _movieHandler.Handle(bookOneSeatCommand); Assert.AreEqual(movie.AvaliableSeats, 2); // Create a new snapshot _snapshotGenerator.SnapshotMovieAggregate(movieId); // Book 1 seats movie = _movieHandler.Handle(bookOneSeatCommand); Assert.AreEqual(movie.AvaliableSeats, 1); }
private void Handle(BookSeats command) => ScreeningReservationById(command.ScreeningId) .Book(command.Seats, command.ClientId, command.At) .AppendEventsTo(_eventStore);