2323from jobsearch_rag .adapters .base import JobBoardAdapter , JobListing
2424from jobsearch_rag .adapters .indeed import IndeedAdapter
2525from jobsearch_rag .adapters .linkedin import LinkedInAdapter
26+ from jobsearch_rag .adapters .ports import JobBoardPort
2627from jobsearch_rag .adapters .registry import AdapterRegistry
2728from jobsearch_rag .adapters .weworkremotely import WeWorkRemotelyAdapter
2829from tests .conftest import adapter_override
3233# ---------------------------------------------------------------------------
3334
3435
35- def _make_adapter_class (name : str ) -> type [JobBoardAdapter ]:
36+ def _make_adapter_class (name : str ) -> type [JobBoardPort ]:
3637 """Dynamically create a concrete adapter class for testing."""
3738
3839 class _TestAdapter (JobBoardAdapter ):
@@ -128,7 +129,7 @@ def test_registered_adapter_is_retrievable_by_board_name(self) -> None:
128129 adapter = AdapterRegistry .get ("ziprecruiter" )
129130
130131 # Then: returns a working adapter instance
131- assert isinstance (adapter , JobBoardAdapter ), "Should return a JobBoardAdapter instance"
132+ assert isinstance (adapter , JobBoardPort ), "Should return a JobBoardPort instance"
132133 assert adapter .board_name == "ziprecruiter" , "Board name should match"
133134
134135 def test_retrieving_unregistered_board_name_raises_value_error_with_name (self ) -> None :
@@ -467,7 +468,7 @@ class TestStubAdapterContract:
467468 Never: Patch adapter internals
468469 """
469470
470- _STUB_BOARDS : typing .ClassVar [list [tuple [str , type [JobBoardAdapter ]]]] = [
471+ _STUB_BOARDS : typing .ClassVar [list [tuple [str , type [JobBoardPort ]]]] = [
471472 ("linkedin" , LinkedInAdapter ),
472473 ("indeed" , IndeedAdapter ),
473474 ("weworkremotely" , WeWorkRemotelyAdapter ),
@@ -479,7 +480,7 @@ class TestStubAdapterContract:
479480 ids = ["linkedin" , "indeed" , "weworkremotely" ],
480481 )
481482 def test_stub_adapter_reports_correct_board_name (
482- self , expected_name : str , adapter_cls : type [JobBoardAdapter ]
483+ self , expected_name : str , adapter_cls : type [JobBoardPort ]
483484 ) -> None :
484485 """
485486 GIVEN a stub adapter instance
@@ -521,7 +522,7 @@ def test_linkedin_adapter_overrides_rate_limit_for_aggressive_detection(
521522 )
522523 @pytest .mark .xfail (reason = "Adapter not yet implemented" )
523524 def test_stub_authenticate_completes_on_valid_session (
524- self , _name : str , adapter_cls : type [JobBoardAdapter ]
525+ self , _name : str , adapter_cls : type [JobBoardPort ]
525526 ) -> None :
526527 """
527528 GIVEN a valid browser session
@@ -542,7 +543,7 @@ def test_stub_authenticate_completes_on_valid_session(
542543 )
543544 @pytest .mark .xfail (reason = "Adapter not yet implemented" )
544545 def test_stub_search_returns_list_of_job_listings (
545- self , _name : str , adapter_cls : type [JobBoardAdapter ]
546+ self , _name : str , adapter_cls : type [JobBoardPort ]
546547 ) -> None :
547548 """
548549 GIVEN a valid browser session
@@ -568,7 +569,7 @@ def test_stub_search_returns_list_of_job_listings(
568569 )
569570 @pytest .mark .xfail (reason = "Adapter not yet implemented" )
570571 def test_stub_extract_detail_populates_full_text (
571- self , _name : str , adapter_cls : type [JobBoardAdapter ]
572+ self , _name : str , adapter_cls : type [JobBoardPort ]
572573 ) -> None :
573574 """
574575 GIVEN a shallow listing without full_text
0 commit comments