def testIgnoreList(self): request = RequestFactory().get('/?gender=m') search_bar = SearchBar(request, [{ 'label': 'gender', 'choices': ( ('none', '---'), ('m', 'Male'), ('f', 'Female'), ), 'ignore_list': ['none'] }]) search_bar.is_valid() self.assertIn("'gender'", str(search_bar.get_filters())) request = RequestFactory().get('/?gender=none') search_bar = SearchBar(request, [{ 'label': 'gender', 'choices': ( ('none', '---'), ('m', 'Male'), ('f', 'Female'), ), 'ignore_list': ['none'] }]) search_bar.is_valid() self.assertNotIn("'gender'", str(search_bar.get_filters()))
def testOutputString(self): request = RequestFactory().get('/') search_bar = SearchBar(request, ['name', 'age']) self.assertIn('id="id_name"', str(search_bar)) self.assertIn('name="name"', str(search_bar)) self.assertIn('csrfmiddlewaretoken', str(search_bar.as_form())) self.assertIn('<form', str(search_bar.as_form())) self.assertIn('</form>', str(search_bar.as_form()))
def testInitializationFailsWithWrongTypes(self): request = RequestFactory().get('/') self.assertRaises(TypeError, SearchBar) self.assertRaises(AssertionError, SearchBar, 1) self.assertRaises(AssertionError, SearchBar, request, [[]]) self.assertRaises(AssertionError, SearchBar, request, [None]) self.assertRaises(AssertionError, SearchBar, ['name'], request) self.assertIsInstance(SearchBar(fields=['name'], request=request), SearchBar) self.assertIsInstance(SearchBar(request, ['name']), SearchBar) self.assertIsInstance(SearchBar(request, 'name'), SearchBar)
def testIsValidMethodFails(self): request = RequestFactory().get('/') search_bar = SearchBar(request, 'name') self.assertTrue(search_bar.is_valid()) self.assertFalse(search_bar.is_valid('name')) request = RequestFactory().get('/?name=123') search_bar = SearchBar(request, ['name', 'age']) self.assertTrue(search_bar.is_valid()) self.assertFalse(search_bar.is_valid('age')) self.assertFalse(search_bar.is_valid('age', 'name'))
def testAddFields(self): request = RequestFactory().get('/?name=asdasd') search_bar = SearchBar(request, ['name']) search_bar.is_valid() self.assertNotIn('asd1', search_bar) search_bar['asd1'] = 'asd' self.assertIn('asd1', search_bar) search_bar['asd2'] = ({'aaa': 'bbb'},) self.assertIn('asd2', search_bar) search_bar['asd3'] = {'label': 'ASD', 'choices': ({'aaa': 'bbb'},)} self.assertIn('asd3', search_bar)
def testGettingBackTheValue(self): request = RequestFactory().get('/?name=arsham&age=6') search_bar = SearchBar(request, ['name', 'age']) search_bar.is_valid() self.assertEqual(search_bar['name'], 'arsham') self.assertEqual(search_bar['age'], '6') request = RequestFactory().get('/?name=&age=') search_bar = SearchBar(request, ['name', 'age']) search_bar.is_valid() self.assertEqual(search_bar['name'], '') self.assertEqual(search_bar['age'], '')
def testInitializationWithChoices(self): request = RequestFactory().get('/') self.assertIsInstance(SearchBar(request, {'label': 'name'}), SearchBar) self.assertIsInstance(SearchBar(request, { 'label': 'name', 'choices': ({'aaa': 'bbb'},), }), SearchBar) self.assertIsInstance(SearchBar(request, { 'label': 'name', 'choices': (('aaa', 'bbb'),), }), SearchBar) self.assertRaises((AssertionError, ValueError), SearchBar, request, { 'labels': 'name', 'choices': (('aaa', 'bbb'),), }) self.assertRaises((AssertionError, ValueError), SearchBar, request, { 'choices': (('aaa', 'bbb'),), }) self.assertRaises((AssertionError, ValueError), SearchBar, request, { 'label': 'name', 'choices': None, })
def testPopFields(self): request = RequestFactory().get('/?name=asdasd&age=10&other=asdasd') search_bar = SearchBar(request, ['name', 'age', 'other']) search_bar.is_valid() self.assertNotIn('asd', search_bar) search_bar.pop('age') self.assertNotIn('age', search_bar) search_bar.pop('other') self.assertNotIn('other', search_bar) self.assertNotIn('ggg', search_bar)
def homepage(request): search_bar = SearchBar(request, [ 'name', { 'label': 'age', }, { 'label': 'order_by', 'choices': ( ('asc', 'ASC'), ('desc', 'DESC'), ), } ]) return render(request, 'django_searchbar/test.html', { 'search_bar': search_bar, })
def testChoicesReturnValues(self): request = RequestFactory().get('/?name=arsham') search_bar = SearchBar(request, { 'label': 'name', 'choices': ( ('arsham', 'Arsham Shirvani'), {'ivan': 'Ivan'}, ), }) search_bar.is_valid() self.assertEqual(search_bar['name'], 'arsham') self.assertEqual(search_bar.get('name'), 'arsham') request = RequestFactory().get('/?name2=arsham') search_bar = SearchBar(request, { 'label': 'name', 'choices': ( ('arsham', 'Arsham Shirvani'), {'ivan': 'Ivan'}, ), }) search_bar.is_valid() self.assertEqual(search_bar['name'], '')
def testRequiredFields(self): request = RequestFactory().get('/?name2=arsham') search_bar = SearchBar(request, { 'label': 'name', 'choices': ( ('arsham', 'Arsham Shirvani'), ), 'required': False, }) self.assertTrue(search_bar.is_valid()) self.assertFalse(search_bar.form.fields['name'].required) request = RequestFactory().get('/?name2=arsham') search_bar = SearchBar(request, { 'label': 'name', 'choices': ( ('arsham', 'Arsham Shirvani'), ), 'required': True, }) self.assertFalse(search_bar.is_valid()) self.assertTrue(search_bar.form.fields['name'].required)
def testReplacementsCallable(self): request = RequestFactory().get('/?name=arsham&age=6') search_bar = SearchBar(request, ['name'], replacements={'name': lambda x: 'username'}) search_bar.is_valid() self.assertIn("'username'", str(search_bar.get_filters())) self.assertNotIn("'user__'", str(search_bar.get_filters()))
def testEmptyFilters(self): request = RequestFactory().get('/') search_bar = SearchBar(request, ['username', 'email']) search_bar.is_valid() self.assertEqual("(AND: )", str(search_bar.get_filters()))
def testGetFilters(self): request = RequestFactory().get('/?username=arsham&email=this_is_an_email') search_bar = SearchBar(request, ['username', 'email']) search_bar.is_valid() self.assertIsInstance(search_bar.get_filters(), Q) self.assertIn("'username'", str(search_bar.get_filters())) self.assertNotIn("'username__iexact'", str(search_bar.get_filters())) self.assertIn("'email'", str(search_bar.get_filters())) self.assertIn("'username__icontains'", str(search_bar.get_filters(lookup_string='icontains'))) self.assertIn("'email__icontains'", str(search_bar.get_filters(lookup_string='icontains'))) self.assertIn("(AND: ", str(search_bar.get_filters())) self.assertIn("arsham", str(search_bar.get_filters())) self.assertIn("this_is_an_email", str(search_bar.get_filters())) self.assertNotIn('(OR:', str(search_bar.get_filters())) search_bar = SearchBar(request, ['username', 'email']) search_bar.is_valid() self.assertIn("'username'", str(search_bar.get_filters('username'))) self.assertNotIn("'email__exact'", str(search_bar.get_filters('username'))) search_bar = SearchBar(request, ['username', 'email', 'age']) search_bar.is_valid() self.assertIn("'username'", str(search_bar.get_filters('username', 'age'))) self.assertIn("'username__icontains'", str(search_bar.get_filters('username', 'age', lookup_string='icontains'))) self.assertIn("'email'", str(search_bar.get_filters('username', 'email'))) self.assertIn("'username'", str(search_bar.get_filters('username', 'email'))) self.assertNotIn("'age'", str(search_bar.get_filters('username', 'email')))
def testIsValidMethodPost(self): request = RequestFactory().post('/', {'name': 123}) search_bar = SearchBar(request, 'name') self.assertTrue(search_bar.is_valid()) self.assertTrue(search_bar.is_valid('name')) request = RequestFactory().post('/', {'name': 123, 'age': 6, 'error': 'info'}) search_bar = SearchBar(request, ['name', 'age']) self.assertTrue(search_bar.is_valid()) self.assertTrue(search_bar.is_valid('name')) self.assertTrue(search_bar.is_valid('age')) self.assertTrue(search_bar.is_valid('age', 'name')) request = RequestFactory().post('/', {'name': 123}) search_bar = SearchBar(request, ['name', 'age']) self.assertTrue(search_bar.is_valid('name'))
def testIsValidMethodGet(self): request = RequestFactory().get('/?name=123') search_bar = SearchBar(request, 'name') self.assertTrue(search_bar.is_valid()) self.assertTrue(search_bar.is_valid('name')) request = RequestFactory().get('/?name=123&age=6&error=info') search_bar = SearchBar(request, ['name', 'age']) self.assertTrue(search_bar.is_valid()) self.assertTrue(search_bar.is_valid('name')) self.assertTrue(search_bar.is_valid('age')) self.assertTrue(search_bar.is_valid('age', 'name')) request = RequestFactory().get('/?name=123') search_bar = SearchBar(request, ['name', 'age']) self.assertTrue(search_bar.is_valid('name'))