public void ShouldSetCountToMaxWhenCountExceedsAndOptionsWereSetToThrow() { var behaviourSetInstance = new DynamicQueryAttribute(exceededPaginationCountBehaviour: PaginationBehaviour.Throw); string queryExceedingMaxCount = DYNAMIC_QUERY_STRING.Replace("count=10", $"count={_defaultMaxCountSize + 1}"); Assert.Throws <MaximumResultSetExceededException>(() => { ExecuteAction(behaviourSetInstance, queryExceedingMaxCount); }); }
public void ShouldDetectHttpHeaderResolverQueryResolutionOptionWhenItsProvided() { var instance = new DynamicQueryAttribute(); string onlyQuery = dynamicQueryWithParam.Split($"?{DYNAMIC_QUERY_STRING_PARAM}=")[1]; string onlyQueryEncoded = dynamicQueryWithParamValueEncoded.Split($"?{DYNAMIC_QUERY_STRING_PARAM}=")[1]; var resultWithoutEncoding = ExecuteAction( instance, onlyQuery, new DynamicQueryBuilderSettings { QueryOptionsResolver = new HttpHeaderResolver(DYNAMIC_QUERY_STRING_PARAM) }, true); var resultWithEncoding = ExecuteAction( instance, onlyQueryEncoded, new DynamicQueryBuilderSettings { QueryOptionsResolver = new HttpHeaderResolver(DYNAMIC_QUERY_STRING_PARAM, (qstring) => Encoding.UTF8.GetString(Convert.FromBase64String(qstring))) }, true); Assert.NotNull(resultWithoutEncoding.Filters); Assert.NotEmpty(resultWithoutEncoding.Filters); Assert.NotNull(resultWithEncoding.Filters); Assert.NotEmpty(resultWithEncoding.Filters); }
public void ShouldDetectQueryStringResolverQueryResolutionOptionWhenItsProvided() { var instance = new DynamicQueryAttribute(); var resultWithoutEncoding = ExecuteAction( instance, dynamicQueryWithParam, new DynamicQueryBuilderSettings { QueryOptionsResolver = new QueryStringResolver(DYNAMIC_QUERY_STRING_PARAM) }); var resultWithEncoding = ExecuteAction( instance, dynamicQueryWithParamValueEncoded, new DynamicQueryBuilderSettings { QueryOptionsResolver = new QueryStringResolver(DYNAMIC_QUERY_STRING_PARAM, (qstring) => Encoding.UTF8.GetString(Convert.FromBase64String(qstring))) }); Assert.NotNull(resultWithoutEncoding.Filters); Assert.NotEmpty(resultWithoutEncoding.Filters); Assert.NotNull(resultWithEncoding.Filters); Assert.NotEmpty(resultWithEncoding.Filters); }
public void ShouldSetGivenAssignDataSetCountWhenOptionsNotNull() { bool changedIncludeDataSetCount = !_defaultIncludeDataSetCount; var parameterlessInstance = new DynamicQueryAttribute(includeDataSetCountToPagination: changedIncludeDataSetCount); DynamicQueryOptions executedOptions = ExecuteAction(parameterlessInstance); Assert.Equal(executedOptions.PaginationOption.AssignDataSetCount, changedIncludeDataSetCount); }
public void ShouldSetOffsetToZeroWhenLessThanZero() { var attributeInstance = new DynamicQueryAttribute(); string queryWithOffsetNegative = DYNAMIC_QUERY_STRING.Replace("offset=0", "offset=-1"); DynamicQueryOptions executedOptionsOffsetNegative = ExecuteAction(attributeInstance, queryWithOffsetNegative); Assert.Equal(0, executedOptionsOffsetNegative.PaginationOption.Offset); }
public void ShouldParseDataSetCountWhenIncludeDataSetCountAssignedAndThereIsNoPaginationOption() { var attributeInstance = new DynamicQueryAttribute(); string queryWithOffsetNegative = DYNAMIC_QUERY_STRING.Replace("offset=0", string.Empty).Replace("count=10", string.Empty); DynamicQueryOptions executedOptionsOffsetNegative = ExecuteAction(attributeInstance, queryWithOffsetNegative); Assert.NotNull(executedOptionsOffsetNegative.PaginationOption); Assert.True(executedOptionsOffsetNegative.PaginationOption.AssignDataSetCount); }
public void ShouldSetCountToOneWhenRequestedCountLessThanOrEqualToZero() { var attributeInstance = new DynamicQueryAttribute(); string queryWithCountZero = DYNAMIC_QUERY_STRING.Replace("count=10", "count=0"); string queryWithCountNegative = DYNAMIC_QUERY_STRING.Replace("count=10", "count=-1"); DynamicQueryOptions executedOptionsWithCountZero = ExecuteAction(attributeInstance, queryWithCountZero); DynamicQueryOptions executedOptionsWithCountNegative = ExecuteAction(attributeInstance, queryWithCountNegative); Assert.Equal(1, executedOptionsWithCountZero.PaginationOption.Count); Assert.Equal(1, executedOptionsWithCountNegative.PaginationOption.Count); }
private DynamicQueryOptions ExecuteAction( DynamicQueryAttribute attributeInstance, string query = null, DynamicQueryBuilderSettings settings = null, bool queryOnHeader = false) { ActionExecutingContext context = CreateContext(query, settings, queryOnHeader); attributeInstance.OnActionExecuting(context); return(context.ActionArguments.First().Value as DynamicQueryOptions); }
public void ShouldSetCountToMaxWhenCountExceedsAndOptionsWereSetToGetMaxOrDefault() { var behaviourSetInstance = new DynamicQueryAttribute(exceededPaginationCountBehaviour: PaginationBehaviour.GetMax); var defaultBehaviourInstance = new DynamicQueryAttribute(); string queryExceedingMaxCount = DYNAMIC_QUERY_STRING.Replace("count=10", $"count={_defaultMaxCountSize + 1}"); DynamicQueryOptions executedOptionsWithSetOptions = ExecuteAction(behaviourSetInstance, queryExceedingMaxCount); DynamicQueryOptions executedOptionsWithDefaultOptions = ExecuteAction(defaultBehaviourInstance, queryExceedingMaxCount); Assert.Equal(executedOptionsWithSetOptions.PaginationOption.Count, _defaultMaxCountSize); Assert.Equal(executedOptionsWithDefaultOptions.PaginationOption.Count, _defaultMaxCountSize); }
public void ShouldBeAbleToHandleEmptyQueries() { var attr = new DynamicQueryAttribute(); var settings = new DynamicQueryBuilderSettings { QueryOptionsResolver = new QueryStringResolver(DYNAMIC_QUERY_STRING_PARAM) }; var result = ExecuteAction(attr, string.Empty, settings); Assert.NotNull(result); Assert.Empty(result.Filters); Assert.Empty(result.SortOptions); }
public void ShouldSetGivenCtorValues() { int changedMaxCountSize = 200; bool changedIncludedataSetCount = false; PaginationBehaviour changedPaginationBehaviour = PaginationBehaviour.Throw; var parameterlessInstance = new DynamicQueryAttribute(); var parameteredInstance = new DynamicQueryAttribute(200, false, PaginationBehaviour.Throw); Assert.Equal(parameterlessInstance._maxCountSize, _defaultMaxCountSize); Assert.Equal(parameterlessInstance._includeDataSetCountToPagination, _defaultIncludeDataSetCount); Assert.Equal(parameterlessInstance._exceededPaginationCountBehaviour, _defaultPaginationBehaviour); Assert.Equal(parameteredInstance._maxCountSize, changedMaxCountSize); Assert.Equal(parameteredInstance._includeDataSetCountToPagination, changedIncludedataSetCount); Assert.Equal(parameteredInstance._exceededPaginationCountBehaviour, changedPaginationBehaviour); }