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); }
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); }
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); }
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); }
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); }