11import pytest
22from url_matcher import Patterns
33
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
56from tests .po_lib .a_module import POModule
67from tests .po_lib .nested_package import PONestedPkg
78from tests .po_lib .nested_package .a_nested_module import (
89 PONestedModule ,
910 PONestedModuleOverridenSecondary ,
1011)
11- from web_poet .overrides import find_page_object_overrides , PageObjectRegistry
12+ from web_poet .overrides import PageObjectRegistry , default_registry
1213
1314
1415POS = {POTopLevel1 , POTopLevel2 , POModule , PONestedPkg , PONestedModule }
1516
1617
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+
1732def test_list_page_objects_from_pkg ():
1833 """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
2141
42+ assert page_objects == POS
2243 for rule in rules :
2344 assert rule .instead_of == rule .use .expected_overrides , rule .use
2445 assert rule .for_patterns == rule .use .expected_patterns , rule .use
2546 assert rule .meta == rule .use .expected_meta , rule .use
2647
2748
2849def 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" )
3051 assert len (rules ) == 1
3152 rule = rules [0 ]
3253 assert rule .use == POModule
@@ -35,22 +56,22 @@ def test_list_page_objects_from_module():
3556
3657
3758def 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" )
3960 assert len (rules ) == 0
4061
4162
4263def 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" )
4465 assert len (rules ) == 0
4566
4667
4768def test_list_page_objects_from_unknown_module ():
4869 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" )
5071
5172
5273def 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" )
5475 assert len (rules ) == 2
5576 rule_for = {po .use : po for po in rules }
5677
@@ -63,16 +84,7 @@ def test_list_page_objects_from_imported_registry():
6384 assert pones .instead_of == PONestedModuleOverridenSecondary
6485
6586
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-
7087def test_cmd ():
7188 from web_poet .__main__ import main
7289
7390 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