Example #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']))
Example #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']))
Example #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)
Example #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)
Example #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)
Example #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)
Example #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)
Example #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())
Example #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)
Example #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)
Example #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)
Example #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']))
Example #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"]))
Example #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']))
Example #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.')
Example #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)
Example #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)
Example #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)
Example #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)