from datetime import date from transcription.db.models import Person from transcription.ui.components.formatters import compact_date from transcription.ui.components.formatters import family_search_url from transcription.ui.components.formatters import google_maps_search_url from transcription.ui.components.formatters import person_selector_label def test_compact_date_prefers_exact_then_approximate_then_unknown(): assert compact_date(date(1924, 3, 2), "about 1924") == "1924-03-02" assert compact_date(None, "about 1924") == "about 1924" assert compact_date(None, " ") == "Unknown" def test_person_selector_label_disambiguates_without_changing_identity(): person = Person( full_name="Albert Edward Higgins", display_name="Hig", birth_date=date(1885, 1, 2), ) assert person_selector_label(person) == "Hig - Albert Edward Higgins (1885)" approximate = Person( full_name="Albert Edward Higgins", display_name="Hig", birth_date_raw="about 1912", ) assert person_selector_label(approximate) == "Hig - Albert Edward Higgins (1912)" def test_family_search_url_uses_fixed_person_details_route(): assert family_search_url("G8T4-MDQ") == ( "https://www.familysearch.org/tree/person/details/G8T4-MDQ" ) def test_google_maps_search_url_encodes_place_query(): assert google_maps_search_url("New York, NY") == ( "https://www.google.com/maps/search/?api=1&query=New+York%2C+NY" )