def test_view_goes_to_home_page_and_displays_multiple_search_results(self): handcock = factories.Pirate(name='Boa Hancock', bounty=None, crew=None) marigold = factories.Pirate(name='Boa Marigold', bounty=None, crew=None) response = self.client.get(reverse('bounties:index'), data={'pirate-search-field': 'Boa'})
def test_search_pirate_whose_name_exactly_matches_keyword(self): luffy = factories.Pirate() alvida = factories.Pirate(name='Iron Mace Alvida', bounty=None, crew=None) result = Pirate.objects.get(name=luffy.name) self.assertEqual(result, luffy)
def test_template_has_all_pirate_names_in_suggestions(self): luffy = factories.Pirate() alvida = factories.Pirate(name='Iron Mace Alvida', bounty=None, crew=None) shanks = factories.Pirate(name='Red-Haired Shanks', bounty=None, crew=None) response = self.client.get(reverse('bounties:index')) self.assertContains(response, '<option value="%s">%s</option>' % ( luffy.name, luffy.name, ), html=True) self.assertContains(response, '<option value="%s">%s</option>' % ( alvida.name, alvida.name, ), html=True) self.assertContains(response, '<option value="%s">%s</option>' % ( shanks.name, shanks.name, ), html=True)
def test_returns_pirates_with_matching_names(self): luffy = factories.Pirate() hancock = factories.Pirate(name='Boa Hancock', bounty=None, crew=None) marigold = factories.Pirate(name='Boa Marigold', bounty=None, crew=None) result = Pirate.objects.filter(name__icontains='Boa') self.assertEqual(result.count(), 2)
def test_view_returns_list_template_if_there_are_multiple_search_results( self): handcock = factories.Pirate(name='Boa Hancock', bounty=None, crew=None) marigold = factories.Pirate(name='Boa Marigold', bounty=None, crew=None) response = self.client.get(reverse('bounties:index'), data={'pirate-search-field': 'Boa'}) self.assertTemplateUsed(response, 'list.html')
def test_shows_crew_of_matching_pirates(self): crew = factories.Crew(name='Kuja Pirates') hancock = factories.Pirate(name='Boa Hancock', bounty=None, crew=crew) marigold = factories.Pirate(name='Boa Marigold', bounty=None, crew=crew) response = self.client.get(reverse('bounties:index'), data={'pirate-search-field': 'Boa'}) self.assertContains(response, crew.name.upper())
def test_shows_image_of_matching_pirates(self): hancock = factories.Pirate(name='Boa Hancock', bounty=None, crew=None) marigold = factories.Pirate(name='Boa Marigold', bounty=None, crew=None) response = self.client.get(reverse('bounties:index'), data={'pirate-search-field': 'Boa'}) hancock_url = static('images/pirates/%s' % (hancock.filename(), )) marigold_url = static('images/pirates/%s' % (marigold.filename(), )) self.assertContains(response, hancock_url) self.assertContains(response, marigold_url)
def test_view_redirects_to_profile_of_matching_pirate(self): luffy = factories.Pirate() alvida = factories.Pirate(name='Iron Mace Alvida', bounty=None, crew=None) response = self.client.get(reverse('bounties:index'), data={'pirate-search-field': luffy.name}) self.assertRedirects( response, reverse('bounties:get_pirate', kwargs={ 'pirate_id': luffy.id, }))
def test_view_passes_correct_list_context_to_results_list_template(self): hancock = factories.Pirate(name='Boa Hancock', bounty=None, crew=None) marigold = factories.Pirate(name='Boa Marigold', bounty=None, crew=None) response = self.client.get(reverse('bounties:index'), data={'pirate-search-field': 'Boa'}) list_context = response.context['pirates'] correct_results = Pirate.objects.filter(name__icontains='Boa') self.assertIn(hancock, list_context) self.assertIn(marigold, list_context) self.assertEqual(correct_results.count(), list_context.count())
def test_should_not_include_pirates_not_matching_query(self): luffy = factories.Pirate() handcock = factories.Pirate(name='Boa Hancock', bounty=None, crew=None) marigold = factories.Pirate(name='Boa Marigold', bounty=None, crew=None) response = self.client.get(reverse('bounties:index'), data={'pirate-search-field': 'Boa'}) luffy_url = reverse('bounties:get_pirate', kwargs={ 'pirate_id': luffy.id, }) self.assertNotContains(response, '<a href="%s">' % (luffy_url, ))
def test_shows_wanted_status_of_matching_pirates(self): crew = factories.Crew() luffy = factories.Pirate(name='Test Luffy', wanted_status=Pirate.DEAD_OR_ALIVE) sanji = factories.Pirate(name='Test Sanji', bounty=177000000, crew=crew, wanted_status=Pirate.ONLY_ALIVE) response = self.client.get(reverse('bounties:index'), data={'pirate-search-field': 'Test'}) self.assertContains(response, luffy.get_wanted_status_display().upper()) self.assertContains(response, sanji.get_wanted_status_display().upper())
def test_view_passes_correct_context_to_template(self): luffy = factories.Pirate() alvida = factories.Pirate(name='Iron Mace Alvida', bounty=None, crew=None) shanks = factories.Pirate(name='Red-Haired Shanks', bounty=None, crew=None) response = self.client.get(reverse('bounties:index')) context = response.context['pirates'] self.assertEqual(context.get(id=1), luffy) self.assertEqual(context.get(id=2), alvida) self.assertEqual(context.get(id=3), shanks)
def test_should_return_wanted_status_string(self): crew = factories.Crew() pirate = factories.Pirate(crew=crew, wanted_status=Pirate.ONLY_ALIVE) result = Pirate.objects.first() status_choices_dict = dict(Pirate.STATUS_CHOICES) self.assertEqual(pirate.get_wanted_status_display(), status_choices_dict.get(Pirate.ONLY_ALIVE))
def test_shows_links_to_matching_pirates(self): hancock = factories.Pirate(name='Boa Hancock', bounty=None, crew=None) marigold = factories.Pirate(name='Boa Marigold', bounty=None, crew=None) hancock_url = reverse('bounties:get_pirate', kwargs={ 'pirate_id': hancock.id, }) marigold_url = reverse('bounties:get_pirate', kwargs={ 'pirate_id': marigold.id, }) response = self.client.get(reverse('bounties:index'), data={'pirate-search-field': 'Boa'}) self.assertContains(response, '<a href="%s">' % (hancock_url, )) self.assertContains(response, '<a href="%s">' % (marigold_url, ))
def test_view_goes_to_index_if_no_matching_pirate(self): alvida = factories.Pirate(name='Iron Mace Alvida', bounty=None, crew=None) alvida.save() response = self.client.get( reverse('bounties:index'), data={'pirate-search-field': 'Monkey D. Luffy'}) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'index.html')
def test_save_and_retrieve_wanted_status(self): crew = factories.Crew() pirate = factories.Pirate(crew=crew, wanted_status=Pirate.DEAD_OR_ALIVE) result = Pirate.objects.first() self.assertEqual(pirate.wanted_status, result.wanted_status)
def test_formatted_bounty_returns_None_if_no_bounty(self): pirate = factories.Pirate(bounty=None) self.assertIsNone(pirate.formatted_bounty())
def test_returns_formatted_bounty_with_comma(self): pirate = factories.Pirate(bounty=500000000) formatted_bounty = '500,000,000' self.assertEqual(pirate.formatted_bounty(), formatted_bounty)
def test_should_return_slugified_name_as_filename(self): pirate = factories.Pirate() correct_filename = slugify(pirate.name) self.assertEqual(pirate.filename(), correct_filename)
def test_should_not_return_pirate_not_matching_query(self): luffy = factories.Pirate() hancock = factories.Pirate(name='Boa Hancock', bounty=None, crew=None) result = Pirate.objects.filter(name__icontains='Boa') self.assertEqual(result.count(), 1)
def test_str_should_return_name(self): pirate = factories.Pirate(name='Sogeking') self.assertEqual(pirate.__str__(), pirate.name)
def test_save_and_retrieve_pirate_with_crew(self): crew = factories.Crew() pirate = factories.Pirate(crew=crew) result = Pirate.objects.first() self.assertEqual(result.crew, crew)
def test_save_and_retrieve_pirate_bounty_without_crew(self): pirate_with_bounty = factories.Pirate(crew=None) result = Pirate.objects.first() self.assertEqual(result.bounty, pirate_with_bounty.bounty)
def setUp(self): self.browser = webdriver.Firefox() self.browser.implicitly_wait(3) strawhat = factories.Crew() alvida_crew = factories.Crew(name='Alvida Pirates') kuja = factories.Crew(name='Kuja Pirates') self.luffy = factories.Pirate(crew=strawhat) self.alvida = factories.Pirate(name='Iron Mace Alvida', crew=alvida_crew) factories.Pirate(name='God Usopp', bounty=200000000, crew=strawhat) factories.Pirate(name='Chopper', bounty=100, crew=strawhat) factories.Pirate(name='Roronoa Zoro', bounty=320000000, crew=strawhat) factories.Pirate(name='Sanji', bounty=177000000, crew=strawhat, wanted_status=Pirate.ONLY_ALIVE) factories.Pirate(name='Nico Robin', bounty=130000000, crew=strawhat) factories.Pirate(name='Franky', bounty=94000000, crew=strawhat) factories.Pirate(name='Nami', bounty=66000000, crew=strawhat) factories.Pirate(name='Soul King', bounty=83000000, crew=strawhat) self.hancock = factories.Pirate(name='Boa Hancock', bounty=None, crew=kuja, wanted_status=None) self.sandersonia = factories.Pirate(name='Boa Sandersonia', bounty=None, crew=kuja, wanted_status=None) self.marigold = factories.Pirate(name='Boa Marigold', bounty=None, crew=kuja, wanted_status=None)
def test_save_and_retrieve_pirate_without_bounty(self): pirate_no_bounty = factories.Pirate(bounty=None) result = Pirate.objects.first() self.assertEqual(result, pirate_no_bounty)