public void ShouldGetEventsForAggregate()
        {
            var aggId = Guid.NewGuid();
            var aggregateRoot = new TestDomainObject(aggId);
            _domainRepository.Save(aggregateRoot);

            var retrievedAggregateRoot = _domainRepository.Get<TestDomainObject>(aggId);

            Assert.That(retrievedAggregateRoot.Version, Is.EqualTo(1));
        }
コード例 #2
0
        public void ShouldGetEventsForAggregate()
        {
            var aggId         = Guid.NewGuid();
            var aggregateRoot = new TestDomainObject(aggId);

            _domainRepository.Save(aggregateRoot);

            var retrievedAggregateRoot = _domainRepository.Get <TestDomainObject>(aggId);

            Assert.That(retrievedAggregateRoot.Version, Is.EqualTo(1));
        }
コード例 #3
0
        public void should_not_be_equal_if_ids_are_different()
        {
            var entity1 = new TestDomainObject {
                ID = 1
            };
            var entity2 = new TestDomainObject {
                ID = 2
            };

            entity1.Should().NotBe(entity2);
        }
コード例 #4
0
        public void should_be_equal_if_ids_are_equal()
        {
            var entity1 = new TestDomainObject {
                ID = 1
            };
            var entity2 = new TestDomainObject {
                ID = 1
            };

            entity1.Should().Be(entity2);
        }
コード例 #5
0
        public async Task should_successfully_create_a_aggregate_root()
        {
            // GIVEN
            var obj = TestDomainObject.Create();

            obj.Increase();

            // WHEN
            var events = await _sut.Save(WriteRepository.DefaultKeyTaker, obj);

            // THEN
            events.Should().HaveCount(2);
        }
コード例 #6
0
        public WhenVisiting()
        {
            TestDomainObject sut = GetSut("11");

            var @event = new TestEvent();


            sut.ApplyEvent(@event);

            sut.RaiseEvent();
            VisitorState            = sut.State <SampleVisitor>();
            VisitorStateWithSuppres = sut.State <SampleVisitor>(true);
        }
コード例 #7
0
        public void GetPropertyAccessExpression_BidirectionalMultipleRelation()
        {
            var propertyAccessor = _bidirectionalMultipleRelationReflector
                                   .GetPropertyAccessExpression(typeof(IMixinTypeWithDomainObjectAttributes_AnnotatedPropertiesPartOfInterface)).Compile();

            using (ClientTransaction.CreateRootTransaction().EnterDiscardingScope())
            {
                var obj           = MixinTarget_AnnotatedPropertiesPartOfInterface.NewObject();
                var propertyValue = TestDomainObject.NewObject();
                ((IMixinTypeWithDomainObjectAttributes_AnnotatedPropertiesPartOfInterface)obj).BidirectionalMultiplePropertyWithMandatoryAttribute.Add(propertyValue);
                var result = propertyAccessor(obj);
                Assert.That(result, Is.EqualTo(new[] { propertyValue }));
            }
        }
        public void ShouldPersistEventsToDatabase()
        {
            var aggId = Guid.NewGuid();
            var aggregateRoot = new TestDomainObject(aggId);
            _domainRepository.Save(aggregateRoot);

            var client = new MongoClient(_connectionString);
            var server = client.GetServer();
            var database = server.GetDatabase(_database);
            var collection = database.GetCollection<DomainEventCollection>(MongoEventPersistence.DOMAINEVENT_COLLECTION);
            var query = Query.EQ("AggregateId", aggId);
            var entity = collection.FindOne(query);
            Assert.That(entity.DomainEvents.Count, Is.EqualTo(1));
            Assert.That(entity.DomainEvents[0], Is.TypeOf<TestDomainEvent>());
        }
