import json import pytest from scripts.collect_copyright_precedents import extract_detail, title_candidate from scripts.validate_precedents import validate_engine_labels def test_extract_detail_uses_primary_case_not_referenced_case(): item = { "board_id": "1", "title": "소설의 실질적 유사성 판단", "registered_date": "2026-01-01", "source_url": "https://www.copyright.or.kr/example", } body = """ 대법원_2024다12345_판결서.pdf

대법원 2026. 1. 1. 선고 2024다12345 판결

판시사항

복제권과 실질적 유사성

참조판례 대법원 2012다73493 판결

""" rows = extract_detail(item, body) assert [row["case_id"] for row in rows] == ["2024다12345"] assert "2012다73493" not in {row["case_id"] for row in rows} def test_title_candidate_rejects_false_keyword_substrings(): assert not title_candidate("직권파기사유로 원심판결을 파기한 사건") assert not title_candidate("인용상표와 등록상표의 유사성 판단") assert title_candidate("수험서의 저작물성과 실질적 유사성 판단") def test_engine_label_validator_rejects_unmatchable_record(tmp_path): path = tmp_path / "precedents.jsonl" path.write_text(json.dumps({ "case_id": "2024다12345", "legal_tags": [], "work_types": ["literary"], "criteria": [], }), encoding="utf-8") with pytest.raises(ValueError, match="법적 태그 없음"): validate_engine_labels(path)