public void Reader_Is_Enabled(StandardQueryStringParameters parametersDisabled, bool allowOverride, bool expectIsEnabled)
        {
            // Arrange
            var options = new JsonApiOptions
            {
                AllowQueryStringOverrideForSerializerNullValueHandling = allowOverride
            };

            var reader = new NullsQueryStringParameterReader(options);

            // Act
            bool isEnabled = reader.IsEnabled(new DisableQueryStringAttribute(parametersDisabled));

            // Assert
            isEnabled.Should().Be(allowOverride && expectIsEnabled);
        }
        private static QueryStringReader CreateQueryParameterDiscoveryForAll(IResourceGraph resourceGraph,
                                                                             JsonApiRequest request, IJsonApiOptions options, FakeRequestQueryStringAccessor queryStringAccessor)
        {
            var resourceFactory = new ResourceFactory(new ServiceContainer());

            var includeReader        = new IncludeQueryStringParameterReader(request, resourceGraph, options);
            var filterReader         = new FilterQueryStringParameterReader(request, resourceGraph, resourceFactory, options);
            var sortReader           = new SortQueryStringParameterReader(request, resourceGraph);
            var sparseFieldSetReader = new SparseFieldSetQueryStringParameterReader(request, resourceGraph);
            var paginationReader     = new PaginationQueryStringParameterReader(request, resourceGraph, options);
            var defaultsReader       = new DefaultsQueryStringParameterReader(options);
            var nullsReader          = new NullsQueryStringParameterReader(options);

            var readers = ArrayFactory.Create <IQueryStringParameterReader>(includeReader, filterReader, sortReader, sparseFieldSetReader, paginationReader, defaultsReader, nullsReader);

            return(new QueryStringReader(options, queryStringAccessor, readers, NullLoggerFactory.Instance));
        }
        public void Reader_Outcome(string queryStringParameterValue, NullValueHandling optionsNullValue, bool optionsAllowOverride, NullValueHandling expected)
        {
            // Arrange
            var options = new JsonApiOptions
            {
                SerializerSettings = { NullValueHandling = optionsNullValue },
                AllowQueryStringOverrideForSerializerNullValueHandling = optionsAllowOverride
            };

            var reader = new NullsQueryStringParameterReader(options);

            // Act
            if (reader.IsEnabled(DisableQueryStringAttribute.Empty))
            {
                reader.Read("nulls", queryStringParameterValue);
            }

            // Assert
            reader.SerializerNullValueHandling.Should().Be(expected);
        }