示例#1
0
class EventTests(TestCase):
    def setUp(self):
        self.event1 = EventFactory(date=date(2018, 5, 3))
        self.event2 = EventFactory(date=date(2018, 5, 2))
        self.event3 = EventFactory(date=date(2018, 5, 1))
        # Make events visible
        EntryFactory(event=self.event1)
        EntryFactory(event=self.event2)
        EntryFactory(event=self.event3)

    def test_prev_url(self):
        self.assertEqual(self.event1.get_prev_url(), None)

        self.assertEqual(
            self.event2.get_prev_url(),
            reverse('view_event',
                    args=(self.event1.pk, slugify(self.event1.name))))

    def test_next_url(self):
        self.assertEqual(self.event3.get_next_url(), None)

        self.assertEqual(
            self.event2.get_next_url(),
            reverse('view_event',
                    args=(self.event3.pk, slugify(self.event3.name))))
示例#2
0
    def setUp(self):
        self.user = User.objects.create_user(username='******',
                                             password='******',
                                             email='*****@*****.**')
        self.user2 = User.objects.create_user(username='******',
                                              password='******',
                                              email='*****@*****.**')
        self.staff = User.objects.create_user(username='******',
                                              password='******',
                                              is_staff=True,
                                              email='*****@*****.**')
        self.event = EventFactory(name='Testowy event!')
        self.entry = EntryFactory(event=self.event, is_approved=True)
        ev = EntryVersionFactory(entry=self.entry, is_approved=True)
        el = EntryLineFactory(entry_version=ev)
        el.text = 'normal_visible_entry'
        el.save()

        self.audio = AudioSource.objects.create(
            event=self.event,
            length=10,
            status=AudioSource.STORED_IN_CLOUD,
            original_filename='file.mp3',
            is_approved=True,
            created_by=self.user2,
            file_title="file.mp3")

        self.audio_unapproved = AudioSource.objects.create(
            event=self.event,
            length=10,
            status=AudioSource.STORED_IN_CLOUD,
            is_visible=True,
            original_filename='file2.mp3',
            is_approved=False,
            created_by=self.user2,
            file_title="file2.mp3")

        self.audio_hidden = AudioSource.objects.create(
            event=self.event,
            length=10,
            status=AudioSource.STORED_IN_CLOUD,
            original_filename='file3.mp3',
            is_approved=True,
            is_visible=False,
            file_title="file3.mp3",
            created_by=self.user2)

        self.make_new_entry_suggestion()
        self.make_modified_entry_suggestion()
        self.make_hidden_entry()
示例#3
0
    def setUp(self):
        self.user = User.objects.create_user(username='******', password='******', email='*****@*****.**')
        self.user2 = User.objects.create_user(username='******', password='******', email='*****@*****.**')
        self.staff = User.objects.create_user(username='******', password='******', is_staff=True,
                                              email='*****@*****.**')
        self.event = EventFactory(name='Testowy event!')
        self.entry = EntryFactory(event=self.event, is_approved=True)
        ev = EntryVersionFactory(entry=self.entry, is_approved=True)
        el = EntryLineFactory(entry_version=ev)
        el.text = 'normal_visible_entry'
        el.save()

        self.make_new_entry_suggestion()
        self.make_modified_entry_suggestion()
        self.make_hidden_entry()
示例#4
0
    def test_index_events(self):
        event = EventFactory()
        ret = self.client.get('/')
        self.assertEqual(ret.status_code, 200)
        # No entries = event invisible on index page
        self.assertNotIn(event.name, ret.content.decode())

        # Adding entry to make event visible on index page
        EntryFactory(event=event)
        ret = self.client.get('/')
        self.assertEqual(ret.status_code, 200)
        self.assertInHTML(event.name, ret.content.decode())
示例#5
0
 def setUp(self):
     self.event1 = EventFactory(date=date(2018, 5, 3))
     self.event2 = EventFactory(date=date(2018, 5, 2))
     self.event3 = EventFactory(date=date(2018, 5, 1))
     # Make events visible
     EntryFactory(event=self.event1)
     EntryFactory(event=self.event2)
     EntryFactory(event=self.event3)
示例#6
0
    def test_events_list(self):
        Entry.objects.all().delete()
        Event.objects.all().delete()
        events = [EventFactory(date=date(2018, 5, x + 1)) for x in range(30)]

        response = self.client.get('/events/', )
        body1 = response.content.decode()

        response = self.client.get('/events/', data={'page': '2'})
        body2 = response.content.decode()

        response = self.client.get('/events/', data={'page': '200'})
        body200 = response.content.decode()

        response = self.client.get('/events/', data={'page': 'bad'})
        body_bad = response.content.decode()

        response = self.client.get('/events/',
                                   data={
                                       'page': '1',
                                       'sort_ord': '',
                                       'sort_by': 'date'
                                   })
        body_sort = response.content.decode()

        for event in events[10:30]:
            self.assertIn(event.name, body1)
            self.assertNotIn(event.name, body2)
            self.assertNotIn(event.name, body200)
            self.assertIn(event.name, body_bad)

        for event in events[:20]:
            self.assertIn(event.name, body_sort)

        for event in events[:10]:
            self.assertNotIn(event.name, body1)
            self.assertIn(event.name, body2)
            self.assertIn(event.name, body200)
            self.assertNotIn(event.name, body_bad)

        for event in events[20:30]:
            self.assertNotIn(event.name, body_sort)
