public async Task CheckCalculationProgressForSpecifications_WhenTheHttpRequestQueryIsNull_ReturnsBadRequestObjectResult()
        {
            //Arrange
            HttpRequest request = Substitute.For <HttpRequest>();

            request.Query.Returns(x => null);

            ILogger logger = CreateLogger();

            SpecificationsService service = CreateService(logs: logger);

            //Act
            IActionResult result = await service.CheckPublishResultStatus(request);

            //Assert
            result
            .Should()
            .BeOfType <BadRequestObjectResult>()
            .Which
            .Value
            .Should()
            .Be("the request query is empty or null");

            logger
            .Received(1)
            .Error(Arg.Is("The http request query is empty or null"));
        }
        public async Task CheckCalculationProgressForSpecifications_WhenCacheisCorrupted_ReturnsBadRequestObjectResult()
        {
            //Arrange
            IQueryCollection queryStringValues = new QueryCollection(new Dictionary <string, StringValues>
            {
                { "specificationId", new StringValues(SpecificationId) },
            });

            HttpRequest request = Substitute.For <HttpRequest>();

            request
            .Query
            .Returns(queryStringValues);

            ICacheProvider cacheProvider = Substitute.For <ICacheProvider>();

            cacheProvider.GetAsync <SpecificationCalculationExecutionStatus>($"{CacheKeys.CalculationProgress}{SpecificationId}").Returns <SpecificationCalculationExecutionStatus>(x => { throw new Exception(); });

            ILogger logger = CreateLogger();

            SpecificationsService service = CreateService(logs: logger, cacheProvider: cacheProvider);

            //Act
            IActionResult result = await service.CheckPublishResultStatus(request);

            //Assert
            result
            .Should()
            .BeOfType <InternalServerErrorResult>();
        }
        public async Task CheckCalculationProgressForSpecifications_WhenQueryStringValuesAreEmpty_ReturnsBadRequestObjectResult()
        {
            //Arrange
            HttpRequest request = Substitute.For <HttpRequest>();

            IQueryCollection queryStringValues = new QueryCollection(new Dictionary <string, StringValues>
            {
            });

            request.Query.Returns(queryStringValues);

            ILogger logger = CreateLogger();

            SpecificationsService service = CreateService(logs: logger);

            //Act
            IActionResult result = await service.CheckPublishResultStatus(request);

            //Assert
            result
            .Should()
            .BeOfType <BadRequestObjectResult>();
        }