public async Task PublishesEvent()
        {
            var subscription = nameof(PublishesEvent);

            await CreateEndToEndTestSubscriptionsAsync(subscription);

            var services = new ServiceCollection();

            services.AddHostedService <MessageBusHostedService>()
            .AddSingleton <IMessageTracker, MessageTracker>()
            .AddSingleton <IPublishingService, PublishingService>()
            .AddMessageBus(new AzureServiceBusClientBuilder(Configuration["Hostname"],
                                                            Configuration["Topic"], subscription, Configuration["TenantId"]));
            _serviceProvider = services.BuildServiceProvider();
            var aircraftTakenOffEvent = new AircraftTakenOff {
                AircraftId = Guid.NewGuid().ToString()
            };
            await _serviceProvider.GetRequiredService <IPublishingService>().PublishAsync(aircraftTakenOffEvent);

            Assert.Single(await ReceiveMessagesForSubscriptionAsync($"{subscription}-Output"),
                          m => m.Subject == nameof(AircraftTakenOff) &&
                          m.Body.ToObjectFromJson <AircraftTakenOff>().AircraftId == aircraftTakenOffEvent.AircraftId);
        }
        public async Task PublishesEventWithScheduledEnqueueTime()
        {
            var subscription = nameof(PublishesEventWithScheduledEnqueueTime);

            await CreateEndToEndTestSubscriptionsAsync(subscription);

            var services = new ServiceCollection();

            services.AddHostedService <MessageBusHostedService>()
            .AddSingleton <IMessageTracker, MessageTracker>()
            .AddSingleton <IPublishingService, PublishingServiceWithDelay>()
            .AddMessageBus(new AzureServiceBusClientBuilder(Configuration["Hostname"],
                                                            Configuration["Topic"], subscription, Configuration["TenantId"]));
            _serviceProvider = services.BuildServiceProvider();
            var aircraftTakenOffEvent = new AircraftTakenOff {
                AircraftId = Guid.NewGuid().ToString()
            };
            await _serviceProvider.GetRequiredService <IPublishingService>().PublishAsync(aircraftTakenOffEvent);

            Assert.Empty(await FindAircraftTakenOffEventsAsync(subscription, aircraftTakenOffEvent));
            await Task.Delay(TimeSpan.FromSeconds(11));

            Assert.Single(await FindAircraftTakenOffEventsAsync(subscription, aircraftTakenOffEvent));
        }