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()
|