public void AddSortConditionsToQueryInnerOrderByTest()
        {
            // Arrange
            var query         = "SELECT * FROM Alpha a JOIN (SELECT * FROM Omega ORDER BY Psi) o ON o.Psi = a.Gamma";
            var sortingEngine = new SortingQueryEngine();
            var mappings      = new Dictionary <string, List <Expression <Func <Alpha, object> > > >
            {
                { nameof(Omega.Psi), new List <Expression <Func <Alpha, object> > > {
                      a => a.Omega.Psi
                  } }
            };

            var queryParameters = new QueryParameters
            {
                SortingQueryProperties = new List <SortingQueryProperty>
                {
                    new SortingQueryProperty
                    {
                        PropertyName = nameof(Alpha.Beta),
                        SortOrder    = SortOrder.Descending
                    },
                    new SortingQueryProperty
                    {
                        PropertyName = nameof(Omega.Psi),
                        SortOrder    = SortOrder.Ascending
                    }
                }
            };

            var data = new WhereQuerySettings
            {
                PropertyMappings = new Dictionary <string, string>
                {
                    { ".", "a" },
                    { ".Omega.Psi", "o.Psi" }
                }
            };

            var orderByConditions = sortingEngine.BuildSortConditions(queryParameters, mappings);

            // Act
            var result = orderByConditions.Data.AddSortConditionsToQuery(query, data);

            // Assert
            result.Should().Be($"{query}{Environment.NewLine}ORDER BY{Environment.NewLine}a.Beta DESC, o.Psi ASC");
        }
        public void CalculateSortConditionsTest()
        {
            // Arrange
            var sortingEngine = new SortingQueryEngine();
            var mappings      = new Dictionary <string, List <Expression <Func <Alpha, object> > > >
            {
                { nameof(Omega.Psi), new List <Expression <Func <Alpha, object> > > {
                      a => a.Omega.Psi
                  } }
            };

            var queryParameters = new QueryParameters
            {
                SortingQueryProperties = new List <SortingQueryProperty>
                {
                    new SortingQueryProperty
                    {
                        PropertyName = nameof(Alpha.Beta),
                        SortOrder    = SortOrder.Descending
                    },
                    new SortingQueryProperty
                    {
                        PropertyName = nameof(Omega.Psi),
                        SortOrder    = SortOrder.Ascending
                    }
                }
            };

            var data = new WhereQuerySettings
            {
                PropertyMappings = new Dictionary <string, string>
                {
                    { ".", "a" },
                    { ".Omega.Psi", "o.Psi" }
                }
            };

            var orderByConditions = sortingEngine.BuildSortConditions(queryParameters, mappings);

            // Act
            var result = orderByConditions.Data.CalculateSortConditions(data);

            // Assert
            result.Should().Be("a.Beta DESC, o.Psi ASC");
        }
        public void AddSortConditionsToQueryNoConditionsTest()
        {
            // Arrange
            var query         = "SELECT * FROM Alpha a ORDER BY a.Gamma ASC";
            var sortingEngine = new SortingQueryEngine();

            var queryParameters = new QueryParameters
            {
                SortingQueryProperties = new List <SortingQueryProperty>()
            };

            var data = new WhereQuerySettings();

            var orderByConditions = sortingEngine.BuildSortConditions <Alpha>(queryParameters);

            // Act
            var result = orderByConditions.Data.AddSortConditionsToQuery(query, data);

            // Assert
            result.Should().Be(query);
        }
Example #4
0
        public static string CalculateSortConditions(this IEnumerable <OrderByCondition> orderByConditions, QuerySettings settings = null)
        {
            var sortingQueryEngine = new SortingQueryEngine();

            return(sortingQueryEngine.CalculateSortConditions(orderByConditions, settings));
        }
Example #5
0
        public static string AddSortConditionsToQuery(this IEnumerable <OrderByCondition> orderByConditions, string sqlQuery, QuerySettings settings = null)
        {
            var sortingQueryEngine = new SortingQueryEngine();

            return(sortingQueryEngine.AddSortConditionsToQuery(orderByConditions, sqlQuery, settings));
        }
 public void Setup()
 {
     _classUnderTest = new SortingQueryEngine();
 }