public void FormatShouldBeFieldColonQuoteConditionQuote() { var stringBooleanCondition = new StringBooleanCondition(_field, _condition); var output = stringBooleanCondition.GetConditionParam(); output.ShouldEndWith(string.Format("{0}{1}'{2}'", _field, Uri.EscapeDataString(":"), _condition)); }
public void ShouldUrlEscapeAColonAfterTheField() { var stringBooleanCondition = new StringBooleanCondition(_field, _condition); var output = stringBooleanCondition.GetConditionParam(); output.ShouldStartWith(string.Format("{0}{1}", _field, Uri.EscapeDataString(":"))); }
public void ShouldEncloseTheConditionInQuotes() { var stringBooleanCondition = new StringBooleanCondition(_field, _condition); var output = stringBooleanCondition.GetConditionParam(); output.ShouldEndWith(string.Format("'{0}'", _condition)); }
public void NullFieldShouldNotIncludeColon() { var stringBooleanCondition = new StringBooleanCondition(null, Condition); var output = stringBooleanCondition.GetConditionParam(); output.ShouldEqual(string.Format("'{0}'", Condition)); }
public void ShouldStartWithTheFieldName() { var stringBooleanCondition = new StringBooleanCondition(_field, _condition); var output = stringBooleanCondition.GetConditionParam(); output.ShouldStartWith(_field); }
public void ShouldUrlEscapeTheValue() { var stringBooleanCondition = new StringBooleanCondition(Field, " & "); var output = stringBooleanCondition.GetConditionParam(); output.ShouldEndWith(string.Format("'%20%26%20'")); }
public void NegatedFormatShouldBeWrappedWithNot() { var stringBooleanCondition = new StringBooleanCondition(Field, Condition, true); var output = stringBooleanCondition.GetConditionParam(); output.ShouldEndWith(string.Format("(not+{0}{1}'{2}')", Field, Uri.EscapeDataString(":"), Condition)); }
public void ComplexOrWithList() { var genres = new List <string> { "Sci-Fi", "Fantasy" }; var condition1A = new StringListBooleanCondition("genre", genres, ConditionType.OR); var years = new List <int> { 1987, 1990, 2010 }; var condition1B = new IntListBooleanCondition("year", years, ConditionType.OR); var groupCondition1 = new GroupedCondition(condition1A, ConditionType.AND, condition1B); var condition2 = new StringBooleanCondition("director", "doduck"); var groupConditionAll = new GroupedCondition(groupCondition1, ConditionType.AND, condition2); var bQuery = new BooleanQuery(); bQuery.Conditions.Add(groupConditionAll); _searchQuery = new SearchQuery <Movie> { BooleanQuery = bQuery }; string query = _queryBuilder.BuildSearchQuery(_searchQuery); //query.ShouldNotContain("(and+(and+(and+genre%3A'Sci-Fi'+genre%3A'Fantasy'+year%3A1987+year%3A1990+year%3A2010)+director%3A'doduck'))"); query.ShouldContain("(and+(and+(or+genre%3A'Sci-Fi'+genre%3A'Fantasy')+(or+year%3A1987+year%3A1990+year%3A2010)+director%3A'doduck'))"); }
public void ComplexOr() { var condition1A = new StringBooleanCondition("genre", "Sci-Fi"); var condition1B = new IntBooleanCondition("year"); condition1B.SetFrom(1990); var groupCondition1 = new GroupedCondition(condition1A, ConditionType.AND, condition1B); var condition2A = new StringBooleanCondition("genre", "Fantasy"); var condition2B = new IntBooleanCondition("year"); condition2B.SetFrom(2013); var groupCondition2 = new GroupedCondition(condition2A, ConditionType.AND, condition2B); var groupConditionAll = new GroupedCondition(groupCondition1, ConditionType.OR, groupCondition2); var bQuery = new BooleanQuery(); bQuery.Conditions.Add(groupConditionAll); _searchQuery = new SearchQuery <Movie> { BooleanQuery = bQuery }; string query = _queryBuilder.BuildSearchQuery(_searchQuery); query.ShouldContain("(or+(or+(and+genre%3A'Sci-Fi'+year%3A1990..)+(and+genre%3A'Fantasy'+year%3A2013..)))"); }
public void ShouldNotAddToOrConditionIfTheConditionIsAnAndCondition() { var stringBooleanCondition = new StringBooleanCondition("field", "4"); _booleanQuery.Conditions.Add(stringBooleanCondition); _queryBuilder.SplitConditions(_booleanQuery, _listOrConditions, _andConditions); _listOrConditions.Count.ShouldEqual(0); }
public void ShouldAddToAndConditionIfTheConditionIsAnAndCondition() { var stringBooleanCondition = new StringBooleanCondition("field", "4"); _booleanQuery.Conditions.Add(stringBooleanCondition); _queryBuilder.SplitConditions(_booleanQuery, _listOrConditions, _andConditions); _andConditions.Length.ShouldBeGreaterThan(0); _andConditions.ToString().ShouldEqual(string.Format("{0}+", stringBooleanCondition.GetConditionParam())); }
public void ShouldAddTheBooleanConditionToTheQuery() { var searchQuery = new SearchQuery <Movie>(); var stringBooleanCondition = new StringBooleanCondition("fooTenant", "fooParameterName"); _cloudSearch.AddPresistantCondition(stringBooleanCondition); var result = _cloudSearch.AddPresistantConditionsToQuery(searchQuery); var output = result.BooleanQuery.Conditions; output.Count.ShouldEqual(1); output[0].GetConditionParam().ShouldEqual(stringBooleanCondition.GetConditionParam()); }
public void TestSearch() { var cloudSearch = new CloudSearch <Movie>("YOU_AMAZON_CLOUD_SEARCH_KEY", "2011-02-01"); //build facet var genreFacetContraint = new StringFacetConstraints(); genreFacetContraint.AddContraint("Sci-Fi"); genreFacetContraint.AddContraint("Adventure"); var genreFacet = new Facet { Name = "genre", TopResult = 2 }; var yearFacetContraint = new IntFacetContraints(); yearFacetContraint.AddFrom(1950); yearFacetContraint.AddInterval(1980, 2012); var yearFacet = new Facet { Name = "year", FacetContraint = yearFacetContraint }; var liFacet = new List <Facet> { genreFacet, yearFacet }; //build boolean query var bQuery = new BooleanQuery(); var gCondition = new StringBooleanCondition("genre", "Sci-Fi"); var yCondition = new IntBooleanCondition("year"); yCondition.SetInterval(1970, 2013); bQuery.Conditions.Add(gCondition); bQuery.Conditions.Add(yCondition); //build search var searchQuery = new SearchQuery <Movie> { Keyword = "star wars", Facets = liFacet, Size = 20, Start = 0, BooleanQuery = bQuery }; //search var found = cloudSearch.Search(searchQuery); Assert.IsTrue(!found.IsError); Assert.IsTrue(found.hits.found > 0); Assert.IsTrue(found.facetsResults.Count > 0); Assert.AreEqual(found.facetsResults.Count, 2, "We request only the top 2 facet"); }
public void OrCondition() { var conditionA = new StringBooleanCondition("genre", "Sci-Fi"); var conditionB = new IntBooleanCondition("year"); conditionB.SetFrom(2013); var groupCondition = new GroupedCondition(conditionA, ConditionType.OR, conditionB); var bQuery = new BooleanQuery(); bQuery.Conditions.Add(groupCondition); _searchQuery = new SearchQuery <Movie> { BooleanQuery = bQuery }; string query = _queryBuilder.BuildSearchQuery(_searchQuery); query.ShouldContain("(or+(or+genre%3A'Sci-Fi'+year%3A2013..))"); }