コード例 #1
0
        public void The_MovieRatedByCritics_event_should_be_unchanged_with_the_same_rating()
        {
            var movieId        = Guid.NewGuid();
            var ratedByCritics = new MovieRatedByCritics(movieId, 60);

            var repo = new DummyMovieProjectionRepository();

            repo.List[movieId] = new MovieProjection {
                Id = movieId, CriticsScore = 60
            };

            var handler = new MovieProjectionHandlers(repo);

            handler.Handle(ratedByCritics);

            repo.List.Count.Should().Be(1);
            repo.List.Values.ShouldBeEquivalentTo(new[]
            {
                new MovieProjection
                {
                    Id           = movieId,
                    CriticsScore = 60
                }
            });
        }
コード例 #2
0
        public void The_MovieRatedByCritics_event_should_keep_a_roling_average()
        {
            var movieId        = Guid.NewGuid();
            var ratedByCritics = new MovieRatedByCritics(movieId, 60);

            var repo = new DummyMovieProjectionRepository();

            repo.List[movieId] = new MovieProjection {
                Id = movieId, CriticsScore = 50
            };

            var handler = new MovieProjectionHandlers(repo);

            handler.Handle(ratedByCritics);

            repo.List.Count.Should().Be(1);
            repo.List.Values.ShouldBeEquivalentTo(new[]
            {
                new MovieProjection
                {
                    Id           = movieId,
                    CriticsScore = 51
                }
            });
        }
コード例 #3
0
 public void Handle(MovieRatedByCritics movieRated)
 {
     UpdateMovie(movieRated.MovieId,
                 m =>
     {
         if (m.CriticsScore.HasValue)
         {
             m.CriticsScore = (int)Math.Round(0.9 * m.CriticsScore.Value + 0.1 * movieRated.Rating, 0);
         }
         else
         {
             m.CriticsScore = movieRated.Rating;
         }
     });
 }