1
1
import pytest
2
2
from url_matcher import Patterns
3
3
4
- from tests .po_lib import POTopLevel1 , POTopLevel2 , POTopLevelOverriden2
4
+ from tests .po_sub_lib import POSubLib
5
+ from tests .po_lib import POTopLevel1 , POTopLevel2 , POTopLevelOverriden2 , secondary_registry
5
6
from tests .po_lib .a_module import POModule
6
7
from tests .po_lib .nested_package import PONestedPkg
7
8
from tests .po_lib .nested_package .a_nested_module import (
8
9
PONestedModule ,
9
10
PONestedModuleOverridenSecondary ,
10
11
)
11
- from web_poet .overrides import find_page_object_overrides , PageObjectRegistry
12
+ from web_poet .overrides import PageObjectRegistry , default_registry
12
13
13
14
14
15
POS = {POTopLevel1 , POTopLevel2 , POModule , PONestedPkg , PONestedModule }
15
16
16
17
18
+ def test_list_page_objects_all ():
19
+ rules = default_registry .get_overrides ()
20
+
21
+ page_objects = {po .use for po in rules }
22
+
23
+ # Ensure that ALL Override Rules are returned as long as the given
24
+ # registry's @handle_urls annotation was used.
25
+ assert page_objects == POS .union ({POSubLib })
26
+ for rule in rules :
27
+ assert rule .instead_of == rule .use .expected_overrides , rule .use
28
+ assert rule .for_patterns == rule .use .expected_patterns , rule .use
29
+ assert rule .meta == rule .use .expected_meta , rule .use
30
+
31
+
17
32
def test_list_page_objects_from_pkg ():
18
33
"""Tests that metadata is extracted properly from the po_lib package"""
19
- rules = find_page_object_overrides ("tests.po_lib" )
20
- assert {po .use for po in rules } == POS
34
+ rules = default_registry .get_overrides_from_module ("tests.po_lib" )
35
+ page_objects = {po .use for po in rules }
36
+
37
+ # Ensure that the "tests.po_lib", which imports another module named
38
+ # "tests.po_sub_lib" which contains @handle_urls decorators, does not
39
+ # retrieve the override rules from the external package.
40
+ assert POSubLib not in page_objects
21
41
42
+ assert page_objects == POS
22
43
for rule in rules :
23
44
assert rule .instead_of == rule .use .expected_overrides , rule .use
24
45
assert rule .for_patterns == rule .use .expected_patterns , rule .use
25
46
assert rule .meta == rule .use .expected_meta , rule .use
26
47
27
48
28
49
def test_list_page_objects_from_module ():
29
- rules = find_page_object_overrides ("tests.po_lib.a_module" )
50
+ rules = default_registry . get_overrides_from_module ("tests.po_lib.a_module" )
30
51
assert len (rules ) == 1
31
52
rule = rules [0 ]
32
53
assert rule .use == POModule
@@ -35,22 +56,22 @@ def test_list_page_objects_from_module():
35
56
36
57
37
58
def test_list_page_objects_from_empty_module ():
38
- rules = find_page_object_overrides ("tests.po_lib.an_empty_module" )
59
+ rules = default_registry . get_overrides_from_module ("tests.po_lib.an_empty_module" )
39
60
assert len (rules ) == 0
40
61
41
62
42
63
def test_list_page_objects_from_empty_pkg ():
43
- rules = find_page_object_overrides ("tests.po_lib.an_empty_package" )
64
+ rules = default_registry . get_overrides_from_module ("tests.po_lib.an_empty_package" )
44
65
assert len (rules ) == 0
45
66
46
67
47
68
def test_list_page_objects_from_unknown_module ():
48
69
with pytest .raises (ImportError ):
49
- find_page_object_overrides ("tests.po_lib.unknown_module" )
70
+ default_registry . get_overrides_from_module ("tests.po_lib.unknown_module" )
50
71
51
72
52
73
def test_list_page_objects_from_imported_registry ():
53
- rules = find_page_object_overrides ("tests.po_lib" , registry_name = "secondary " )
74
+ rules = secondary_registry . get_overrides_from_module ("tests.po_lib" )
54
75
assert len (rules ) == 2
55
76
rule_for = {po .use : po for po in rules }
56
77
@@ -63,16 +84,7 @@ def test_list_page_objects_from_imported_registry():
63
84
assert pones .instead_of == PONestedModuleOverridenSecondary
64
85
65
86
66
- def test_list_page_objects_from_non_existing_registry ():
67
- assert find_page_object_overrides ("tests.po_lib" , registry_name = "not-exist" ) == []
68
-
69
-
70
87
def test_cmd ():
71
88
from web_poet .__main__ import main
72
89
73
90
assert main (["tests.po_lib" ]) is None
74
-
75
-
76
- def test_registry_repr ():
77
- registry = PageObjectRegistry (name = "test" )
78
- assert "name='test'" in str (registry )
0 commit comments