from industries.adventure_travel import fields, prompt, schema def test_field_maps_have_matching_keys_for_shared_fields(): shared_keys = set(fields.STANDARD_FIELDS) & set(fields.NGS_FIELDS) assert 'tripName' in shared_keys assert 'majorityPrice' in shared_keys assert 'exclusiveAccess' not in fields.STANDARD_FIELDS assert 'exclusiveAccess' in fields.NGS_FIELDS def test_build_prompt_embeds_page_content_and_context(): page_data = {'text': 'Peru Classic 15 days itinerary...', 'tables': 'Day | Activity', 'url': 'https://intrepidtravel.com/peru'} result = prompt.build_prompt('Intrepid Travel', page_data, 'Inca Trail', 'Peru', 15, 'Classic') assert 'Intrepid Travel' in result assert 'Peru Classic 15 days itinerary' in result assert 'Day | Activity' in result assert 'Peru' in result assert '"exclusiveAccess"' not in result def test_build_prompt_includes_ngs_fields_when_flagged(): page_data = {'text': 'content', 'tables': '', 'url': 'https://example.com'} result = prompt.build_prompt('Competitor', page_data, 'Product', 'Peru', 10, 'NGS', is_ngs=True) assert '"exclusiveAccess"' in result assert '"groupLeader"' in result assert '"sustainability"' in result def test_build_prompt_handles_missing_page_data(): result = prompt.build_prompt('Competitor', None, 'Product', 'Peru', 10, 'Classic') assert '[PAGE CONTENT WILL BE INSERTED HERE]' in result assert '[COMPETITOR URL]' in result def test_inject_page_content_replaces_placeholders(): template = ( 'Scraped from Competitor tour page at: [COMPETITOR URL]\n' 'PAGE CONTENT:\n[PAGE CONTENT WILL BE INSERTED HERE]' ) page_data = {'text': 'Real scraped content', 'tables': '', 'url': 'https://intrepidtravel.com/peru'} result = prompt.inject_page_content(template, 'Competitor', page_data) assert 'Real scraped content' in result assert 'https://intrepidtravel.com/peru' in result assert '[COMPETITOR URL]' not in result def test_inject_page_content_appends_table_data(): template = 'PAGE CONTENT:\n[PAGE CONTENT WILL BE INSERTED HERE]\nat [COMPETITOR URL]' page_data = {'text': 'Base text', 'tables': 'Day | Meal', 'url': 'https://example.com'} result = prompt.inject_page_content(template, 'Competitor', page_data) assert 'TABLE DATA' in result assert 'Day | Meal' in result def test_ngs_schema_extends_standard_schema(): assert set(schema.STANDARD_SCHEMA).issubset(set(schema.NGS_SCHEMA)) assert 'exclusiveAccess' in schema.NGS_SCHEMA assert 'exclusiveAccess' not in schema.STANDARD_SCHEMA