public void Sets_the_catch_read_model_likes_value_to_that_of_the_domain_model()
            {
                // Arrange
                var catchLikedEvent = new CatchLikedEvent {
                    AggregateRootId = Guid.NewGuid()
                };
                var associatedCatch = new DaveScriven.CodeSample.Domain.Catch {
                    Likes = 10
                };
                var catchReadModel = new Catch {
                    CatchId = catchLikedEvent.AggregateRootId, Likes = 9
                };

                var readModelMock        = new Mock <IFishLogReadModel>();
                var dbSetMock            = new Mock <IDbSet <Catch> >();
                var domainRepositoryStub = new Mock <IDomainRepository>();

                readModelMock.Setup(m => m.Catches).Returns(dbSetMock.Object);

                domainRepositoryStub.Setup(r => r.GetById <DaveScriven.CodeSample.Domain.Catch>(catchLikedEvent.AggregateRootId)).Returns(associatedCatch);
                dbSetMock.Setup(s => s.Find(catchLikedEvent.AggregateRootId)).Returns(catchReadModel);

                var denormalizer = new CatchesReadModelDenormalizer(readModelMock.Object, domainRepositoryStub.Object);

                // Act
                denormalizer.Handle(catchLikedEvent);

                // Assert
                Assert.That(catchReadModel.Likes, Is.EqualTo(associatedCatch.Likes));
                readModelMock.Verify(m => m.SaveChanges(), "The changes were not saved to the read model.");
            }
Example #2
0
        /// <summary>
        /// Handles the specified <see cref="CatchLikedEvent"/> domain event.
        /// </summary>
        /// <param name="domainEvent">The domain event.</param>
        public void Handle(CatchLikedEvent domainEvent)
        {
            Data.Catch @catch = this.readModel.Catches.Find(domainEvent.AggregateRootId);

            @catch.Likes = domainRepository.GetById <Catch>(domainEvent.AggregateRootId).Likes;

            this.readModel.SaveChanges();
        }
Example #3
0
 /// <summary>
 /// Handles the <see cref="CatchLikedEvent"/>.
 /// </summary>
 /// <param name="domainEvent">The domain event.</param>
 public void OnCatchLiked(CatchLikedEvent domainEvent)
 {
     this.Likes += 1;
 }