def test_entity_index(self): author = testing.create_user() jack_white = Entity.create_for_testing() seven_nations_army = Song.create_for_testing(author) self.add_contribution(seven_nations_army, jack_white, True) jolene = Song.create_for_testing(author) self.add_contribution(jolene, jack_white, True) # Approve only Jolene. seven_nations_army.reviewed = False seven_nations_army.save() jolene.reviewed = True jolene.save() # General public should see only Jolene. response = testing.get_public_client().get( jack_white.get_absolute_url()) self.assertEqual(200, response.status_code) self.assertEqual(1, len(response.context['songs'])) # The author should see both. response = testing.get_user_client(author).get( jack_white.get_absolute_url()) self.assertEqual(200, response.status_code) self.assertEqual(2, len(response.context['songs'])) # Any logged-in user should see both, too. response = testing.get_user_client().get(jack_white.get_absolute_url()) self.assertEqual(200, response.status_code) self.assertEqual(2, len(response.context['songs']))
def test_event_visibility(self): response = testing.get_public_client().get(reverse('event_index')) self.assertEqual(200, response.status_code) author = testing.create_user() venue = Venue.create_for_testing() event_a = Event.create_for_testing(author, venue) event_a.reviewed = True event_a.save() event_b = Event.create_for_testing(author, venue) event_b.reviewed = False event_b.save() # The general public should see only the reviewed event. response = testing.get_public_client().get(reverse('event_index')) self.assertEqual(200, response.status_code) self.assertEqual(1, len(response.context['events'])) # The author should see both. response = testing.get_user_client(author).get(reverse('event_index')) self.assertEqual(200, response.status_code) self.assertEqual(2, len(response.context['events'])) # Another regular user should also see both. response = testing.get_user_client().get(reverse('event_index')) self.assertEqual(200, response.status_code) self.assertEqual(2, len(response.context['events']))
def test_site_urls(self): login_url = reverse('hello') + '?next=' + reverse('inspect_locale') response = testing.get_public_client().get(reverse('inspect_locale')) self.assertEqual(302, response.status_code) self.assertRedirects(response, login_url) response = testing.get_user_client().get(reverse('inspect_locale')) self.assertEqual(403, response.status_code) user = testing.create_user(perms=['piosenka.inspect']) response = testing.get_user_client(user).get(reverse('inspect_locale')) self.assertEqual(200, response.status_code)
def test_to_review(self): login_url = reverse('hello') + '?next=' + reverse('to_review') response = testing.get_public_client().get(reverse('to_review')) self.assertEqual(302, response.status_code) self.assertRedirects(response, login_url) response = testing.get_user_client().get(reverse('to_review')) self.assertEqual(403, response.status_code) user = testing.create_user(perms=['content.review']) response = testing.get_user_client(user).get(reverse('to_review')) self.assertEqual(200, response.status_code)
def test_view_new_item(self): author = testing.create_user() item = self.item_cls.create_for_testing(author) item.save() # Verify that the general public can't access the item. self.assertFalse(item.is_live()) response = testing.get_public_client().get(item.get_absolute_url()) self.assertNotServedOk(item, response) # Verify that the author can. response = testing.get_user_client(author).get(item.get_absolute_url()) self.assertServedOk(item, response) # Verify that another signed-in user can, too. response = testing.get_user_client().get(item.get_absolute_url()) self.assertServedOk(item, response)
def test_add_item(self): if self.item_cls.is_card: return # Verify that the general public can't access the add view. response = testing.get_public_client().get(self.item_cls.get_add_url()) self.assertEqual(302, response.status_code) # Verify that unauthorized user can't access it either. response = testing.get_user_client().get(self.item_cls.get_add_url()) self.assertEqual(404, response.status_code) # Authorized user should be able to access it just fine. authorized_user = testing.create_user( perms=[self.item_cls.permstring()]) response = testing.get_user_client(authorized_user).get( self.item_cls.get_add_url()) self.assertEqual(200, response.status_code)
def test_edit_item(self): author = testing.create_user() item = self.item_cls.create_for_testing(author) response = testing.get_public_client().get(item.get_edit_url()) self.assertEqual(302, response.status_code) response = testing.get_user_client(author).get(item.get_edit_url()) self.assertEqual(200, response.status_code)
def test_edit_song_note(self): author = testing.create_user() note = SongNote.create_for_testing(author) data = {'title': 'tytul', 'text_trevor': put_text_in_trevor('CDE')} response = testing.get_user_client(user=author).post( note.get_edit_url(), data=data) self.assertEqual(302, response.status_code) self.assertRedirects(response, note.song.get_absolute_url())
def test_add_item(self): # Verify that the general public can't access the add view. response = testing.get_public_client().get(self.get_add_url()) self.assertEqual(302, response.status_code) # Authenticated user should be able to access it just fine. authorized_user = testing.create_user() response = testing.get_user_client(authorized_user).get(self.get_add_url()) self.assertEqual(200, response.status_code)
def test_user_menu(self): response = testing.get_user_client().get(reverse('index')) self.assertEqual(200, response.status_code) self.assertNotContains(response, reverse('hello'), html=False) self.assertContains(response, reverse('goodbye'), html=False) self.assertContains(response, reverse('add_article'), html=False) self.assertContains(response, reverse('add_event'), html=False) self.assertContains(response, reverse('add_post'), html=False) self.assertContains(response, reverse('add_song'), html=False)
def test_approve_item(self): """Tests the approve view.""" # Add a new item. author = testing.create_user() item = self.item_cls.create_for_testing(author) self.assertFalse(item.is_live()) # Verify that the general public can't access the item. response = testing.get_public_client().get(item.get_absolute_url()) self.assertNotServedOk(item, response) # Try to approve the item - the author can't do that. response = testing.get_user_client(author).get( item.get_approve_url()) self.assertEqual(404, response.status_code) item.refresh_from_db() self.assertFalse(item.is_live()) # Try to approve the item - another regular user cannot. response = testing.get_user_client().get(item.get_approve_url()) self.assertEqual(404, response.status_code) item.refresh_from_db() self.assertFalse(item.is_live()) # Try to approve the item - reviewer can and does. reviewer = testing.create_user(perms=['content.review']) response = testing.get_user_client(reviewer).get(item.get_approve_url()) self.assertEqual(302, response.status_code) item.refresh_from_db() self.assertTrue(item.is_live()) # General public should now be able to access the item. response = testing.get_public_client().get(item.get_absolute_url()) self.assertServedOk(item, response) # The reviewer should still be able to access the item. Ideally we'd # verify that the 'approve' link is no longer displayed here anymore. response = testing.get_user_client(reviewer).get( item.get_absolute_url()) self.assertServedOk(item, response)
def test_article_index(self): response = testing.get_public_client().get(reverse('articles')) self.assertEqual(200, response.status_code) author = testing.create_user() article_a = Article.create_for_testing(author) article_a.reviewed = True article_a.save() article_b = Article.create_for_testing(author) article_b.reviewed = False article_b.save() response = testing.get_public_client().get(reverse('articles')) self.assertEqual(200, response.status_code) self.assertEqual(1, len(response.context['articles'])) response = testing.get_user_client(author).get(reverse('articles')) self.assertEqual(200, response.status_code) self.assertEqual(2, len(response.context['articles'])) response = testing.get_user_client().get(reverse('articles')) self.assertEqual(200, response.status_code) self.assertEqual(2, len(response.context['articles']))
def test_blog_index(self): response = testing.get_public_client().get(reverse("post_index")) self.assertEqual(200, response.status_code) author = testing.create_user() post_a = Post.create_for_testing(author) post_a.reviewed = True post_a.save() post_b = Post.create_for_testing(author) post_b.reviewed = False post_b.save() response = testing.get_public_client().get(reverse("post_index")) self.assertEqual(200, response.status_code) self.assertEqual(1, len(response.context["all_posts"])) response = testing.get_user_client(author).get(reverse("post_index")) self.assertEqual(200, response.status_code) self.assertEqual(2, len(response.context["all_posts"])) response = testing.get_user_client().get(reverse("post_index")) self.assertEqual(200, response.status_code) self.assertEqual(2, len(response.context["all_posts"]))
def test_review_item(self): """Tests the review helper view.""" # Add a new item. author = testing.create_user() item = self.item_cls.create_for_testing(author) self.assertFalse(item.is_live()) # Verify that anonymous user is redirected to login. response = testing.get_public_client().get(item.get_review_url()) self.assertEqual(302, response.status_code) self.assertTrue(reverse('hello') in response.url) # The author should be redirected to the actual item with some # informative message. response = testing.get_client(author).get( item.get_review_url(), follow=True) self.assertRedirects(response, item.get_absolute_url()) self.assertTrue('messages' in response.context) self.assertEqual(1, len(response.context['messages'])) # Another regular user should be redirected too. response = testing.get_user_client().get( item.get_review_url(), follow=True) self.assertRedirects(response, item.get_absolute_url()) self.assertTrue('messages' in response.context) self.assertEqual(1, len(response.context['messages'])) # And the valid approver too. reviewer = testing.create_user(perms=['content.review']) response = testing.get_client(reviewer).get( item.get_review_url(), follow=True) self.assertRedirects(response, item.get_absolute_url()) self.assertTrue('messages' in response.context) self.assertEqual(1, len(response.context['messages'])) # After the item is live too. item.reviewed = True item.save() response = testing.get_client(reviewer).get( item.get_review_url(), follow=True) self.assertRedirects(response, item.get_absolute_url()) self.assertTrue('messages' in response.context) self.assertEqual(1, len(response.context['messages']))
def test_add_song_empty_form(self): user = testing.create_user() data = { 'entitycontribution_set-TOTAL_FORMS': 1, 'entitycontribution_set-INITIAL_FORMS': 0, 'entitycontribution_set-MIN_NUM_FORMS': 1, 'entitycontribution_set-MAX_NUM_FORMS': 1000, } response = testing.get_user_client(user=user).post( reverse('add_song'), data=data) self.assertEqual(200, response.status_code) self.assertFormError(response, 'form', 'title', 'To pole jest wymagane.') self.assertFormError(response, 'form', 'capo_fret', 'To pole jest wymagane.') self.assertFormError(response, 'form', 'lyrics', 'To pole jest wymagane.') self.assertFormsetError(response, 'entitycontribution', 0, 'artist', 'To pole jest wymagane.') self.assertFormsetError(response, 'entitycontribution', 0, None, 'Zaznacz co najmniej jedną rolę artysty.')
def test_add_song_note(self): user = testing.create_user() artist = Artist.create_for_testing(user) artist.reviewed = True artist.full_clean() artist.save() song = Song.create_for_testing(user) song.reviewed = True song.full_clean() song.save() data = { 'title': 'dalsze losy kotka', 'text_trevor': put_text_in_trevor('Abc') } self.assertEqual(len(SongNote.objects.all()), 0) response = testing.get_user_client(user=user).post( song.get_add_note_url(), data=data) self.assertEqual(302, response.status_code) self.assertRedirects(response, song.get_absolute_url()) self.assertEqual(len(SongNote.objects.all()), 1)
def test_add_song(self): user = testing.create_user() artist = Artist.create_for_testing(user) artist.reviewed = True artist.save() data = { 'title': 'wlazlkotek', 'capo_fret': 0, 'lyrics': 'wlazl kotek na plotek', 'entitycontribution_set-TOTAL_FORMS': 1, 'entitycontribution_set-INITIAL_FORMS': 0, 'entitycontribution_set-MIN_NUM_FORMS': 1, 'entitycontribution_set-MAX_NUM_FORMS': 1000, 'entitycontribution_set-0-artist': artist.pk, 'entitycontribution_set-0-texted': True, } response = testing.get_user_client(user=user).post( reverse('add_song'), data=data) self.assertRedirects(response, '/opracowanie/' + artist.name + '-wlazlkotek/') song = Song.objects.get(title='wlazlkotek') self.assertEqual('wlazl kotek na plotek', song.lyrics)
def test_cannot_add_song_note_if_song_not_reviewed(self): user = testing.create_user() artist = Artist.create_for_testing(user) artist.reviewed = True artist.full_clean() artist.save() song = Song.create_for_testing(user) song.reviewed = True song.full_clean() song.save() url = song.get_add_note_url() song.reviewed = False song.full_clean() song.save() data = { 'title': 'dalsze losy kotka', 'text_trevor': put_text_in_trevor('Abc') } response = testing.get_user_client(user=user).post(url, data=data) self.assertEqual(404, response.status_code) self.assertEqual(len(SongNote.objects.all()), 0)
def test_user_menu(self): response = testing.get_user_client().get(reverse('index')) self.assertEqual(200, response.status_code) self.assertNotContains(response, reverse('hello'), html=False) self.assertContains(response, reverse('goodbye'), html=False) self.assertNotContains(response, reverse('add_article'), html=False) self.assertNotContains(response, reverse('add_event'), html=False) self.assertNotContains(response, reverse('add_post'), html=False) self.assertNotContains(response, reverse('add_song'), html=False) user = testing.create_user(perms=[Article.permstring()]) response = testing.get_user_client(user).get(reverse('index')) self.assertEqual(200, response.status_code) self.assertNotContains(response, reverse('hello'), html=False) self.assertContains(response, reverse('goodbye'), html=False) self.assertContains(response, reverse('add_article'), html=False) self.assertNotContains(response, reverse('add_event'), html=False) self.assertNotContains(response, reverse('add_post'), html=False) self.assertNotContains(response, reverse('add_song'), html=False) user = testing.create_user(perms=[Event.permstring()]) response = testing.get_user_client(user).get(reverse('index')) self.assertEqual(200, response.status_code) self.assertNotContains(response, reverse('hello'), html=False) self.assertContains(response, reverse('goodbye'), html=False) self.assertNotContains(response, reverse('add_article'), html=False) self.assertContains(response, reverse('add_event'), html=False) self.assertNotContains(response, reverse('add_post'), html=False) self.assertNotContains(response, reverse('add_song'), html=False) user = testing.create_user(perms=[Post.permstring()]) response = testing.get_user_client(user).get(reverse('index')) self.assertEqual(200, response.status_code) self.assertNotContains(response, reverse('hello'), html=False) self.assertContains(response, reverse('goodbye'), html=False) self.assertNotContains(response, reverse('add_article'), html=False) self.assertNotContains(response, reverse('add_event'), html=False) self.assertContains(response, reverse('add_post'), html=False) self.assertNotContains(response, reverse('add_song'), html=False) user = testing.create_user(perms=[Song.permstring()]) response = testing.get_user_client(user).get(reverse('index')) self.assertEqual(200, response.status_code) self.assertNotContains(response, reverse('hello'), html=False) self.assertContains(response, reverse('goodbye'), html=False) self.assertNotContains(response, reverse('add_article'), html=False) self.assertNotContains(response, reverse('add_event'), html=False) self.assertNotContains(response, reverse('add_post'), html=False) self.assertContains(response, reverse('add_song'), html=False) user = testing.create_user(perms=[Article.permstring(), Event.permstring(), Post.permstring(), Song.permstring()]) response = testing.get_user_client(user).get(reverse('index')) self.assertEqual(200, response.status_code) self.assertNotContains(response, reverse('hello'), html=False) self.assertContains(response, reverse('goodbye'), html=False) self.assertContains(response, reverse('add_article'), html=False) self.assertContains(response, reverse('add_event'), html=False) self.assertContains(response, reverse('add_post'), html=False) self.assertContains(response, reverse('add_song'), html=False)