# -*- coding: utf-8 -*- from __future__ import unicode_literals import six import pytest import wolframalpha @pytest.fixture(scope='module') def temp_result(client): return client.query('30 deg C in deg F') def test_basic(temp_result): res = temp_result assert len(list(res.pods)) > 0 result, = res.results assert result.text == '86 °F (degrees Fahrenheit)' assert result.texts == ['86 °F (degrees Fahrenheit)'] def test_results_iterator(temp_result): """ A Result.results should be an iterator. """ res = temp_result next(res.results) def test_properties(temp_result): """ A result should have a number of properties. """ res = temp_result info = list(res.info) warnings = list(res.warnings) assert all(isinstance(item, wolframalpha.Warning) for item in warnings) assumptions = list(res.assumptions) assert all( isinstance(item, wolframalpha.Assumption) for item in assumptions ) pods = list(res.pods) assert all(isinstance(item, wolframalpha.Pod) for item in pods) assert len(info) == len(pods) + len(warnings) + len(assumptions) def test_pod_attributes(temp_result): pod = next(temp_result.pods) assert isinstance(pod.position, float) assert isinstance(pod.id, six.text_type) img = next(next(pod.subpod).img) assert isinstance(img.height, int) def test_invalid_app_id(): client = wolframalpha.Client('abcdefg') with pytest.raises(Exception): client.query('30 deg C in deg F')