示例#7
0
class SuggestionVisibilityTests(TestCase):

    def setUp(self):
        self.user = User.objects.create_user(username='******', password='******', email='*****@*****.**')
        self.user2 = User.objects.create_user(username='******', password='******', email='*****@*****.**')
        self.staff = User.objects.create_user(username='******', password='******', is_staff=True,
                                              email='*****@*****.**')
        self.event = EventFactory(name='Testowy event!')
        self.entry = EntryFactory(event=self.event, is_approved=True)
        ev = EntryVersionFactory(entry=self.entry, is_approved=True)
        el = EntryLineFactory(entry_version=ev)
        el.text = 'normal_visible_entry'
        el.save()

        self.make_new_entry_suggestion()
        self.make_modified_entry_suggestion()
        self.make_hidden_entry()

    def tearDown(self):
        Entry.objects.all().delete()
        Event.objects.all().delete()
        self.event.delete()
        self.user.delete()
        self.user2.delete()
        self.staff.delete()

    def make_new_entry_suggestion(self):
        new_entry_line = EntryLineFactory()
        new_entry_line.text = 'new_entry_suggestion'
        new_entry_line.save()
        ev = new_entry_line.entry_version
        ev.is_approved = False
        ev.save()
        entry = ev.entry
        entry.is_approved = False
        entry.is_visible = True
        entry.event = self.event
        entry.save()
        return entry

    def make_modified_entry_suggestion(self):
        entry = EntryFactory(event=self.event, is_approved=True)
        ev = EntryVersionFactory(entry=entry, is_approved=True, date=timezone.now() - timedelta(seconds=10))
        EntryLineFactory(entry_version=ev, text='old_modified_entry_text')
        ev2 = EntryVersionFactory(entry=entry, is_approved=False, date=timezone.now())
        EntryLineFactory(entry_version=ev2, text='new_modified_entry_text', entry_version__user=self.user2)

    def make_hidden_entry(self):
        entry = EntryFactory(event=self.event, is_approved=True)
        ev = EntryVersionFactory(entry=entry, is_approved=True, date=timezone.now() - timedelta(seconds=10))
        EntryLineFactory(entry_version=ev, text='hidden_entry')
        entry.hide()
        entry.save()

    def _get_event_page(self, user=None):
        if user:
            self.client.login(username=user.username, password='******')
        ret = self.client.get('/events/{}/'.format(self.event.pk), follow=True)
        if user:
            self.client.logout()
        self.assertEqual(ret.status_code, 200)
        return ret.content.decode()

    def _get_recent_page(self, user=None):
        if user:
            self.client.login(username=user.username, password='******')
        ret = self.client.get('/recent/', {'mode': 'recorded'}, follow=True)
        if user:
            self.client.logout()
        self.assertEqual(ret.status_code, 200)
        return ret.content.decode()

    def test_anonymous_normal_entry(self):
        page = self._get_event_page()
        page2 = self._get_recent_page()
        self.assertIn('normal_visible_entry', page)
        self.assertIn('normal_visible_entry', page2)

    def test_anonymous_suggestion_new_entry(self):
        page = self._get_event_page()
        page2 = self._get_recent_page()
        self.assertNotIn('new_entry_suggestion', page)
        self.assertNotIn('new_entry_suggestion', page2)

    def test_anonymous_suggestion_modified_entry(self):
        page = self._get_event_page()
        page2 = self._get_recent_page()
        self.assertIn('old_modified_entry_text', page)
        self.assertIn('old_modified_entry_text', page2)
        self.assertNotIn('new_modified_entry_text', page)
        self.assertNotIn('new_modified_entry_text', page2)

    def test_anonymous_hidden_entry(self):
        page = self._get_event_page()
        page2 = self._get_recent_page()
        self.assertNotIn('hidden_entry', page)
        self.assertNotIn('hidden_entry', page2)

    def test_user_normal_entry(self):
        page = self._get_event_page(self.user)
        page2 = self._get_recent_page(self.user)
        self.assertIn('normal_visible_entry', page)
        self.assertIn('normal_visible_entry', page2)

    def test_user_suggestion_new_entry(self):
        page = self._get_event_page(self.user)
        page2 = self._get_recent_page(self.user)
        self.assertIn('new_entry_suggestion', page)
        self.assertIn('new_entry_suggestion', page2)

    def test_user_suggestion_modified_entry(self):
        page = self._get_event_page(self.user)
        page2 = self._get_recent_page(self.user)
        self.assertIn('new_entry_suggestion', page)
        self.assertIn('new_entry_suggestion', page2)

    def test_user_hidden_entry(self):
        page = self._get_event_page(self.user)
        page2 = self._get_recent_page(self.user)
        self.assertNotIn('hidden_entry', page)
        self.assertNotIn('hidden_entry', page2)
