def test_fetch(self): """Test whether a list of questions is returned""" question = read_file('data/stackexchange/stackexchange_question') httpretty.register_uri(httpretty.GET, STACKEXCHANGE_QUESTIONS_URL, body=question, status=200) stack = StackExchange(site="stackoverflow", tagged="python", api_token="aaa", max_questions=1) questions = [question for question in stack.fetch(from_date=None)] self.assertEqual(questions[0]['origin'], 'stackoverflow') self.assertEqual(questions[0]['uuid'], '43953bd75d1d4dbedb457059acb4b79fcf6712a8') self.assertEqual(questions[0]['updated_on'], 1459975066.0) self.assertEqual(questions[0]['category'], 'question') self.assertEqual(questions[0]['tag'], 'stackoverflow') data = json.loads(question) self.assertDictEqual(questions[0]['data'], data['items'][0])
def test_fetch_from_cache(self): """ Test whether a list of questions is returned from cache """ question = read_file('data/stackexchange_question') httpretty.register_uri(httpretty.GET, STACKEXCHANGE_QUESTIONS_URL, body=question, status=200) # First, we fetch the bugs from the server, storing them # in a cache cache = Cache(self.tmp_path) stack = StackExchange(site="stackoverflow", tagged="python", api_token="aaa", max_questions=1, cache=cache) questions = [question for question in stack.fetch(from_date=None)] del questions[0]['timestamp'] # Now, we get the bugs from the cache. # The contents should be the same and there won't be # any new request to the server cache_questions = [ cache_question for cache_question in stack.fetch_from_cache() ] del cache_questions[0]['timestamp'] self.assertEqual(cache_questions, questions)
def test_fetch_empty(self): """Test whether a list of questions is returned""" # Required fields question = '{"total": 0, "page_size": 0, "quota_remaining": 0, "quota_max": 0, "has_more": false, "items": []}' httpretty.register_uri(httpretty.GET, STACKEXCHANGE_QUESTIONS_URL, body=question, status=200) stack = StackExchange(site="stackoverflow", tagged="python", api_token="aaa", max_questions=1) questions = [question for question in stack.fetch(from_date=None)] self.assertEqual(len(questions), 0)
def test_search_fields(self): """Test whether the search_fields is properly set""" question = read_file('data/stackexchange/stackexchange_question') httpretty.register_uri(httpretty.GET, STACKEXCHANGE_QUESTIONS_URL, body=question, status=200) stack = StackExchange(site="stackoverflow", tagged="python", api_token="aaa", max_questions=1) questions = [question for question in stack.fetch(from_date=None)] question = questions[0] self.assertEqual(stack.metadata_id(question['data']), question['search_fields']['item_id']) self.assertListEqual(question['data']['tags'], ['python', 'pandas']) self.assertEqual(question['data']['tags'], question['search_fields']['tags'])