コード例 #1
0
        public async void UserCategoryCreateCommandStoresAggregateRootInEventStore()
        {
            //Arrange
            var catName = "Test Category 345";
            var command = new UserCategoryCreateCommand(catName);

            //Act
            await _commandBus.Send(command);

            var agg = (await _aggregateRepository.FindByAsync(x => x.Id == 1)).FirstOrDefault();

            //Assert
            Assert.IsNotNull(agg);
            Assert.AreEqual(0, agg.Version);
        }
コード例 #2
0
        public async Task UserCategoryCreateCommandTriggersEventToUpdateQueryDbWithCategory()
        {
            var name = "Test Category 1";

            //Arrange
            var command = new UserCategoryCreateCommand(name);
            await _commandBus.Send(command);

            //Act
            var cats = await _categoryRepo.FindByAsync(q => q.Id == 1).ConfigureAwait(false);

            var cat = cats.FirstOrDefault();

            //Act
            Assert.AreEqual(cat.Name, name);
        }
コード例 #3
0
        public async Task UserCategoryCreateCommandStoresEventInEventStore()
        {
            //Arrange
            var catName = "Test Category 345";
            var command = new UserCategoryCreateCommand(catName);

            //Act
            await _commandBus.Send(command);

            var e = (await _eventRepository.FindByAsync(x => x.AggregateId == 1)).FirstOrDefault();

            //Assert
            Assert.IsNotNull(e);
            var desrializedEvent = (UserCategoryCreatedEvent)DatabaseEventStorage.DeSerialize <UserCategoryCreatedEvent>(e.Data);

            Assert.IsNotNull(desrializedEvent);
            Assert.AreEqual(catName, desrializedEvent.Name);
        }
コード例 #4
0
        public async Task UserCategoryAggregateRootCanBeConstructedFromMemento()
        {
            // Arrange
            // No version - it's new
            var e1 = new UserCategoryCreateCommand("Category Name");
            // Acting on Version 0
            var e2 = new UserCategoryNameChangeCommand(1, "Category Name Changed Once", 0);
            // Acting on Version 1
            var e3 = new UserCategoryNameChangeCommand(1, "Category Name Changed Twice", 1);
            // Acting on Version 2
            var e4 = new UserCategoryNameChangeCommand(1, "Category Name Changed Three Times", 2);
            // Acting on Version 3
            var e5 = new UserCategoryNameChangeCommand(1, "Category Name Changed Four Times", 3);

            // Act
            await _commandBus.Send <UserCategoryCreateCommand>(e1);

            await _commandBus.Send <UserCategoryNameChangeCommand>(e2);

            await _commandBus.Send <UserCategoryNameChangeCommand>(e3);

            await _commandBus.Send <UserCategoryNameChangeCommand>(e4);

            await _commandBus.Send <UserCategoryNameChangeCommand>(e5);


            // Assert
            var m = (await _mementoRepository.FindByAsync(x => x.Id == 1)).FirstOrDefault();

            Assert.IsNotNull(m);
            var          memento = DatabaseEventStorage.DeSerialize <UserCategoryMemento>(m.Data);
            UserCategory c       = new UserCategory();

            c.SetMemento(memento);
            Assert.AreEqual("Category Name Changed Three Times", c.Name);
        }