예제 #1
0
 def should_separate_type_and_subtypes(self):
     options = dict(type='land,dryad')
     request = SearchRequest(options)
     subt = SearchFilter('subtype', keywords=[SearchKeyword('dryad', 'and')])
     type_ = SearchFilter('type', keywords=[SearchKeyword('land', 'and')])
     self.assertEqual(request.get_filters(), {'type':type_,
                                              'subtype': subt})
예제 #2
0
 def should_separate_many_types_with_not_modifier(self):
     options = dict(type='legendary,artifact,!equipment,!creature')
     request = SearchRequest(options)
     type_keywords = [SearchKeyword('legendary', 'and'),
                      SearchKeyword('artifact', 'and'),
                      SearchKeyword('creature', 'not')]
     subtype_keywords = [SearchKeyword('equipment', 'not')]
     subt = SearchFilter('subtype', keywords=subtype_keywords)
     type_ = SearchFilter('type', keywords=type_keywords)
     self.assertEqual(request.get_filters(), {'type': type_,
                                              'subtype': subt})
예제 #3
0
 def should_group_text_in_brackets(self):
     word = SearchKeyword('trample', 'and')
     fl = SearchFilter('text', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'text=+[trample]')
예제 #4
0
 def should_assume_exact_quote_if_spaces(self):
     word = SearchKeyword('first strike', 'and')
     fl = SearchFilter('text', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'text=+["first strike"]')
예제 #5
0
 def should_not_quote_rarities(self):
     word = SearchKeyword('M', 'and')
     fl = SearchFilter('rarity', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'rarity=+[M]')
예제 #6
0
 def should_group_url_keywords_if_excluding_others(self):
     word = SearchKeyword('w', 'and')
     fl = SearchFilter('color', keywords=[word])
     fl.exclude_others = True
     self.assertEqual(fl.url_fragment(), 'color=+@(+[w])')
예제 #7
0
 def should_render_equality_comparison(self):
     word = SearchKeyword(5, 'and', '=')
     fl = SearchFilter('power', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'power=+=[5]')
예제 #8
0
 def should_render_greater_than_comparison(self):
     word = SearchKeyword(5, 'and', '>')
     fl = SearchFilter('power', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'power=+>[5]')
예제 #9
0
 def should_group_url_keywords_if_excluding_others(self):
     word = SearchKeyword('w', 'and')
     fl = SearchFilter('color', keywords=[word])
     fl.exclude_others = True
     self.assertEqual(fl.url_fragment(), 'color=+@(+[w])')
예제 #10
0
 def should_separate_and_words(self):
     sengir = SearchKeyword('sengir', 'and')
     vampire = SearchKeyword('vampire', 'and')
     fl = SearchFilter('name', keywords=[sengir, vampire])
     self.assertEqual(fl.url_fragment(), 'name=+[sengir]+[vampire]')
예제 #11
0
 def should_render_equality_comparison(self):
     word = SearchKeyword(5, 'and', '=')
     fl = SearchFilter('power', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'power=+=[5]')
예제 #12
0
 def should_render_less_than_or_equal_to_comparison(self):
     word = SearchKeyword(5, 'and', '<=')
     fl = SearchFilter('power', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'power=+<=[5]')
예제 #13
0
 def should_render_greater_than_comparison(self):
     word = SearchKeyword(5, 'and', '>')
     fl = SearchFilter('power', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'power=+>[5]')
예제 #14
0
 def should_parse_logical_or(self):
     first = SearchKeyword('first', 'or')
     strike = SearchKeyword('strike', 'or')
     fl = SearchFilter('text', keywords=[first, strike])
     self.assertEqual(fl.url_fragment(), 'text=|[first]|[strike]')
예제 #15
0
 def should_assume_exact_quote_if_spaces(self):
     word = SearchKeyword('first strike', 'and')
     fl = SearchFilter('text', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'text=+["first strike"]')
예제 #16
0
 def should_parse_logical_or(self):
     first = SearchKeyword('first', 'or')
     strike = SearchKeyword('strike', 'or')
     fl = SearchFilter('text', keywords=[first, strike])
     self.assertEqual(fl.url_fragment(), 'text=|[first]|[strike]')
예제 #17
0
 def should_group_url_keywords_if_excluding_other_types(self):
     word = SearchKeyword('goblin', 'and')
     fl = SearchFilter('type', keywords=[word])
     fl.exclude_others = True
     self.assertEqual(fl.url_fragment(), 'type=+@(+[goblin])')
예제 #18
0
 def should_render_less_than_or_equal_to_comparison(self):
     word = SearchKeyword(5, 'and', '<=')
     fl = SearchFilter('power', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'power=+<=[5]')
예제 #19
0
 def should_not_quote_rarities(self):
     word = SearchKeyword('M', 'and')
     fl = SearchFilter('rarity', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'rarity=+[M]')
예제 #20
0
 def should_separate_and_words(self):
     sengir = SearchKeyword('sengir', 'and')
     vampire = SearchKeyword('vampire', 'and')
     fl = SearchFilter('name', keywords=[sengir, vampire])
     self.assertEqual(fl.url_fragment(), 'name=+[sengir]+[vampire]')
예제 #21
0
 def should_render_not_operator(self):
     word = SearchKeyword('graveyard', 'not')
     fl = SearchFilter('text', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'text=+![graveyard]')
예제 #22
0
 def should_group_url_keywords_if_excluding_other_types(self):
     word = SearchKeyword('goblin', 'and')
     fl = SearchFilter('type', keywords=[word])
     fl.exclude_others = True
     self.assertEqual(fl.url_fragment(), 'type=+@(+[goblin])')
예제 #23
0
 def should_recognize_creature_type_as_subtype(self):
     options = dict(type='dryad')
     request = SearchRequest(options)
     fl = SearchFilter('subtype', keywords=[SearchKeyword('dryad', 'and')])
     self.assertEqual(request.get_filters(), {'subtype': fl})
예제 #24
0
 def should_render_not_operator(self):
     word = SearchKeyword('graveyard', 'not')
     fl = SearchFilter('text', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'text=+![graveyard]')
예제 #25
0
 def should_group_text_in_brackets(self):
     word = SearchKeyword('trample', 'and')
     fl = SearchFilter('text', keywords=[word])
     self.assertEqual(fl.url_fragment(), 'text=+[trample]')