public async Task Execute_Creates_NewOperationContext()
        {
            var dataRequestsService = new DataRequestSubscriber(
                this._awsQueueClient,
                this._awsConfiguration,
                this._sysCtx,
                this._serialiser,
                this._requestManager,
                this._logger);

            await dataRequestsService.Execute("123", "test-str");

            A.CallTo(() => this._sysCtx.CreateAndStartOperationContext()).MustHaveHappenedOnceExactly();
        }
        public async Task Execute_Deserialises_Message()
        {
            var mockSerialiser      = A.Fake <IThirdPartyDataRequestSerialiser>();
            var dataRequestsService = new DataRequestSubscriber(
                this._awsQueueClient,
                this._awsConfiguration,
                this._sysCtx,
                mockSerialiser,
                this._requestManager,
                this._logger);

            await dataRequestsService.Execute("123", "test-str");

            A.CallTo(() => mockSerialiser.Deserialise("test-str")).MustHaveHappenedOnceExactly();
        }
        public void Initiate_Calls_AwsQueueClient_SubscribeToQueueAsync()
        {
            var dataRequestsService = new DataRequestSubscriber(
                this._awsQueueClient,
                this._awsConfiguration,
                this._sysCtx,
                this._serialiser,
                this._requestManager,
                this._logger);

            dataRequestsService.Initiate();

            A.CallTo(
                () => this._awsQueueClient.SubscribeToQueueAsync(
                    A <string> .Ignored,
                    A <Func <string, string, Task> > .Ignored,
                    A <CancellationToken> .Ignored,
                    A <AwsResusableCancellationToken> .Ignored)).MustHaveHappenedOnceExactly();
        }
        public async Task Execute_SendsRuleId_ToDataRequestManager()
        {
            var dataRequestsService = new DataRequestSubscriber(
                this._awsQueueClient,
                this._awsConfiguration,
                this._sysCtx,
                this._serialiser,
                this._requestManager,
                this._logger);
            var messageObj = new ThirdPartyDataRequestMessage {
                SystemProcessOperationId = "123"
            };
            var msg = JsonConvert.SerializeObject(messageObj);

            await dataRequestsService.Execute("123", msg);

            A.CallTo(
                () => this._requestManager.Handle(
                    "123",
                    A <ISystemProcessOperationThirdPartyDataRequestContext> .Ignored)).MustHaveHappenedOnceExactly();
        }