def test_offset_and_limit(self): for i in range(1, 11): self.make_source(u"http://example.com/feed%s" % i) response = self.app.get_json('/v1/sources?offset=5&limit=3', headers=self.PROVIDER_ID_HEADER) collection = response['collection'] items = collection['items'] self.assertEqual(collection['total_count'], 10) self.assertEqual(len(items), 3) self.assertEqual(collection['current_count'], 3) self.assertEqual(data_list_to_dict(items[0]['data'])['url'], 'http://example.com/feed6') self.assertEqual(data_list_to_dict(items[-1]['data'])['url'], 'http://example.com/feed8')
def test_unique_values(self): data_list = [ {u'name': u'title', u'value': u'Titre \xc9v\xe9nement'} ] expected_dict = {u'title': u'Titre \xc9v\xe9nement'} self.assertEqual(data_list_to_dict(data_list), expected_dict)
def test_post_publication_times(self): response = self.app.post_json('/v1/events', { 'template': { 'data': [ { 'name': 'title', 'value': u'Événement' }, { 'name': u'start_time', 'value': u'2014-01-25T15:00' }, { 'name': u'end_time', 'value': u'2014-01-25T15:00' }, { 'name': 'publication_start', 'value': u'2014-01-25T16:00' }, { 'name': 'publication_end', 'value': u'2014-01-25T17:00' }, ] } }, headers=self.WRITE_HEADERS) event_data = data_list_to_dict( response.json['collection']['items'][0]['data']) event_id = event_data['id'] event = Event.get_by_id(event_id) self.assertEqual(event.publication_start, datetime(2014, 1, 25, 16)) self.assertEqual(event.publication_end, datetime(2014, 1, 25, 17))
def test_offset_and_limit(self): for i in range(1, 11): self.make_source(u"http://example.com/feed%s" % i) response = self.app.get_json('/v1/sources?offset=5&limit=3', headers=self.PROVIDER_ID_HEADER) collection = response['collection'] items = collection['items'] self.assertEqual(collection['total_count'], 10) self.assertEqual(len(items), 3) self.assertEqual(collection['current_count'], 3) self.assertEqual( data_list_to_dict(items[0]['data'])['url'], 'http://example.com/feed6') self.assertEqual( data_list_to_dict(items[-1]['data'])['url'], 'http://example.com/feed8')
def post_event(self, event_info=None, headers=None): if headers is None: headers = {'X-ODE-Provider-Id': '123'} if event_info is None: event_info = [ {'name': 'title', 'value': u'Titre Événement'}, ] for mandatory in ('start_time', 'end_time', 'publication_start', 'publication_end'): if mandatory not in [field['name'] for field in event_info]: event_info.append({ 'name': mandatory, 'value': '2014-01-25T15:00:00', }) body_data = { 'template': { 'data': event_info } } created = 201 headers['content-type'] = 'application/vnd.collection+json' response = self.app.post_json('/v1/events', body_data, headers=headers, status=created) data_dict = data_list_to_dict( response.json['collection']['items'][0]['data']) return data_dict['id']
def test_valid_offset(self): for i in range(1, 11): self.make_source(u"http://example.com/feed%s" % i) response = self.app.get_json('/v1/sources?offset=5', headers=self.PROVIDER_ID_HEADER) item = response['collection']['items'][0] self.assertEqual( data_list_to_dict(item['data'])['url'], 'http://example.com/feed6')
def test_valid_offset(self): for i in range(1, 11): self.make_source(u"http://example.com/feed%s" % i) response = self.app.get_json('/v1/sources?offset=5', headers=self.PROVIDER_ID_HEADER) item = response['collection']['items'][0] self.assertEqual(data_list_to_dict(item['data'])['url'], 'http://example.com/feed6')
def __call__(self, value, system): request = system.get('request') if request is not None: response = request.response response.content_type = 'text/calendar' calendar = Calendar() for item in value['collection']['items']: self.add_event(calendar, data_list_to_dict(item['data'])) return calendar.to_ical()
def test_get_source_list(self): source1 = self.make_source(u"http://example.com/mysource") source2 = self.make_source(u"http://example.com/myothersource") self.make_source(u"http://example.com/hersource", provider_id='456') response = self.app.get('/v1/sources', headers=self.PROVIDER_ID_HEADER) self.assertContentType(response, 'application/vnd.collection+json') self.assertEqual(response.json['collection']['href'], 'http://localhost/v1/sources') items = response.json['collection']['items'] self.assertEqual(len(items), 2) self.assertEqual(data_list_to_dict(items[0]['data'])['id'], source1.id) self.assertEqual(items[0]['href'], 'http://localhost/v1/sources/%s' % source1.id) self.assertEqual(data_list_to_dict(items[1]['data'])['id'], source2.id) self.assertEqual(items[1]['href'], 'http://localhost/v1/sources/%s' % source2.id)
def test_multiple_values(self): data_list = [ {u'name': u'categories', u'value': u'Music'}, {u'name': u'categories', u'value': u'Theatre'}, {u'name': u'categories', u'value': u'Cinema'} ] expected_dict = { u'categories': [u'Music', u'Theatre', u'Cinema'] } self.assertEqual(data_list_to_dict(data_list), expected_dict)
def test_get_event(self): id = self.post_event() response = self.app.get( '/v1/events/%s' % id, headers={'Accept': 'application/vnd.collection+json'}) self.assertContentType(response, 'application/vnd.collection+json') event_data = response.json['collection']['items'][0]['data'] event_dict = data_list_to_dict(event_data) title = event_dict['title'] self.assertEqual(title, u'Titre Événement')
def build_csv(cls, items): fieldnames = [column.name for column in EventModel.__mapper__.columns] fieldnames += ['location_' + column.name for column in Location.__mapper__.columns if column.name != 'event_id'] fieldnames += ['tags', 'categories'] + cls.MEDIA_ATTRIBUTES output = StringIO() writer = csv.DictWriter(output, fieldnames=fieldnames) writer.writeheader() for item in items: data_dict = data_list_to_dict(item['data']) for key, value in data_dict.items(): data_dict[key] = cls.format_value(key, value) writer.writerow(data_dict) return output.getvalue()
def test_get_source(self): source = self.make_source() response = self.app.get('/v1/sources/%s' % source.id) self.assertContentType(response, 'application/vnd.collection+json') source_data = response.json['collection']['items'][0]['data'] data_dict = data_list_to_dict(source_data) self.assertEqual(data_dict['url'], 'http://example.com') self.assertNotIn('active', data_dict) self.assertNotIn('provider_id', data_dict) source_href = response.json['collection']['items'][0]['href'] self.assertEqual(source_href, 'http://localhost/v1/sources/%s' % source.id)
def build_csv(cls, items): fieldnames = [column.name for column in EventModel.__mapper__.columns] fieldnames += [ 'location_' + column.name for column in Location.__mapper__.columns if column.name != 'event_id' ] fieldnames += ['tags', 'categories'] + cls.MEDIA_ATTRIBUTES output = StringIO() writer = csv.DictWriter(output, fieldnames=fieldnames) writer.writeheader() for item in items: data_dict = data_list_to_dict(item['data']) for key, value in data_dict.items(): data_dict[key] = cls.format_value(key, value) writer.writerow(data_dict) return output.getvalue()
def test_post_publication_times(self): response = self.app.post_json('/v1/events', { 'template': { 'data': [ {'name': 'title', 'value': u'Événement'}, {'name': u'start_time', 'value': u'2014-01-25T15:00'}, {'name': u'end_time', 'value': u'2014-01-25T15:00'}, {'name': 'publication_start', 'value': u'2014-01-25T16:00'}, {'name': 'publication_end', 'value': u'2014-01-25T17:00'}, ] } }, headers=self.WRITE_HEADERS) event_data = data_list_to_dict( response.json['collection']['items'][0]['data']) event_id = event_data['id'] event = Event.get_by_id(event_id) self.assertEqual(event.publication_start, datetime(2014, 1, 25, 16)) self.assertEqual(event.publication_end, datetime(2014, 1, 25, 17))
def get_item_title(item): return data_list_to_dict(item['data'])['title']
def assertEqualIgnoringId(self, result, expected): result = remove_ids(result) self.assertEqual(data_list_to_dict(result), data_list_to_dict(expected))