class EventTestCase(NycTreesSeleniumTestCase): def setUp(self): super(EventTestCase, self).setUp() # Group admin self.user = User(username='******', email='*****@*****.**', first_name='Turanga', last_name='Leela') self.user.set_password('password') self.user.clean_and_save() # Non-Group admin self.nonadmin_user = User(username='******', email='*****@*****.**', first_name='Zapp', last_name='Brannigan') self.nonadmin_user.set_password('password') self.nonadmin_user.clean_and_save() self.group = Group.objects.create( name='Planet Express', slug='planet-express', description='A simple delivery company', contact_name='Professor Farnseworth', contact_email='*****@*****.**', contact_url='https://planetexpress.nyc', admin=self.user )
def test_email_uniqueness(self): guy = User(username='******', email='*****@*****.**') guy.set_password('password') guy.save() gal = User(username='******', email='*****@*****.**') gal.set_password('password') with self.assertRaises(ValidationError) as ec: gal.clean_and_save() self.assertIn('email', ec.exception.error_dict)
class RsvpForEventUITest(EventTestCase): def setUp(self): super(RsvpForEventUITest, self).setUp() self.user2 = User(username='******', email='*****@*****.**', first_name='Bender', last_name='Rodríguez') self.user2.set_password('password') self.user2.clean_and_save() self.event = Event.objects.create(group=self.group, title="The event", slug="the-event", contact_email="*****@*****.**", address="123 Main St", location=CENTRAL_PARK, max_attendees=100, begins_at=now(), ends_at=now()) @property def event_detail_url(self): return self.event.get_absolute_url() def get_event_page(self): self.get(self.event_detail_url) def test_rsvp(self): self.assertEqual(EventRegistration.objects.all().count(), 0) self.login(self.user2.username) self.get_event_page() self.wait_for_text("RSVP") self.click('#rsvp') self.wait_for_text("RSVPed") self.assertEqual(EventRegistration.objects.all().count(), 1) self.assertEqual(EventRegistration.objects.all()[0].user, self.user2) self.assertEqual(EventRegistration.objects.all()[0].event, self.event) def test_cancel_rsvp(self): EventRegistration.objects.create(user=self.user2, event=self.event) self.login(self.user2.username) self.get_event_page() self.wait_for_text("1 / 100") self.click('#rsvp') self.wait_for_text("0 / 100") self.assertEqual(EventRegistration.objects.all().count(), 0) def test_group_admin_sees_admin_button(self): self.login(self.user.username) self.get_event_page() self.wait_for_text("Admin") def test_user_not_logged_in_can_rsvp(self): self.get_event_page() self.wait_for_text("0 / 100") self.click('#rsvp') expected_url = (self.live_server_url + reverse('login') + '?next=' + self.event_detail_url) self.assertEqual(expected_url, self.sel.current_url) self.wait_for_textbox_then_type('[name="username"]', self.user2.username) self.wait_for_textbox_then_type('[name="password"]', 'password') self.click('form input[type="submit"]') expected_url = self.live_server_url + self.event_detail_url self.assertEqual(expected_url, self.sel.current_url) self.wait_for_text("0 / 100") self.click('#rsvp') self.wait_for_text("1 / 100") def test_at_capacity(self): self.event.max_attendees = 1 self.event.save() EventRegistration.objects.create(user=self.user, event=self.event) self.login(self.user2.username) self.get_event_page() self.wait_for_text("At Capacity") self.click('#rsvp') # clicking should do nothing self.wait_for_text("At Capacity") def test_user_not_logged_in_at_capacity(self): self.event.max_attendees = 1 self.event.save() EventRegistration.objects.create(user=self.user, event=self.event) self.get_event_page() self.wait_for_text("At Capacity") self.click('#rsvp') # clicking should do nothing self.wait_for_text("At Capacity")