import unittest from crawler_platform.app.config.loader import load_project_config from crawler_platform.app.core.crawler.fetchers import RequestsFetcher from crawler_platform.app.domains.perfume.extractor import PerfumeRuleBasedExtractor class SmokeTest(unittest.TestCase): def test_config_fetch_and_extract_without_network(self): config = load_project_config("configs/perfume_subscription.yaml") fetch_result = RequestsFetcher().fetch("tests/fixtures/sample_perfume.html") bundle = PerfumeRuleBasedExtractor().extract(fetch_result.html, config) self.assertEqual(config.domain, "perfume") self.assertEqual(fetch_result.status_code, 200) self.assertIn("hasTopNote", {claim.predicate for claim in bundle.claims}) self.assertIn("hasPrice", {claim.predicate for claim in bundle.claims}) if __name__ == "__main__": unittest.main()