Beispiel #1
0
        public void TwoNonEmptyLowerCaseStringWithSameValueShouldBeEqual(string s1, string s2)
        {
            var r1 = NonEmptyLowerCaseString.TryCreate(s1, (NonEmptyString)"Value");
            var r2 = NonEmptyLowerCaseString.TryCreate(s2, (NonEmptyString)"Value");

            Helper.ShouldBeEqual(r1, r2);
        }
Beispiel #2
0
        public void NonEmptyLowerCaseStringsWithDifferentValueShouldNotBeEqual()
        {
            var r1 = NonEmptyLowerCaseString.TryCreate("2", (NonEmptyString)"Value");
            var r2 = NonEmptyLowerCaseString.TryCreate("1", (NonEmptyString)"Value");

            Helper.ShouldNotBeEqual(r1, r2);
        }
Beispiel #3
0
        private static IResult <NonEmptyString> AddColumnOrReturnError(string orderBy, NonEmptyLowerCaseString nonEmptyOrderByItemLowerCaseTrimmed, ImmutableList <NonEmptyLowerCaseString> allowedColumnsLowerCase, ICollection <OrderBy> result)
        {
            var sortOrder = GetSortOrder(nonEmptyOrderByItemLowerCaseTrimmed);

            var ascending = true;

            var nonEmptyOrderByItemLowerCaseTrimmedColumn = nonEmptyOrderByItemLowerCaseTrimmed;

            if (sortOrder != null)
            {
                var column = nonEmptyOrderByItemLowerCaseTrimmed.Value.Substring(1).Trim();

                var columnNonEmptyLowerCaseStringResult = NonEmptyLowerCaseString.TryCreate(column, (NonEmptyString)nameof(column));

                if (columnNonEmptyLowerCaseStringResult.IsFailure)
                {
                    return(GetInvalidOrderExpressionMessage(orderBy).GetFailResult());
                }

                ascending = sortOrder.Value;

                nonEmptyOrderByItemLowerCaseTrimmedColumn = columnNonEmptyLowerCaseStringResult.Value;
            }

            var orderByOrErrorResult = AddColumnOrReturnError(allowedColumnsLowerCase, nonEmptyOrderByItemLowerCaseTrimmedColumn, ascending, result);

            return(orderByOrErrorResult.OnSuccess(Extensions.GetOkMessage));
        }
Beispiel #4
0
        public void ItShouldBePossibleToImplicitlyCastNonEmptyLowerCaseStringToNonEmptyString()
        {
            var            value      = Extensions.GetValue(() => NonEmptyLowerCaseString.TryCreate("1", (NonEmptyString)"Value"));
            NonEmptyString castResult = value;

            castResult.ShouldBeOfType <NonEmptyString>();
        }
Beispiel #5
0
        public void NonEmptyLowerCaseStringCanBeCreatedFromNonEmptyValue()
        {
            var result = NonEmptyLowerCaseString.TryCreate("ABC", (NonEmptyString)"Value");

            result.IsSuccess.ShouldBeTrue();
            result.Value.Value.ShouldBe("abc");
        }
Beispiel #6
0
        public static IResult <OrderByCollection, NonEmptyString> TryParse(string orderBy, ImmutableList <NonEmptyString> allowedColumns)
        {
            var result = new List <OrderBy>();

            var orderByTrimmed = orderBy.Trim();

            if (orderByTrimmed != string.Empty)
            {
                var allowedColumnsLowerCase = allowedColumns.Select(s => (NonEmptyLowerCaseString)s.Value).ToImmutableList();

                var nonEmptyLowerCaseStringResults = orderByTrimmed
                                                     .Split(',')
                                                     .Select(orderByItem => orderByItem.Trim())
                                                     .Select(orderByItemTrimmed => NonEmptyLowerCaseString.TryCreate(orderByItemTrimmed, (NonEmptyString)nameof(orderByItemTrimmed)));

                var orderByResult = GetOrderByResult(orderBy, nonEmptyLowerCaseStringResults, allowedColumnsLowerCase);

                if (orderByResult.IsFailure)
                {
                    return(orderByResult.Error.GetFailResult <OrderByCollection>());
                }

                result.AddRange(orderByResult.Value);
            }

            var collectionResult = OrderByCollection.TryCreate(result.ToImmutableList());

            return(collectionResult.OnSuccess(() => collectionResult.Value.GetOkMessage()));
        }
Beispiel #7
0
 private static bool?GetSortOrder(NonEmptyLowerCaseString nonEmptyOrderByItemLowerCaseTrimmed)
 {
     return
         (nonEmptyOrderByItemLowerCaseTrimmed.Value.StartsWith("+")
         ?
          true
         :
          (nonEmptyOrderByItemLowerCaseTrimmed.Value.StartsWith("-") ? (bool?)false : null));
 }
Beispiel #8
0
        public void NonEmptyLowerCaseStringCannotBeCreatedFromEmptyValue()
        {
            var result = NonEmptyLowerCaseString.TryCreate(string.Empty, (NonEmptyString)"Value");

            result.IsSuccess.ShouldBeFalse();
        }
Beispiel #9
0
 private static IResult <OrderBy, NonEmptyString> GetOrderByOrError(ImmutableList <NonEmptyLowerCaseString> allowedColumnsLowerCase, NonEmptyLowerCaseString nonEmptyLowerCaseStringColumn, bool ascending)
 {
     return(!allowedColumnsLowerCase.Contains(nonEmptyLowerCaseStringColumn) ? GetInvalidOrderExpressionMessage(nonEmptyLowerCaseStringColumn, allowedColumnsLowerCase).GetFailResult <OrderBy>() : OrderBy.Create(nonEmptyLowerCaseStringColumn, ascending).GetOkMessage());
 }
Beispiel #10
0
        private static IResult <NonEmptyString> AddColumnOrReturnError(ImmutableList <NonEmptyLowerCaseString> allowedColumnsLowerCase, NonEmptyLowerCaseString nonEmptyOrderByItemLowerCaseTrimmedColumn, bool ascending, ICollection <OrderBy> result)
        {
            var orderByOrErrorResult = GetOrderByOrError(allowedColumnsLowerCase, nonEmptyOrderByItemLowerCaseTrimmedColumn, ascending);

            return(orderByOrErrorResult.IsFailure ? orderByOrErrorResult.Error.GetFailResult() : Extensions.GetOkMessage().Tee(r => result.Add(orderByOrErrorResult.Value)));
        }
Beispiel #11
0
 public static NonEmptyString GetInvalidOrderExpressionMessage(NonEmptyLowerCaseString column, ImmutableList <NonEmptyLowerCaseString> allowedColumns)
 {
     return((NonEmptyString)("Invalid order expression (it has not allowed colum). Column: " + column + ". Allowed columns: " + string.Join(", ", allowedColumns) + "."));
 }