File: test_example.py

package info (click to toggle)
python-web-poet 0.23.2-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 908 kB
  • sloc: python: 6,112; makefile: 19
file content (51 lines) | stat: -rw-r--r-- 1,172 bytes parent folder | download | duplicates (3)
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
from attrs import define

from web_poet import ItemPage, default_registry, field, handle_urls
from web_poet.example import get_item


def _revert_add_rule():
    default_registry._rule_counter -= 1
    rule_id = list(default_registry._rules)[-1]
    default_registry._rules.pop(rule_id)
    default_registry._overrides_matchers[None].remove(rule_id)
    default_registry._item_matchers[None].remove(rule_id)


def test_async_to_item():
    @define
    class Item:
        foo: str

    try:

        @handle_urls("")
        class Page(ItemPage[Item]):
            @field
            async def foo(self):
                return "bar"

        item = get_item("file:///dev/null", Item)
        assert isinstance(item, Item)
        assert item.foo == "bar"
    finally:
        _revert_add_rule()


def test_sync_to_item():
    @define
    class Item:
        foo: str

    try:

        @handle_urls("")
        class Page(ItemPage[Item]):
            def to_item(self):
                return Item(foo="bar")

        item = get_item("file:///dev/null", Item)
        assert isinstance(item, Item)
        assert item.foo == "bar"
    finally:
        _revert_add_rule()