public async Task Then_If_Null_Returned_NotFound_Result_Returned(string accountType,
                                                                         string accountIdentifier,
                                                                         string productId,
                                                                         GetApiProductSubscriptionQueryResult mediatorResult,
                                                                         [Frozen] Mock <IMediator> mediator,
                                                                         [Greedy] SubscriptionsController controller)
        {
            mediatorResult.Product      = null;
            mediatorResult.Subscription = null;
            mediator.Setup(x => x.Send(It.Is <GetApiProductSubscriptionQuery>(c =>
                                                                              c.AccountType.Equals(accountType) &&
                                                                              c.AccountIdentifier.Equals(accountIdentifier) &&
                                                                              c.ProductId.Equals(productId)
                                                                              ),
                                       CancellationToken.None)).ReturnsAsync(mediatorResult);

            var actual = await controller.GetProductSubscription(accountIdentifier, productId, accountType) as NotFoundResult;

            Assert.IsNotNull(actual);
            actual.StatusCode.Should().Be((int)HttpStatusCode.NotFound);
        }
        public async Task Then_The_Request_Is_Handled_And_Data_Returned(
            string accountType,
            string accountIdentifier,
            string productId,
            GetApiProductSubscriptionQueryResult mediatorResult,
            [Frozen] Mock <IMediator> mediator,
            [Greedy] SubscriptionsController controller)
        {
            mediator.Setup(x => x.Send(It.Is <GetApiProductSubscriptionQuery>(c =>
                                                                              c.AccountType.Equals(accountType) &&
                                                                              c.AccountIdentifier.Equals(accountIdentifier) &&
                                                                              c.ProductId.Equals(productId)
                                                                              ),
                                       CancellationToken.None)).ReturnsAsync(mediatorResult);

            var actual = await controller.GetProductSubscription(accountIdentifier, productId, accountType) as OkObjectResult;

            Assert.IsNotNull(actual);
            var actualModel = actual.Value as ProductSubscriptionApiResponseItem;

            actualModel.Id.Should().Be(mediatorResult.Product.Id);
        }