public async Task ExecuteCoordinationMessageEndsEventWithErrorIfNotDeserialisable()
        {
            var subscriber = new QueueAutoScheduleSubscriber(
                this.dataVerifier,
                this.autoSchedule,
                this.awsQueueClient,
                this.awsConfiguration,
                this.serialiser,
                this.systemProcessContext,
                this.logger);

            await subscriber.ExecuteCoordinationMessageAsync("message-id", "not-a-upload-message");

            A.CallTo(() => this.systemProcessOperationContext.EndEventWithError(A <string> .Ignored))
            .MustHaveHappenedOnceExactly();
        }
        public async Task ExecuteCoordinationMessageCallsAnalyseFileIdForValidUploadMessage()
        {
            var subscriber = new QueueAutoScheduleSubscriber(
                this.dataVerifier,
                this.autoSchedule,
                this.awsQueueClient,
                this.awsConfiguration,
                this.serialiser,
                this.systemProcessContext,
                this.logger);
            var uploadMessage = new AutoScheduleMessage();
            var message       = this.serialiser.Serialise(uploadMessage);

            await subscriber.ExecuteCoordinationMessageAsync("message-id", message);

            A.CallTo(() => this.dataVerifier.Scan()).MustHaveHappenedOnceExactly();
        }
        public void InitiateSubscribesToQueue()
        {
            A.CallTo(() => this.awsConfiguration.UploadCoordinatorQueueName).Returns("a-queue-name");

            var subscriber = new QueueAutoScheduleSubscriber(
                this.dataVerifier,
                this.autoSchedule,
                this.awsQueueClient,
                this.awsConfiguration,
                this.serialiser,
                this.systemProcessContext,
                this.logger);

            subscriber.Initiate();

            A.CallTo(
                () => this.awsQueueClient.SubscribeToQueueAsync(
                    "a-queue-name",
                    A <Func <string, string, Task> > .Ignored,
                    A <CancellationToken> .Ignored,
                    A <AwsResusableCancellationToken> .Ignored)).MustHaveHappenedOnceExactly();
        }