protected override IHaveFulfilledSubscriptionRequirements CreateSystemUnderTest()
        {
            // Given 2 handlers
            var uniqueTopicAndQueueNames = new UniqueNamingStrategy();

            _proxyAwsClientFactory = new ProxyAwsClientFactory();

            var baseQueueName = "CustomerOrders_";

            _topicName = uniqueTopicAndQueueNames.GetTopicName(string.Empty, typeof(Order));
            _queueName = uniqueTopicAndQueueNames.GetQueueName(new SqsReadConfiguration(SubscriptionType.ToTopic)
            {
                BaseQueueName = baseQueueName
            }, typeof(Order));

            var fixture = new JustSayingFixture();

            var subscription = fixture.Builder()
                               .WithAwsClientFactory(() => _proxyAwsClientFactory)
                               .WithNamingStrategy(() => uniqueTopicAndQueueNames)
                               .WithSqsTopicSubscriber()
                               .IntoQueue(baseQueueName)
                               .WithMessageHandlers(new OrderHandler(), new OrderHandler());

            subscription.StartListening();
            return(subscription);
        }
        protected override IHaveFulfilledSubscriptionRequirements CreateSystemUnderTest()
        {
            // Given 2 handlers
            uniqueTopicAndQueueNames = new UniqueTopicAndQueueNames();
            proxyAwsClientFactory    = new ProxyAwsClientFactory();

            var baseQueueName = "CustomerOrders_";

            topicName = uniqueTopicAndQueueNames.GetTopicName(string.Empty, typeof(Order));
            queueName = uniqueTopicAndQueueNames.GetQueueName(new SqsReadConfiguration(SubscriptionType.ToTopic)
            {
                BaseQueueName = baseQueueName
            }, typeof(Order));

            bus = CreateMeABus.WithLogging(new LoggerFactory())
                  .InRegion(RegionEndpoint.EUWest1.SystemName)
                  .WithAwsClientFactory(() => proxyAwsClientFactory)
                  .WithNamingStrategy(() => uniqueTopicAndQueueNames)
                  .WithSqsTopicSubscriber()
                  .IntoQueue(baseQueueName) // generate unique queue name
                  .WithMessageHandlers(new OrderHandler(), new OrderHandler());

            bus.StartListening();
            return(bus);
        }
        protected override IHaveFulfilledSubscriptionRequirements CreateSystemUnderTest()
        {
            proxyAwsClientFactory = new ProxyAwsClientFactory();

            var busConfig = CreateMeABus.WithLogging(new LoggerFactory())
                            .InRegion(RegionEndpoint.EUWest1.SystemName)
                            .WithAwsClientFactory(() => proxyAwsClientFactory);

            try
            {
                // 2nd distinct handler declaration for the same queue should fail
                AttachAHandler(busConfig);
                AttachAHandler(busConfig);
            }
            catch (NotSupportedException ex)
            {
                _capturedException = ex;
            }
            return(null);
        }
        protected override IHaveFulfilledSubscriptionRequirements CreateSystemUnderTest()
        {
            var awsClientFactory = new ProxyAwsClientFactory();
            var fixture          = new JustSayingFixture();

            var busConfig = fixture.Builder()
                            .WithAwsClientFactory(() => awsClientFactory);

            try
            {
                // Second distinct handler declaration for the same queue should fail
                AttachAHandler(busConfig);
                AttachAHandler(busConfig);
            }
            catch (NotSupportedException ex)
            {
                _capturedException = ex;
            }

            return(null);
        }