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))))
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()
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 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())
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_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)
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)
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)