def generateGIFpage(): if request.method == 'POST': print(request.form.errors) if request.form.get('gifLocation'): gifLocation = request.form.get('gifLocation') giphyobj = Giphy('iTmKRrpWJUCpn6nWMSIp42gmkXA6hpfh') # response (below) is the URL for our giphy upload response = giphyobj.upload([], gifLocation, username="******") return render_template('upload.html', response=response) return redirect(url_for('homepage'))
class GiphyTestCase(TestCase): def setUp(self): self.g = Giphy() def test_endpoint(self): assert self.g._endpoint('search') == 'http://api.giphy.com/v1/gifs/search' def test_check_or_raise_raises(self): self.assertRaises(GiphyApiException, self.g._check_or_raise, {'status': 400}) def test_check_or_raise_no_status(self): self.assertRaises(GiphyApiException, self.g._check_or_raise, {}) def test_check_or_raise(self): assert self.g._check_or_raise({'status': 200}) is None @patch('giphypop.requests') def test_fetch_error_raises(self, requests): # api returns error messages sorta like... err = {'meta': {'error_type': 'ERROR', 'code': 400, 'error_message': ''}} requests.get.return_value = requests requests.json.return_value = err self.assertRaises(GiphyApiException, self.g._fetch, 'foo') @patch('giphypop.requests') def test_fetch(self, requests): data = {'data': FAKE_DATA, 'meta': {'status': 200}} requests.get.return_value = requests requests.json.return_value = data assert self.g._fetch('foo') == data def fake_search_fetch(self, num_results, pages=3): self.g._fetch = Mock() self.g._fetch.return_value = { 'data': [FAKE_DATA for x in range(num_results)], 'pagination': { 'total_count': pages * num_results, 'count': 25, 'offset': 0 }, 'meta': {'status': 200} } def fake_trending_fetch(self, num_results, pages=3): self.g._fetch = Mock() self.g._fetch.return_value = { 'data': [FAKE_DATA for x in range(num_results)], 'pagination': { 'total_count': pages * num_results, 'count': 25, 'offset': 0 }, 'meta': {'status': 200} } def fake_fetch(self, result=FAKE_DATA): self.g._fetch = Mock() self.g._fetch.return_value = { 'data': result or None, 'meta': {'status': 200} } def test_search_no_results(self): self.fake_search_fetch(0, pages=1) results = list(self.g.search('foo')) assert len(results) == 0 def test_search_respects_hard_limit(self): self.fake_search_fetch(25) results = list(self.g.search('foo', limit=10)) assert len(results) == 10 def test_search_handles_pages(self): self.fake_search_fetch(25) results = list(self.g.search('foo', limit=50)) assert len(results) == 50 def test_search_correctly_pages(self): self.fake_search_fetch(25, pages=2) list(self.g.search('foo', limit=50)) calls = self.g._fetch.call_args_list assert len(calls) == 2 assert calls[0][1]['offset'] == 0 assert calls[1][1]['offset'] == 25 def test_search_no_limit_returns_all(self): self.fake_search_fetch(25) results = list(self.g.search('foo', limit=None)) assert len(results) == 75 def test_search_list_returns_list(self): self.fake_search_fetch(25) results = self.g.search_list('foo', limit=10) assert isinstance(results, list) assert len(results) == 10 def test_search_with_phrase_hyphenates(self): self.fake_search_fetch(0, pages=1) self.g.search(phrase='foo bar baz') assert self.g._fetch.called_with(q='foo-bar-baz') def test_translate_with_phrase_hyphenates(self): self.fake_fetch() self.g.translate(phrase='foo bar baz') assert self.g._fetch.called_with(s='foo-bar-baz') def test_translate(self): self.fake_fetch() assert isinstance(self.g.translate('foo'), GiphyImage) assert self.g._fetch.called_with('translate') def test_trending_no_results(self): self.fake_trending_fetch(0, pages=1) results = list(self.g.trending()) assert len(results) == 0 def test_trending_respects_hard_limit(self): self.fake_trending_fetch(25) results = list(self.g.trending(limit=10)) assert len(results) == 10 def test_trending_handles_pages(self): self.fake_trending_fetch(25) results = list(self.g.trending(limit=50)) assert len(results) == 50 def test_trending_correctly_pages(self): self.fake_trending_fetch(25, pages=2) list(self.g.trending(limit=50)) calls = self.g._fetch.call_args_list assert len(calls) == 2 assert calls[0][1]['offset'] == 0 assert calls[1][1]['offset'] == 25 def test_trending_no_limit_returns_all(self): self.fake_trending_fetch(25) results = list(self.g.trending(limit=None)) assert len(results) == 75 def test_trending_list_returns_list(self): self.fake_trending_fetch(25) results = self.g.trending_list(limit=10) assert isinstance(results, list) assert len(results) == 10 def test_gif(self): self.fake_fetch() assert isinstance(self.g.gif('foo'), GiphyImage) assert self.g._fetch.called_with('foo') def test_screensaver(self): self.fake_fetch() assert isinstance(self.g.screensaver(), GiphyImage) def test_screensaver_passes_tag(self): self.fake_fetch() self.g.screensaver('foo') assert self.g._fetch.called_with(tag='foo') def test_random_gif(self): self.fake_fetch() assert isinstance(self.g.random_gif(), GiphyImage) def test_translate_returns_none(self): self.fake_fetch(result=None) assert self.g.translate('foo') is None def test_gif_returns_none(self): self.fake_fetch(result=None) assert self.g.gif('foo') is None def test_screensaver_returns_none(self): self.fake_fetch(result=None) assert self.g.screensaver('foo') is None def test_translate_raises_strict(self): self.fake_fetch(result=None) self.assertRaises(GiphyApiException, self.g.translate, 'foo', strict=True) def test_gif_returns_raises_strict(self): self.fake_fetch(result=None) self.assertRaises(GiphyApiException, self.g.gif, 'foo', strict=True) def test_screensaver_raises_strict(self): self.fake_fetch(result=None) self.assertRaises(GiphyApiException, self.g.screensaver, 'foo', strict=True) def test_strict_for_all(self): self.g = Giphy(strict=True) self.fake_fetch(result=None) self.assertRaises(GiphyApiException, self.g.translate, 'foo', strict=False) self.assertRaises(GiphyApiException, self.g.gif, 'foo', strict=False) self.assertRaises(GiphyApiException, self.g.screensaver, 'foo', strict=False) @patch('requests.post') def test_upload(self, post): resp = Mock() resp.json.return_value = { "data": {"id": "testid"}, "meta": {"status": 200} } post.return_value = resp self.g.gif = Mock(return_value="test") self.assertEqual(self.g.upload(['foo', 'bar'], '/dev/null'), "test") self.assertTrue(post.called) self.g.gif.assert_called_with("testid")