def setUpTestData(cls): cls.service = services.TermGathering cls.fake_term_1 = factories.TermFactory(value='l') cls.fake_term_2 = factories.TermFactory(value='o') cls.fake_term_3 = factories.TermFactory(value='e') cls.fake_term_4 = factories.TermFactory(value='d', active=False) cls.objects = [cls.fake_term_1, cls.fake_term_2, cls.fake_term_3]
def setUpTestData(cls): cls.client = test.Client() cls.foo_term = factories.TermFactory(value='foo term') cls.bar_term = factories.TermFactory(value='bar term') cls.definition_foo = factories.DefinitionFactory( uuid='b3ec0487-d422-4d0e-86c0-0b80402fb012', term=cls.foo_term, value='foo', ) cls.definition_bar = factories.DefinitionFactory( uuid='8ce7d087-b231-4562-b43f-dd27c7af7eba', term=cls.bar_term, value='bar', ) cls.url = reverse('term-search')
def test_add_new__existing_and_disabled_term(self): factories.TermFactory(active=False, value='disabled fake term') self.assertEqual(models.Term.objects.count(), 0) self.assertEqual(models.Term.all_objects.count(), 1) self.assertEqual(models.Definition.objects.count(), 0) term = models.Term.all_objects.first() self.assertFalse(term.active) form_data = {'term': 'disabled fake term', 'value': 'fake definition'} form_data.update(self.management_data) response = self.client.post(self.url, form_data, follow=True) self.assertEqual(response.status_code, 200) self.assertEqual(models.Term.objects.count(), 1) self.assertEqual(models.Term.all_objects.count(), 1) self.assertEqual(models.Definition.objects.count(), 1) term = models.Term.all_objects.first() self.assertTrue(term.active)
def test_has_term(self): term = factories.TermFactory(value='fake term') response = self.client.get(reverse('sitemap')) self.assertEqual(response.status_code, 200) self.assertContains(response, term.get_absolute_url())
def test_has_link_to_last_term(self): term = factories.TermFactory(value="fake_term") response = self.client.get(self.url) self.assertContains( response, '<li><a class="last-terms" href="{}">fake_term</a></li>'.format( term.get_absolute_url()), html=True)
def test_do_have_link_current_page_with_no_searches(self): factories.TermFactory() response = self.client.get(self.url) html_text = ('<a class="page-link" href="#">' '1' '<span class="sr-only">(current)</span>' '</a>') self.assertContains(response, html_text, html=True)
def test_has_link_to_term_detail(self): term = factories.TermFactory(value='my fake term') factories.DefinitionFactory(term=term, value='fake definition') response = self.client.get(self.url) self.assertContains( response, f'<a href="{term.get_absolute_url()}">my fake term</a>', html=True)
def test_dont_have_link_current_page_with_no_items(self): factories.TermFactory() url = '{}?{}'.format(self.url, http.urlencode({'v': 'zñ'})) response = self.client.get(url) html_text = ('<a class="page-link" href="#">' '1' '<span class="sr-only">(current)</span>' '</a>') self.assertNotContains(response, html_text, html=True)
def setUp(self): self.client = test.Client() self.user = auth_factories.UserFactory() self.term = factories.TermFactory(value='fake term') self.definition = factories.DefinitionFactory( uuid='6b4a7a9f-3b8f-494b-8565-f960065802ba', term=self.term, value='fake definition', user=self.user, ) self.url = self.definition.get_absolute_url()
def setUpTestData(cls): cls.client = test.Client() cls.user = auth_factories.UserFactory() cls.term = factories.TermFactory(value='fake term') cls.definition = factories.DefinitionFactory( uuid='6b4a7a9f-3b8f-494b-8565-f960065802ba', term=cls.term, value='fake definition', user=cls.user, ) cls.url = cls.definition.get_absolute_url()
def test_has_link_current_page(self): term = factories.TermFactory() searched_value = term.value[:2] url = '{}?{}'.format(self.url, http.urlencode({'v': searched_value})) response = self.client.get(url) html_text = ('<a class="page-link" href="#">' '1' '<span class="sr-only">(current)</span>' '</a>') self.assertContains(response, html_text, html=True)
def test_term_search_form_is_working(self): foo_term = factories.TermFactory(value='foo term') bar_term = factories.TermFactory(value='bar term') factories.DefinitionFactory(term=foo_term, value='foo') factories.DefinitionFactory(term=bar_term, value='bar') foo_term_html = '<a href="{}">foo term</a>'.format( foo_term.get_absolute_url()) bar_term_html = '<a href="{}">bar term</a>'.format( bar_term.get_absolute_url()) with splinter.Browser('django') as browser: browser.visit(self.url) self.assertIn(foo_term_html, browser.html) self.assertIn(bar_term_html, browser.html) browser.fill('v', 'f') browser.find_by_id('form-button').click() self.assertEqual(browser.url, reverse('term-search')) self.assertIn(foo_term_html, browser.html) self.assertNotIn(bar_term_html, browser.html)
def test_inactive_terms_does_not_appear(self): term = factories.TermFactory(value='fake term') response = self.client.get(self.url) self.assertContains(response, 'fake term') term.active = False term.save() response = self.client.get(self.url) self.assertNotContains(response, 'fake term')
def setUpTestData(cls): cls.client = test.Client() cls.term = factories.TermFactory(value='fake term') cls.definition_foo = factories.DefinitionFactory( uuid='cb8d30f8-b60a-46e8-9cad-f3d5ff28d269', term=cls.term, value='foo', ) cls.definition_bar = factories.DefinitionFactory( uuid='75484634-4f96-4bc9-8d94-bfe8523ba7cd', term=cls.term, value='bar', ) cls.url = reverse('term-detail', kwargs={'slug': cls.term.slug})
def test_has_link_to_next_page(self): num_items_per_page = views.TermSearchView.paginate_by for n, item in enumerate(range(num_items_per_page + 1)): term = factories.TermFactory(value='a' * (n + 1)) factories.DefinitionFactory(term=term) url = '{}?{}'.format(self.url, http.urlencode({'v': 'a'})) response = self.client.get(url) self.assertContains(response, '<a class="page-link" href="?page=2">2</a>', html=True) self.assertContains( response, '<a class="page-link" href="?page=2">Siguiente →</a>', html=True)
def test_has_link_to_first_page(self): num_items_per_page = views.IndexView.paginate_by for n, item in enumerate(range(num_items_per_page + 1)): term = factories.TermFactory(value='a' * (n + 1)) factories.DefinitionFactory(term=term) url = '{}?{}'.format(self.url, http.urlencode({'v': 'a', 'page': 2})) response = self.client.get(url) response = self.client.get(url) self.assertContains(response, '<a class="page-link" href="?page=1">1</a>', html=True) self.assertContains( response, '<a class="page-link" href="?page=1">← Anterior</a>', html=True)
def test_recaptcha_failed__already_existing_term(self, recaptcha_clean_mock): def _validation_error_side_effect(values): raise exceptions.ValidationError( 'Connection to reCaptcha server failed', code='connection_failed') recaptcha_clean_mock.side_effect = _validation_error_side_effect self.term = factories.TermFactory(value='fake term') self.definition = factories.DefinitionFactory( uuid='6b4a7a9f-3b8f-494b-8565-f960065802ba', term=self.term, value='fake definition 1', user=self.user, ) self.assertEqual(models.Term.objects.count(), 1) self.assertEqual(models.Definition.objects.count(), 1) form_data = {'term': 'fake term', 'value': 'fake definition 2'} form_data.update(self.management_data) response = self.client.post(self.url, form_data, follow=True) self.assertEqual(response.status_code, 200) recaptcha_clean_mock.assert_called_once() self.assertEqual(models.Term.objects.count(), 1) self.assertEqual(models.Term.all_objects.count(), 1) self.assertEqual(models.Definition.objects.count(), 1) self.assertEqual( models.Term.all_objects.first().value, 'fake term', ) self.assertEqual( models.Definition.all_objects.first().value, 'fake definition 1', )
def setUp(self): self.service = services.TermGathering self.fake_term_1 = factories.TermFactory(value='l') self.fake_term_2 = factories.TermFactory(value='o') self.fake_term_3 = factories.TermFactory(value='e') self.objects = [self.fake_term_1, self.fake_term_2, self.fake_term_3]
def test_has_header_in_last_terms(self): factories.TermFactory() response = self.client.get(self.url) self.assertContains(response, 'Últimas definiciones')
def setUp(self): self.term = factories.TermFactory(value='my fake term')