def test_fetching_range(self): url = 'https://example.edu' user_id = 'testuser' page_size = 3 url_first = fetcher.Flickr_Fetcher.url_get_user_photos_template.format( api_key='boguskey', user_id=user_id, per_page=page_size, page=1) # Ugly but works httpretty.register_uri( httpretty.GET, url_first, responses=[ httpretty.Response( body=open(DIR_FIXTURES + '/flickr-public-photos-1.xml') .read(), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-public-photos-1.xml') .read(), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-public-photos-1.xml') .read(), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photo-info-0.xml').read( ), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photo-info-0.xml').read( ), status=200), ] ) h = fetcher.Flickr_Fetcher(url, user_id, page_size=page_size, page_range='3,5') h.doc_current = 10 self.assertRaises(ValueError, h.next) h.docs_fetched = 4 h.doc_current = 4 self.assertRaises(StopIteration, h.next) h.docs_fetched = 2 h.doc_current = 2 h.page_current = 5 self.assertRaises(StopIteration, h.next) h = fetcher.Flickr_Fetcher(url, user_id, page_size=page_size, page_range='3,5') total = 0 all_objs = [] for objs in h: total += len(objs) all_objs.extend(objs) self.assertEqual(total, 4) self.assertEqual(len(all_objs), 4)
def testInit(self): '''Basic tdd start''' url = 'https://example.edu' user_id = 'test@Nuser' page_size = 10 url_first = fetcher.Flickr_Fetcher.url_get_user_photos_template.format( api_key='boguskey', user_id=user_id, per_page=page_size, page=1) httpretty.register_uri( httpretty.GET, url_first, body=open(DIR_FIXTURES + '/flickr-public-photos-1.xml').read()) h = fetcher.Flickr_Fetcher(url, user_id, page_size=page_size) self.assertEqual(h.url_base, url) self.assertEqual(h.user_id, user_id) self.assertEqual(h.page_size, 10) self.assertEqual(h.page_current, 1) self.assertEqual(h.doc_current, 0) self.assertEqual(h.docs_fetched, 0) self.assertEqual(h.url_get_user_photos_template, 'https://api.flickr.com/services/rest/' '?api_key={api_key}&user_id={user_id}&per_page' '={per_page}&method=' 'flickr.people.getPublicPhotos&page={page}') self.assertEqual(h.api_key, 'boguskey') self.assertEqual(h.url_current, url_first) self.assertEqual(h.docs_total, 10) self.assertEqual(h.url_get_photo_info_template, 'https://api.flickr.com/services/rest/' '?api_key={api_key}&method=' 'flickr.photos.getInfo&photo_id={photo_id}')
def test_page_range(self): '''Need to break this up into pages, to run as different jobs.''' url = 'https://example.edu' user_id = 'testuser' page_size = 3 page_range = '2,3' url_first = fetcher.Flickr_Fetcher.url_get_user_photos_template.format( api_key='boguskey', user_id=user_id, per_page=page_size, page=1) httpretty.register_uri( httpretty.GET, url_first, body=open(DIR_FIXTURES + '/flickr-public-photos-1.xml').read()) h = fetcher.Flickr_Fetcher(url, user_id, page_size=page_size, page_range=page_range) self.assertEqual(h.page_start, 2) self.assertEqual(h.page_end, 3) self.assertEqual(h.page_current, 2) self.assertEqual(h.docs_total, 6) h = fetcher.Flickr_Fetcher(url, user_id, page_size=page_size, page_range='3,5') self.assertEqual(h.page_start, 3) self.assertEqual(h.page_end, 4) self.assertEqual(h.page_current, 3) self.assertEqual(h.docs_total, 4)
def test_photoset_fetching(self): url = 'https://example.edu' user_id = 'testphotoset' page_size = 6 url_first = fetcher.Flickr_Fetcher.url_get_photoset_template.format( api_key='boguskey', user_id=user_id, per_page=page_size, page=1) # Ugly but works httpretty.register_uri( httpretty.GET, url_first, responses=[ httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photoset-1.xml') .read(), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photoset-1.xml') .read(), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photo-info-0.xml').read( ), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photo-info-0.xml').read( ), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photo-info-0.xml').read( ), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photoset-2.xml') .read(), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photo-info-0.xml').read( ), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photo-info-0.xml').read( ), status=200), httpretty.Response( body=open(DIR_FIXTURES + '/flickr-photo-info-0.xml').read( ), status=200), ]) h = fetcher.Flickr_Fetcher(url, user_id, page_size=page_size) h.doc_current = 6 self.assertRaises(ValueError, h.next) h.docs_fetched = 6 self.assertRaises(StopIteration, h.next) h = fetcher.Flickr_Fetcher(url, user_id, page_size=page_size) total = 0 all_objs = [] for objs in h: total += len(objs) all_objs.extend(objs) self.assertEqual(total, 6) self.assertEqual(len(all_objs), 6) photo_obj = all_objs[0] key_list_values = { 'description': { 'text': 'PictionID:56100666 - Catalog:C87-047-040.tif - ' 'Title:Ryan Aeronautical Negative Collection Image - ' 'Filename:C87-047-040.tif - - Image from the Teledyne Ryan ' 'Archives, donated to SDASM in the 1990s. Many of these ' 'images are from Ryan\'s UAV program-----Please Tag these ' 'images so that the information can be permanently stored ' 'with the digital file.---Repository: <a href=' '"http://www.sandiegoairandspace.org/library/stillimages.' 'html" rel="nofollow">San Diego Air and Space Museum </a>' }, 'isfavorite': '0', 'views': '499', 'farm': '5', 'people': { 'haspeople': '0', 'text': None }, 'visibility': { 'text': None, 'isfamily': '0', 'isfriend': '0', 'ispublic': '1' }, 'originalformat': 'jpg', 'owner': { 'text': None, 'nsid': "49487266@N07", 'username': "******", 'realname': "SDASM Archives", 'location': "", 'iconserver': "4070", 'iconfarm': "5", 'path_alias': "sdasmarchives", }, 'rotation': '0', 'id': '34394586825', 'dates': { 'text': None, 'lastupdate': '1493683351', 'posted': '1493683350', 'taken': '2017-05-01 17:02:30', 'takengranularity': '0', 'takenunknown': '1', }, 'originalsecret': 'd46e9b19cc', 'license': '7', 'title': { 'text': 'Ryan Aeronautical Image' }, 'media': 'photo', 'notes': [{ 'x': '10', 'authorname': 'Bees', 'text': 'foo', 'w': '50', 'author': '12037949754@N01', 'y': '10', 'h': '50', 'id': '313' }], 'tags': [{ 'raw': 'woo yay', 'text': 'wooyay', 'id': '1234', 'author': '12037949754@N01' }, { 'raw': 'hoopla', 'text': 'hoopla', 'id': '1235', 'author': '12037949754@N01' }], 'publiceditability': { 'text': None, 'cancomment': '1', 'canaddmeta': '1' }, 'comments': { 'text': '0' }, 'server': '4169', 'dateuploaded': '1493683350', 'secret': '375e0b1706', 'safety_level': '0', 'urls': [{ 'text': 'https://www.flickr.com/photos/sdasmarchives/34394586825/', 'type': 'photopage' }], 'usage': { 'text': None, 'canblog': '0', 'candownload': '1', 'canprint': '0', 'canshare': '1' }, 'editability': { 'text': None, 'cancomment': '0', 'canaddmeta': '0' }, } self.assertEqual(len(photo_obj.keys()), len(key_list_values.keys())) for k, v in key_list_values.items(): self.assertEqual(photo_obj[k], v)