Ejemplo n.º 1
0
        public async Task ValidateValidFilterLessThanOrEqualODataElement()
        {
            //Arrange
            var resultExpressions = new List <ODataFilterModel>();

            QueryValue = "totalPages le 3";

            RegexUtilizerMock.Setup(regexUtilizer => regexUtilizer.SplitOnAndOrOrOutsideApostrophes(QueryValue))
            .Returns(new string[] { "totalPages le 3" });
            RegexUtilizerMock.Setup(regexUtilizer => regexUtilizer.SplitOnWhiteSpacesOutsideApostrophes(It.IsAny <string>()))
            .Returns(new string[] { "totalPages", "le", "3" });
            RegexUtilizerMock.Setup(regexUtilizer => regexUtilizer.SplitOnApostrophes(It.IsAny <string>()))
            .Returns(new string[] { "totalPages le 3" });
            ODataParserMock.Setup(oDataParser => oDataParser.ParseOData("totalPages le 3"))
            .Returns(new ODataFilterModel {
                Key = "TotalPages", OperatorType = ODataOperatorType.le, Value = "3"
            });

            IODataElementsValidator oDataElementsValidator = new ODataElementsValidator(RegexUtilizerMock.Object, ODataParserMock.Object, QueryValue);

            //Act
            var isValid = oDataElementsValidator.IsValidFilter <BookModel>(out resultExpressions);

            //Assert
            Assert.True(isValid);
        }
Ejemplo n.º 2
0
        public async Task ValidateValidFilterContainsODataElement()
        {
            //Arrange
            var resultExpressions = new List <ODataFilterModel>();

            QueryValue = "contains(title, 'a')";

            RegexUtilizerMock.Setup(regexUtilizer => regexUtilizer.SplitOnAndOrOrOutsideApostrophes(QueryValue))
            .Returns(new string[] { "contains(title, 'a')" });
            RegexUtilizerMock.Setup(regexUtilizer => regexUtilizer.SplitOnWhiteSpacesOutsideApostrophes(It.IsAny <string>()))
            .Returns(new string[] { "contains(title,", "'a'" });
            RegexUtilizerMock.Setup(regexUtilizer => regexUtilizer.SplitOnApostrophes(It.IsAny <string>()))
            .Returns(new string[] { "contains(title,", "a", ")" });
            ODataParserMock.Setup(oDataParser => oDataParser.ParseOData("contains(title, 'a')"))
            .Returns(new ODataFilterModel {
                Key = "Title", OperatorType = ODataOperatorType.contains, Value = "a"
            });

            IODataElementsValidator oDataElementsValidator = new ODataElementsValidator(RegexUtilizerMock.Object, ODataParserMock.Object, QueryValue);

            //Act
            var isValid = oDataElementsValidator.IsValidFilter <BookModel>(out resultExpressions);

            //Assert
            Assert.True(isValid);
        }
Ejemplo n.º 3
0
        public async Task ValidateInvalidOrderByAscendingODataElement()
        {
            //Arrange
            QueryValue = "title ascending";

            RegexUtilizerMock.Setup(regexUtilizer => regexUtilizer.SplitOnWords(QueryValue))
            .Returns(new string[] { "title", "ascending" });

            IODataElementsValidator oDataElementsValidator = new ODataElementsValidator(RegexUtilizerMock.Object, ODataParserMock.Object, QueryValue);

            //Act
            var isValid = oDataElementsValidator.IsValidOrderByElements <BookModel>();

            //Assert
            Assert.False(isValid);
        }
Ejemplo n.º 4
0
        public async Task ValidateInvalidPropertyOrderByODataElement()
        {
            //Arrange
            QueryValue = "propertyThatDoesNotExistInBookModel";

            RegexUtilizerMock.Setup(regexUtilizer => regexUtilizer.SplitOnWords(QueryValue))
            .Returns(new string[] { "propertyThatDoesNotExistInBookModel" });

            IODataElementsValidator oDataElementsValidator = new ODataElementsValidator(RegexUtilizerMock.Object, ODataParserMock.Object, QueryValue);

            //Act
            var isValid = oDataElementsValidator.IsValidOrderByElements <BookModel>();

            //Assert
            Assert.False(isValid);
        }
Ejemplo n.º 5
0
        public ODataElementsValidator Create(string oDataQueryValue)
        {
            if (instances.ContainsKey(oDataQueryValue) &&
                instances.TryGetValue(oDataQueryValue, out ODataElementsValidator value))
            {
                return(new ODataElementsValidator(regexUtilizer, oDataParser, oDataQueryValue));
            }

            var oDataElementsValidator = new ODataElementsValidator(regexUtilizer, oDataParser, oDataQueryValue);

            if (!instances.TryAdd(oDataQueryValue, oDataElementsValidator))
            {
                return(Create(oDataQueryValue));
            }

            return(oDataElementsValidator);
        }