Ejemplo n.º 1
0
    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']))
Ejemplo n.º 2
0
    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']))
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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())
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
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.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)
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
    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']))
Ejemplo n.º 13
0
    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"]))
Ejemplo n.º 14
0
    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']))
Ejemplo n.º 15
0
 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.')
Ejemplo n.º 16
0
    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)
Ejemplo n.º 17
0
    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)
Ejemplo n.º 18
0
    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)
Ejemplo n.º 19
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)