[crawler]
This commit is contained in:
31
tests/test_perfume_extractor.py
Normal file
31
tests/test_perfume_extractor.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from crawler_platform.app.config.loader import ProjectConfig, SourceConfig
|
||||
from crawler_platform.app.domains.perfume.extractor import PerfumeRuleBasedExtractor
|
||||
|
||||
|
||||
def test_perfume_rule_based_extractor_maps_claims():
|
||||
config = ProjectConfig(
|
||||
project_name="perfume_subscription",
|
||||
domain="perfume",
|
||||
target_entities=["Perfume", "Brand", "Note"],
|
||||
fields=["name", "brand", "top_notes", "middle_notes", "base_notes"],
|
||||
sources=[SourceConfig(name="official_brand_site", trust_level=0.95)],
|
||||
ontology={"aliases": {"top_notes": "hasTopNote"}},
|
||||
)
|
||||
text = """
|
||||
Neroli Summer Eau de Parfum
|
||||
Brand: Example Maison
|
||||
Top notes: Bergamot, Neroli
|
||||
Middle notes: Jasmine
|
||||
Base notes: Musk
|
||||
A fresh daily perfume for summer office wear. Price $89.
|
||||
"""
|
||||
bundle = PerfumeRuleBasedExtractor().extract(text, config)
|
||||
predicates = {claim.predicate for claim in bundle.claims}
|
||||
entity_names = {entity.name for entity in bundle.entities}
|
||||
|
||||
assert "Neroli Summer Eau de Parfum" in entity_names
|
||||
assert "Bergamot" in entity_names
|
||||
assert "hasTopNote" in predicates
|
||||
assert "suitableForSeason" in predicates
|
||||
assert "hasPrice" in predicates
|
||||
|
||||
Reference in New Issue
Block a user