File size: 1,698 Bytes
cfd3735
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
"""Integration test for Wikipedia API Wrapper."""
from typing import List

import pytest

from langchain.schema import Document
from langchain.utilities import WikipediaAPIWrapper


@pytest.fixture
def api_client() -> WikipediaAPIWrapper:
    return WikipediaAPIWrapper()


def test_run_success(api_client: WikipediaAPIWrapper) -> None:
    output = api_client.run("HUNTER X HUNTER")
    assert "Yoshihiro Togashi" in output


def test_run_no_result(api_client: WikipediaAPIWrapper) -> None:
    output = api_client.run(
        "NORESULTCALL_NORESULTCALL_NORESULTCALL_NORESULTCALL_NORESULTCALL_NORESULTCALL"
    )
    assert "No good Wikipedia Search Result was found" == output


def assert_docs(docs: List[Document], all_meta: bool = False) -> None:
    for doc in docs:
        assert doc.page_content
        assert doc.metadata
        main_meta = {"title", "summary"}
        assert set(doc.metadata).issuperset(main_meta)
        if all_meta:
            assert len(set(doc.metadata)) > len(main_meta)
        else:
            assert len(set(doc.metadata)) == len(main_meta)


def test_load_success(api_client: WikipediaAPIWrapper) -> None:
    docs = api_client.load("HUNTER X HUNTER")
    assert len(docs) > 1
    assert_docs(docs, all_meta=False)


def test_load_success_all_meta(api_client: WikipediaAPIWrapper) -> None:
    api_client.load_all_available_meta = True
    docs = api_client.load("HUNTER X HUNTER")
    assert len(docs) > 1
    assert_docs(docs, all_meta=True)


def test_load_no_result(api_client: WikipediaAPIWrapper) -> None:
    docs = api_client.load(
        "NORESULTCALL_NORESULTCALL_NORESULTCALL_NORESULTCALL_NORESULTCALL_NORESULTCALL"
    )
    assert not docs