public void AggregateIdentityExtractor_InValidObject_ThrowsArgumentNullException()
        {
            CreateTestCommand message = null;

            // ReSharper disable once ExpressionIsAlwaysNull
            this.Invoking(test => ShardIdentityExtractors.AggregateIdentityExtractor <TestAggregate, TestAggregateId>(message))
            .Should().Throw <ArgumentNullException>();
        }
        public void AggregateIdentityExtractor_InValidObject_ThrowsArgumentException()
        {
            var message = string.Empty;

            this.Invoking(test => ShardIdentityExtractors.AggregateIdentityExtractor <TestAggregate, TestAggregateId>(message))
            .Should().Throw <ArgumentException>()
            .WithMessage(nameof(message));
        }
        public void AggregateIdentityExtractor_ValidObject_ExtractsObject()
        {
            var aggregateId = TestAggregateId.New;
            var message     = new CreateTestCommand(aggregateId);

            var extractedObject = ShardIdentityExtractors.AggregateIdentityExtractor <TestAggregate, TestAggregateId>(message).Item2;

            extractedObject.GetHashCode().Should().Be(message.GetHashCode());
        }
        public void AggregateSagaIdentityExtractor_InValidMessage_ExceptionIsThrown()
        {
            var aggregateId = TestAggregateId.New;
            var commandId   = CommandId.New;
            var message     = new CreateTestCommand(aggregateId, commandId);

            this.Invoking(test => ShardIdentityExtractors.AggregateSagaIdentityExtractor <TestSagaManager, TestSaga, TestSagaId, TestSagaLocator>(message))
            .Should().Throw <ArgumentException>();
        }
        public void AggregateSagaIdentityExtractor_ValidMessage_ExtractsIdentity()
        {
            var aggregateId = TestAggregateId.New;
            var message     = new CreateTestCommand(aggregateId);

            var extractedIdentity =
                ShardIdentityExtractors.AggregateIdentityExtractor <TestAggregate, TestAggregateId>(message).Item1;

            extractedIdentity.Should().BeEquivalentTo(message.AggregateId.Value);
        }
        public void AggregateSagaIdentityExtractor_ValidMessage_ExtractsIdentity()
        {
            var aggregateId             = TestAggregateId.New;
            var receiverId              = TestAggregateId.New;
            var testId                  = TestId.New;
            var test                    = new Test(testId);
            var now                     = DateTimeOffset.UtcNow;
            var aggregateSequenceNumber = 3;
            var domainEvent             =
                new DomainEvent <TestAggregate, TestAggregateId, TestSentEvent>(
                    aggregateId,
                    new TestSentEvent(test, receiverId),
                    new Metadata(),
                    now,
                    aggregateSequenceNumber);

            var extractedIdentity =
                ShardIdentityExtractors.AggregateSagaIdentityExtractor <TestSagaManager, TestSaga, TestSagaId, TestSagaLocator>(domainEvent);

            extractedIdentity.Item1.Should().Contain(test.Id.Value);
            extractedIdentity.Item2
            .As <DomainEvent <TestAggregate, TestAggregateId, TestSentEvent> >().AggregateEvent.Test
            .Should().Be(test);
        }
 public void AggregateSagaIdentityExtractor_NullMessage_ExceptionIsThrown()
 {
     this.Invoking(test => ShardIdentityExtractors.AggregateSagaIdentityExtractor <TestSagaManager, TestSaga, TestSagaId, TestSagaLocator>(null))
     .Should().Throw <ArgumentNullException>();
 }