public void ShouldBuildSortByExpressionWithEmptyWhitelistThrowArgumentException(string sortOptions)
        {
            var argumentException = Assert.Catch <ArgumentException>(() => SortOptionExtensions.BuildSortByExpression <Opportunity>(sortOptions));

            Assert.IsNotNull(argumentException);
            Assert.IsTrue(argumentException.Message.Contains("An item with the same key has already been added."));
        }
        protected IEnumerable <TDomain> Search(Expression <Func <TEntity, bool> > baseExpression, string filterOptions, string sortOptions, int index, int limit, out long total)
        {
            var filterExpression = FilterOptionExtensions.GetFilterExpression <TEntity>(filterOptions, Whitelist?.Whitelist);
            var finalExpression  = baseExpression.And(filterExpression);
            var query            = Query.Where(finalExpression);

            total = query.LongCount();

            if (total == 0)
            {
                return(Enumerable.Empty <TDomain>());
            }

            var sortDictionary = SortOptionExtensions.BuildSortByExpression <TEntity>(sortOptions);
            var entities       = query.ApplySortByExpressions(sortDictionary).Skip(index).Take(limit).ToList();

            return(ToDomain(entities));
        }
        public void ShouldBuildSortByExpressionWithEmptyWhitelist(string sortOptions)
        {
            var sortDictionary = SortOptionExtensions.BuildSortByExpression <Opportunity>(sortOptions);

            ValidateDictionary(sortDictionary, sortOptions);
        }
 public void ShouldBuildSortByExpressionWithWhitelistThrowUnsupportedWhitelistPropertyException(string sortOptions)
 {
     Assert.Throws <UnsupportedWhitelistPropertyException>(() => SortOptionExtensions.BuildSortByExpression <Opportunity>(sortOptions, _whitelist));
 }
        public void ShouldBuildSortByExpressionReturnEmpty(string sortOptions)
        {
            var sortDictionary = SortOptionExtensions.BuildSortByExpression <Opportunity>(sortOptions);

            Assert.IsEmpty(sortDictionary);
        }
 public void ShouldBuildSortByExpressionWithEmptyWhitelistThrowEntityPropertyNameNotDefinedException(string sortOptions)
 {
     Assert.Throws <EntityPropertyNameNotDefinedException>(() => SortOptionExtensions.BuildSortByExpression <Opportunity>(sortOptions));
 }