コード例 #9
0
        public async Task should_successfully_read_an_aggregate_root()
        {
            // GIVEN
            var obj = TestDomainObject.Create();

            obj.Increase();
            obj.Increase();
            obj.Increase();
            await _sut.Save(WriteRepository.DefaultKeyTaker, obj);

            // WHEN
            var loaded = await _sut.GetOrDefault <TestDomainObject>(obj.Id.ToString());

            // THEN
            loaded !.Counter.Should().Be(3);
        }
        public void CommitValidate_WithValidationFailures()
        {
            using (ClientTransaction.CreateRootTransaction().EnterDiscardingScope())
            {
                var domainObject1 = DomainObjectWithoutAnnotatedProperties.NewObject();
                var domainObject2 = TestDomainObject.NewObject();
                var domainObject3 = DomainObjectWithoutAnnotatedProperties.NewObject();

                var persistableData1 = new PersistableData(
                    domainObject1,
                    StateType.New,
                    DataContainerObjectMother.Create(domainObject1),
                    new IRelationEndPoint[0]);
                var persistableData2 = new PersistableData(
                    domainObject2,
                    StateType.Changed,
                    DataContainerObjectMother.Create(domainObject2),
                    new IRelationEndPoint[0]);
                var persistableData3 = new PersistableData(
                    domainObject3,
                    StateType.Deleted,
                    DataContainerObjectMother.Create(domainObject3),
                    new IRelationEndPoint[0]);

                _validatorBuilderMock
                .Expect(mock => mock.BuildValidator(typeof(DomainObjectWithoutAnnotatedProperties)))
                .Return(_validatorMock1);
                _validatorBuilderMock
                .Expect(mock => mock.BuildValidator(typeof(TestDomainObject)))
                .Return(_validatorMock2);

                var validationFailure1 = new ValidationFailure("Test1", "Error1");
                validationFailure1.SetValidatedInstance(domainObject1);
                var validationFailure2 = new ValidationFailure("Test2", "Error2");
                validationFailure2.SetValidatedInstance(domainObject1);
                var validationFailure3 = new ValidationFailure("Test3", "Error3");

                _validatorMock1.Expect(mock => mock.Validate(domainObject1)).Return(new ValidationResult(new [] { validationFailure1 }));
                _validatorMock2.Expect(mock => mock.Validate(domainObject2)).Return(new ValidationResult(new [] { validationFailure2, validationFailure3 }));

                _extension.CommitValidate(ClientTransaction.Current, Array.AsReadOnly(new[] { persistableData1, persistableData2, persistableData3 }));

                _validatorBuilderMock.VerifyAllExpectations();
                _validatorMock1.VerifyAllExpectations();
                _validatorMock2.VerifyAllExpectations();
            }
        }
コード例 #11
0
        public void ShouldPersistEventsToDatabase()
        {
            var aggId         = Guid.NewGuid();
            var aggregateRoot = new TestDomainObject(aggId);

            _domainRepository.Save(aggregateRoot);

            var client     = new MongoClient(_connectionString);
            var server     = client.GetServer();
            var database   = server.GetDatabase(_database);
            var collection = database.GetCollection <DomainEventCollection>(MongoEventPersistence.DOMAINEVENT_COLLECTION);
            var query      = Query.EQ("AggregateId", aggId);
            var entity     = collection.FindOne(query);

            Assert.That(entity.DomainEvents.Count, Is.EqualTo(1));
            Assert.That(entity.DomainEvents[0], Is.TypeOf <TestDomainEvent>());
        }
コード例 #12
0
        public async Task should_successfully_update_an_aggregate_root()
        {
            // GIVEN
            var obj = TestDomainObject.Create();

            obj.Increase();
            await _sut.Save(WriteRepository.DefaultKeyTaker, obj);

            var loaded = await _sut.GetOrDefault <TestDomainObject>(obj.Id.ToString());

            loaded !.Increase();

            // WHEN
            var events = await _sut.Save(WriteRepository.DefaultKeyTaker, loaded);

            // THEN
            events.Should().HaveCount(1);
        }
コード例 #13
0
        public void ShouldPersistEventsToDatabase()
        {
            var aggId         = Guid.NewGuid();
            var aggregateRoot = new TestDomainObject(aggId);

            _domainRepository.Save(aggregateRoot);

            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();
                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "Select COUNT(*) from Events";
                    var count = (int)command.ExecuteScalar();
                    Assert.That(count, Is.EqualTo(1));
                }
            }
        }
コード例 #14
0
ファイル: WhenVisiting.cs プロジェクト: cypressious/BE.CQRS
        public WhenVisiting()
        {
            TestDomainObject sut = GetSut("11");

            var @event = new TestEvent();
            var events = new List <IEvent>
            {
                @event
            };

            sut.ApplyEvents(events, null);
            sut.ApplyConfig(new EventSourceConfiguration
            {
                StateActivator = new ActivatorDomainObjectActivator()
            });

            sut.RaiseEvent();
            VisitorState            = sut.State <SampleVisitor>();
            VisitorStateWithSuppres = sut.State <SampleVisitor>(true);
        }
コード例 #15
0
        public WhenCreatingADomainObjectByType()
        {
            ActivatorDomainObjectActivator sut = GetSut();

            domainObject = sut.Resolve(typeof(TestDomainObject), id) as TestDomainObject;
        }
コード例 #16
0
        public WhenCreatingADomainObjectGeneric()
        {
            ActivatorDomainObjectActivator sut = GetSut();

            domainObject = sut.Resolve <TestDomainObject>(id);
        }