class TestEvents(unittest.TestCase): def setUp(self): self.eventbrite = Eventbrite(OAUTH_TOKEN) @unittest.skipIf(condition=skip_user_id_tests, reason='Needs a USER_ID') @unittest.skipIf( condition=skip_integration_tests, reason='Needs an OAUTH_TOKEN') def test_post_event(self): event_name = 'client_test_{0}'.format(datetime.now()) event_data = self._get_event_data(event_name) event = self.eventbrite.post_event(event_data) self.assertEqual(event_name, event['name']['text']) self.assertEqual(event_name, event['name']['html']) # Just for access to see the event, not full authentication self.assertEqual(event['password'], "test") @unittest.skipIf(condition=skip_user_id_tests, reason='Needs a USER_ID') @unittest.skipIf( condition=skip_integration_tests, reason='Needs an OAUTH_TOKEN') def test_search_events(self): data = { 'location.latitude': '40.4313684', 'start_date.keyword': 'today', 'location.longitude': '-79.9805005', 'location.within': '10km' } events = self.eventbrite.event_search(**data) self.assertLess(events['pagination'][u'object_count'], 1000) @unittest.skipIf( condition=skip_integration_tests, reason='Needs an OAUTH_TOKEN') def test_publish_unpublish_event(self): """ First, creat a draft event """ event_data = self._get_event_data() event = self.eventbrite.post_event(event_data) self.assertTrue(event.ok, msg=event.get('error_description', None)) """ Next, create a ticket class for the event, because an event can't be published without one """ ticket_data = self._get_ticket_data() response = self.eventbrite.post_event_ticket_class(event['id'], data=ticket_data) """Finally, try to publish the event""" response = self.eventbrite.publish_event(event['id']) self.assertTrue(response.ok, msg=response.get('error_description', None)) """Now try to unpublish the event""" response = self.eventbrite.unpublish_event(event['id']) self.assertTrue(response.ok, msg=response.get('error_description', None)) @unittest.skipIf( condition=skip_integration_tests, reason='Needs an OAUTH_TOKEN') def test_create_ticket_class(self): event_data = self._get_event_data() event = self.eventbrite.post_event(event_data) ticket_data = self._get_ticket_data() response = self.eventbrite.post_event_ticket_class(event['id'], data=ticket_data) self.assertTrue(response.ok, msg=response.get('error_description', None)) def _get_ticket_data(self): return { 'ticket_class.name': 'client_test_ticket_{0}'.format(datetime.now()), 'ticket_class.description': 'Python API Client testing', 'ticket_class.quantity_total': 100, 'ticket_class.cost': 'USD,4500' } def _get_event_data(self, event_name='client_test_{0}'.format(datetime.now())): """ Returns a dictionary representing a valid event """ # if not event_name: # event_name = 'client_test_{0}'.format(datetime.now()) return { 'event.name': { 'html': event_name, }, 'event.start': { 'utc': (datetime.now() + timedelta(days=1)).strftime(EB_ISO_FORMAT), 'timezone': 'America/Los_Angeles', }, 'event.end': { 'utc': (datetime.now() + timedelta(days=1,hours=1)).strftime(EB_ISO_FORMAT), 'timezone': 'America/Los_Angeles', }, 'event.currency': 'USD', 'event.online_event': True, 'event.listed': False, 'event.category_id': '110', 'event.format_id': '5', 'event.password': "******", 'event.capacity': 10, }
class TestEvents(unittest.TestCase): def setUp(self): self.eventbrite = Eventbrite(OAUTH_TOKEN) @unittest.skipIf(condition=skip_user_id_tests, reason='Needs a USER_ID') @unittest.skipIf(condition=skip_integration_tests, reason='Needs an OAUTH_TOKEN') def test_post_event(self): event_name = 'client_test_{0}'.format(datetime.now()) event_data = self._get_event_data(event_name) event = self.eventbrite.post_event(event_data) self.assertEqual(event_name, event['name']['text']) self.assertEqual(event_name, event['name']['html']) # Just for access to see the event, not full authentication self.assertEqual(event['password'], "test") @unittest.skipIf(condition=skip_user_id_tests, reason='Needs a USER_ID') @unittest.skipIf(condition=skip_integration_tests, reason='Needs an OAUTH_TOKEN') def test_search_events(self): data = { 'location.latitude': '40.4313684', 'start_date.keyword': 'today', 'location.longitude': '-79.9805005', 'location.within': '10km' } events = self.eventbrite.event_search(**data) self.assertLess(events['pagination'][u'object_count'], 1000) @unittest.skipIf(condition=skip_integration_tests, reason='Needs an OAUTH_TOKEN') def test_publish_unpublish_event(self): """ First, creat a draft event """ event_data = self._get_event_data() event = self.eventbrite.post_event(event_data) self.assertTrue(event.ok, msg=event.get('error_description', None)) """ Next, create a ticket class for the event, because an event can't be published without one """ ticket_data = self._get_ticket_data() response = self.eventbrite.post_event_ticket_class(event['id'], data=ticket_data) """Finally, try to publish the event""" response = self.eventbrite.publish_event(event['id']) self.assertTrue(response.ok, msg=response.get('error_description', None)) """Now try to unpublish the event""" response = self.eventbrite.unpublish_event(event['id']) self.assertTrue(response.ok, msg=response.get('error_description', None)) @unittest.skipIf(condition=skip_integration_tests, reason='Needs an OAUTH_TOKEN') def test_create_ticket_class(self): event_data = self._get_event_data() event = self.eventbrite.post_event(event_data) ticket_data = self._get_ticket_data() response = self.eventbrite.post_event_ticket_class(event['id'], data=ticket_data) self.assertTrue(response.ok, msg=response.get('error_description', None)) def _get_ticket_data(self): return { 'ticket_class.name': 'client_test_ticket_{0}'.format(datetime.now()), 'ticket_class.description': 'Python API Client testing', 'ticket_class.quantity_total': 100, 'ticket_class.cost': 'USD,4500' } def _get_event_data(self, event_name='client_test_{0}'.format(datetime.now())): """ Returns a dictionary representing a valid event """ # if not event_name: # event_name = 'client_test_{0}'.format(datetime.now()) return { 'event.name': { 'html': event_name, }, 'event.start': { 'utc': (datetime.now() + timedelta(days=1)).strftime(EB_ISO_FORMAT), 'timezone': 'America/Los_Angeles', }, 'event.end': { 'utc': (datetime.now() + timedelta(days=1, hours=1)).strftime(EB_ISO_FORMAT), 'timezone': 'America/Los_Angeles', }, 'event.currency': 'USD', 'event.online_event': True, 'event.listed': False, 'event.category_id': '110', 'event.format_id': '5', 'event.password': "******", 'event.capacity': 10, }
print('Event %s created' % name) tickets = eventbrite.get_event_ticket_classes(event['id']) if len(tickets['ticket_classes']) == 0: tickets = eventbrite.post_event_ticket_class( event['id'], { 'ticket_class.name': 'Free', 'ticket_class.free': True, 'ticket_class.minimum_quantity': 1, 'ticket_class.maximum_quantity': 1, 'ticket_class.quantity_total': data['capacity'], }) print('Tickets created') else: tickets = tickets['ticket_classes'][0] print('Tickets exist') result = eventbrite.publish_event(event['id']) if ('published' in result and result['published']) or ( 'error' in result and result['error'] == 'ALREADY_PUBLISHED_OR_DELETED'): print('Published') output.write("%s,%s,%s,%s,%s,%s,%s\n" % (date.strftime('%b %d'), date.strftime('%I:%M %p %Z'), event['url'], '', e['who'], data['capacity'], data['password'])) else: print(result)