예제 #1
0
class TestSpansishDict:
    def setup_method(self, method):
        self.dict = SpanishDict()
        self.word = 'Spanish'
        self.timeout = 5
        with open(CONTENT_TEST_DATA, 'r') as f:
            self.content = f.read()
        with open(RAW_HTML_TEST_DATA, 'r') as f:
            self.raw_html = f.read()

    def teardown_method(self, method):
        del self.dict

    def test_provider(self):
        assert self.dict.provider == 'spanish'

    def test_title(self):
        assert self.dict.title == 'SpanishDict'

    def test__get_url(self):
        url = 'http://www.spanishdict.com/translate/{}'.format(self.word)
        assert url == self.dict._get_url(self.word)

    def test_show(self):
        content = self.content
        r = Record(word=self.word, content=content, source=self.dict.provider)

        # god bless this method, hope that it do not raise any exception
        self.dict.show(r)

    @patch('zdict.dictionaries.spanish.Record')
    def test_query_normal(self, Record):
        self.dict._get_raw = Mock(return_value=self.raw_html)
        self.dict.query(self.word, self.timeout)
        Record.assert_called_with(
            word=self.word,
            content=json.dumps(json.loads(self.content)),
            source='spanish',
        )

    def test_query_not_found(self):
        self.dict._get_raw = Mock(return_value='<div class="card"><div/>')
        with raises(NotFoundError):
            self.dict.query(self.word, self.timeout)
        self.dict._get_raw.assert_called_with(self.word, self.timeout)