Exemplo n.º 1
0
        public void ParseFilter_ForRunDto()
        {
            // arrange
            var filter = "((Date gt '2020-02-02') and (Distance lt 5)) OR (Latitude eq 5.5)";

            // act
            Expression <Func <RunDto, bool> > predicate = QueryStringParser.ParseFilter <RunDto>(filter);

            // assert
            predicate.Should().NotBeNull();
            predicate.Body.ToString().Should().BeEquivalentTo("(((Param_0.Date > 02/02/2020 00:00:00) And (Param_0.Distance < 5)) Or (Convert(Param_0.Latitude, Decimal) == 5.5))");
        }
Exemplo n.º 2
0
        public void ParseFilter_ForUserDto()
        {
            // arrange
            var filter = "((userName eq 'Test') or (userName eq '1')) and (id ne 'abc')";

            // act
            Expression <Func <UserDto, bool> > predicate = QueryStringParser.ParseFilter <UserDto>(filter);

            // assert
            predicate.Should().NotBeNull();
            predicate.Body.ToString().Should().BeEquivalentTo("(((Param_0.UserName == \"Test\") Or (Param_0.UserName == \"1\")) And (Param_0.Id != \"abc\"))");
        }
Exemplo n.º 3
0
        /// <summary>
        /// parses string filter to DTO predicate
        /// </summary>
        /// <param name="filter">string filter</param>
        /// <typeparam name="TDto">DTO entity</typeparam>
        /// <returns></returns>
        /// <exception cref="JoggingTrackerBadRequestException"></exception>
        public static Expression <Func <TDto, bool> > GetFilterPredicate <TDto>(string filter = null) where TDto : class
        {
            Expression <Func <TDto, bool> > result = x => true;

            if (!string.IsNullOrWhiteSpace(filter))
            {
                try
                {
                    result = QueryStringParser.ParseFilter <TDto>(filter);
                }
                catch (Exception e)
                {
                    throw new JoggingTrackerBadRequestException($"{ErrorMessages.CouldntParseFilter} {e.Message}");
                }
            }

            return(result);
        }
Exemplo n.º 4
0
        public void ParseFilter_ForUserDto_InvalidPropertyName_ThrowsException()
        {
            var filter = "((invalidName eq 'test') or (userName eq '1')) and id ne 'abc'";

            Assert.Throws <OperationInvalidException>(() => QueryStringParser.ParseFilter <UserDto>(filter));
        }