示例#8
0
class EventTests(TestCase):
    def setUp(self):
        self.event1 = EventFactory(date=date(2028, 2, 3))
        self.event2 = EventFactory(date=date(2028, 2, 2))
        self.event3 = EventFactory(date=date(2028, 2, 1))
        # Make events visible
        EntryFactory(event=self.event1)
        EntryFactory(event=self.event2)
        EntryFactory(event=self.event3)

    def tearDown(self) -> None:
        Entry.objects.all().delete()
        Event.objects.all().delete()

    def test_event_page(self):
        self.event1.name = "Test event 1"
        self.event1.date = date(2018, 2, 3)
        self.event1.location = 'Warsaw'
        self.event1.tour = 'Test tour'
        self.event1.bookstore = 'Empik'
        self.event1.meta = 'Meta comment'
        self.event1.review_state = Event.REVIEW_APPROVED
        self.event1.save()

        response = self.client.get('/events/{}/'.format(self.event1.id), follow=True)
        body = response.content.decode()
        self.assertEqual(response.status_code, 200)
        self.assertInHTML('Warsaw', body)
        self.assertInHTML('Test tour', body)
        self.assertInHTML('Empik', body)
        self.assertNotIn('Meta comment', body)
        self.assertInHTML(get_config('review_reviewed_explanation'), body)

        self.event1.review_state = Event.REVIEW_PENDING
        self.event1.save()

        response = self.client.get('/events/{}/'.format(self.event1.id), follow=True)
        body = response.content.decode()
        self.assertEqual(response.status_code, 200)
        self.assertInHTML(get_config('review_pending_explanation'), body)

        self.event1.review_state = Event.REVIEW_NA
        self.event1.save()

        response = self.client.get('/events/{}/'.format(self.event1.id), follow=True)
        body = response.content.decode()
        self.assertEqual(response.status_code, 200)

    def test_events_list(self):
        Entry.objects.all().delete()
        Event.objects.all().delete()
        events = [EventFactory(date=date(2018, 5, x+1)) for x in range(30)]

        response = self.client.get('/events/',)
        body1 = response.content.decode()

        response = self.client.get('/events/', data={'page': '2'})
        body2 = response.content.decode()

        response = self.client.get('/events/', data={'page': '200'})
        body200 = response.content.decode()

        response = self.client.get('/events/', data={'page': 'bad'})
        body_bad = response.content.decode()

        response = self.client.get('/events/', data={'page': '1', 'sort_ord': '', 'sort_by': 'date'})
        body_sort = response.content.decode()

        for event in events[10:30]:
            self.assertIn(event.name, body1)
            self.assertNotIn(event.name, body2)
            self.assertNotIn(event.name, body200)
            self.assertIn(event.name, body_bad)

        for event in events[:20]:
            self.assertIn(event.name, body_sort)

        for event in events[:10]:
            self.assertNotIn(event.name, body1)
            self.assertIn(event.name, body2)
            self.assertIn(event.name, body200)
            self.assertNotIn(event.name, body_bad)

        for event in events[20:30]:
            self.assertNotIn(event.name, body_sort)

    def test_prev_url(self):
        self.assertEqual(
            self.event3.get_prev_url(),
            None
        )

        self.assertEqual(
            self.event2.get_prev_url(),
            reverse('view_event', args=(self.event3.pk, slugify(self.event3.name)))
        )

    def test_next_url(self):
        self.assertEqual(
            self.event1.get_next_url(),
            None
        )

        self.assertEqual(
            self.event2.get_next_url(),
            reverse('view_event', args=(self.event1.pk, slugify(self.event1.name)))
        )

    def test_event_view_no_slug(self):
        ret = self.client.get('/events/{}/'.format(self.event1.id), follow=True)
        self.assertEqual(ret.status_code, 200)
        self.assertEqual(ret.redirect_chain[0],
                         ('/events/{}-{}/'.format(self.event1.id, slugify(self.event1.name)), 302))

    def test_view_entry(self):
        entry = EntryFactory(event=self.event1)
        ret = self.client.get('/entry/{}/'.format(entry.id), follow=True)
        self.assertEqual(ret.status_code, 200)
        self.assertEqual(
            ret.redirect_chain[0],
            ('/events/{}-{}/#e{}'.format(self.event1.id, slugify(self.event1.name), entry.id), 302))

    def test_view_event_invisible(self):
        self.event1.is_visible = False
        self.event1.save()
        ret = self.client.get('/events/{}/'.format(self.event1.id), follow=True)
        self.assertEqual(ret.status_code, 403)