class ReaderClientSingleBookmarkTest(TestCase): """Tests that only need one bookmark """ def setUp(self): """Get a client and add a bookmark """ token_pair = xauth(CONSUMER_KEY, CONSUMER_SECRET, USERNAME, PASSWORD) self.token_key = token_pair[0] self.token_secret = token_pair[1] self.base_client = ReaderClient(CONSUMER_KEY, CONSUMER_SECRET, self.token_key, self.token_secret) self.url = 'http://www.theatlantic.com/technology/archive/2013/01/the-never-before-told-story-of-the-worlds-first-computer-art-its-a-sexy-dame/267439/' add_response = self.base_client.add_bookmark(self.url) self.assertEqual(add_response.status, 202) def tearDown(self): """Remove all added bookmarks. """ for bm in self.base_client.get_bookmarks().content['bookmarks']: del_response = self.base_client.delete_bookmark(bm['id']) self.assertEqual(del_response.status, 204) def test_get_bookmark(self): """Test getting one bookmark by id """ # get a bookmark id bm_response = self.base_client.get_bookmarks() self.assertEqual(bm_response.status, 200) self.assertTrue(len(bm_response.content['bookmarks']) > 0) bookmark_id = bm_response.content['bookmarks'][0]['id'] bm_response = self.base_client.get_bookmark(bookmark_id) self.assertEqual(bm_response.status, 200) some_expected_keys = set(['article', 'user_id', 'favorite', 'id']) received_keys = set(bm_response.content.keys()) self.assertTrue(some_expected_keys.issubset(received_keys)) def test_bookmark_tag_functionality(self): """Test adding, fetching and deleting tags on a bookmark. """ # get a bookmark id bm_response = self.base_client.get_bookmarks() self.assertEqual(bm_response.status, 200) self.assertTrue(len(bm_response.content['bookmarks']) > 0) bookmark_id = bm_response.content['bookmarks'][0]['id'] # test getting empty tags tag_response = self.base_client.get_bookmark_tags(bookmark_id) self.assertEqual(tag_response.status, 200) self.assertEqual(len(tag_response.content['tags']), 0) # test adding tags tags = ['tag', 'another tag'] tag_string = ', '.join(tags) tag_add_response = \ self.base_client.add_tags_to_bookmark(bookmark_id, tag_string) self.assertEqual(tag_add_response.status, 202) # re-fetch tags. should have 2 retag_response = self.base_client.get_bookmark_tags(bookmark_id) self.assertEqual(retag_response.status, 200) self.assertEqual(len(retag_response.content['tags']), 2) for tag in retag_response.content['tags']: self.assertTrue(tag['text'] in tags) # test getting tags for user user_tag_resp = self.base_client.get_tags() self.assertEqual(user_tag_resp.status, 200) self.assertEqual(len(user_tag_resp.content['tags']), 2) for tag in user_tag_resp.content['tags']: self.assertTrue(tag['text'] in tags) # test getting a single tag while we're here single_tag_resp = self.base_client.get_tag(tag['id']) self.assertEqual(single_tag_resp.status, 200) self.assertTrue('applied_count' in single_tag_resp.content) self.assertTrue('id' in single_tag_resp.content) self.assertTrue('text' in single_tag_resp.content) # delete tags for tag in retag_response.content['tags']: del_response = self.base_client.delete_tag_from_bookmark( bookmark_id, tag['id']) self.assertEqual(del_response.status, 204) # check that tags are gone tag_response = self.base_client.get_bookmark_tags(bookmark_id) self.assertEqual(tag_response.status, 200) self.assertEqual(len(tag_response.content['tags']), 0)
class ReaderClientSingleBookmarkTest(unittest.TestCase): """ Tests that only need one bookmark """ def setUp(self): """ Get a client and add a bookmark """ token_key, token_secret = xauth() self.reader_client = ReaderClient(token_key=token_key, token_secret=token_secret) self.url = 'http://www.theatlantic.com/technology/archive/2013/01/the-never-before-told-story-of-the-worlds-first-computer-art-its-a-sexy-dame/267439/' add_response = self.reader_client.add_bookmark(self.url) self.assertTrue(add_response.status_code in [201, 202]) def tearDown(self): """ Remove all added bookmarks. """ for bm in self.reader_client.get_bookmarks().json()['bookmarks']: del_response = self.reader_client.delete_bookmark(bm['id']) self.assertEqual(del_response.status_code, 204) def test_get_bookmark(self): """ Test getting one bookmark by id """ bookmark_id = self._get_bookmark_data()['id'] bm_response = self.reader_client.get_bookmark(bookmark_id) self.assertEqual(bm_response.status_code, 200) some_expected_keys = set(['article', 'user_id', 'favorite', 'id']) received_keys = set(bm_response.json().keys()) self.assertTrue(some_expected_keys.issubset(received_keys)) def test_bookmark_tag_functionality(self): """ Test adding, fetching and deleting tags on a bookmark. """ bookmark_id = self._get_bookmark_data()['id'] # test getting empty tags tag_response = self.reader_client.get_bookmark_tags(bookmark_id) self.assertEqual(tag_response.status_code, 200) self.assertEqual(len(tag_response.json()['tags']), 0) # test adding tags tags = ['tag', 'another tag'] tag_string = ', '.join(tags) tag_add_response = \ self.reader_client.add_tags_to_bookmark(bookmark_id, tag_string) self.assertEqual(tag_add_response.status_code, 202) # re-fetch tags. should have 2 retag_response = self.reader_client.get_bookmark_tags(bookmark_id) self.assertEqual(retag_response.status_code, 200) self.assertEqual(len(retag_response.json()['tags']), 2) for tag in retag_response.json()['tags']: self.assertTrue(tag['text'] in tags) # test getting tags for user user_tag_resp = self.reader_client.get_tags() self.assertEqual(user_tag_resp.status_code, 200) self.assertEqual(len(user_tag_resp.json()['tags']), 2) for tag in user_tag_resp.json()['tags']: self.assertTrue(tag['text'] in tags) # test getting a single tag while we're here single_tag_resp = self.reader_client.get_tag(tag['id']) self.assertEqual(single_tag_resp.status_code, 200) self.assertTrue('applied_count' in single_tag_resp.json()) self.assertTrue('id' in single_tag_resp.json()) self.assertTrue('text' in single_tag_resp.json()) # delete tags for tag in retag_response.json()['tags']: del_response = self.reader_client.delete_tag_from_bookmark( bookmark_id, tag['id']) self.assertEqual(del_response.status_code, 204) # check that tags are gone tag_response = self.reader_client.get_bookmark_tags(bookmark_id) self.assertEqual(tag_response.status_code, 200) self.assertEqual(len(tag_response.json()['tags']), 0) def _get_bookmark_data(self): """ Convenience method to get a single bookmark's data. """ bm_response = self.reader_client.get_bookmarks() self.assertEqual(bm_response.status_code, 200) bm_response_json = bm_response.json() self.assertTrue(len(bm_response_json['bookmarks']) > 0) return bm_response_json['bookmarks'][0]