- Add utility to parse raw address strings into structured Province, District, and Municipality data. - Support both English and Nepali (Devanagari) inputs with smart matching for character variations. - Implement comprehensive test suite for address normalization logic. - Add real-time address normalization demo to the example app using HTMX. - Update README with documentation and usage examples for the new utility.
69 lines
2.6 KiB
Python
69 lines
2.6 KiB
Python
from django_nepkit.utils import normalize_address
|
|
|
|
|
|
def test_normalize_address_empty():
|
|
assert normalize_address("") == {
|
|
"province": None,
|
|
"district": None,
|
|
"municipality": None,
|
|
}
|
|
assert normalize_address(None) == {
|
|
"province": None,
|
|
"district": None,
|
|
"municipality": None,
|
|
}
|
|
|
|
|
|
def test_normalize_address_english_basic():
|
|
# Kathmandu is a district and a municipality
|
|
result = normalize_address("Kathmandu")
|
|
assert result["district"] == "Kathmandu"
|
|
assert result["municipality"] == "Kathmandu Metropolitan City"
|
|
assert result["province"] == "Bagmati Province"
|
|
|
|
|
|
def test_normalize_address_english_full():
|
|
result = normalize_address("Pokhara, Kaski, Gandaki")
|
|
assert result["province"] == "Gandaki Province"
|
|
assert result["district"] == "Kaski"
|
|
assert result["municipality"] == "Pokhara Metropolitan City"
|
|
|
|
|
|
def test_normalize_address_nepali_basic():
|
|
result = normalize_address("काठमाडौं")
|
|
assert result["district"] == "काठमाडौं"
|
|
assert result["municipality"] == "काठमाडौँ महानगरपालिका"
|
|
assert result["province"] == "बागमती प्रदेश"
|
|
|
|
|
|
def test_normalize_address_nepali_full():
|
|
result = normalize_address("पोखरा, कास्की, गण्डकी")
|
|
assert result["province"] == "गण्डकी प्रदेश"
|
|
assert result["district"] == "कास्की"
|
|
assert result["municipality"] == "पोखरा महानगरपालिका"
|
|
|
|
|
|
def test_normalize_address_koshi_mapping():
|
|
# Test "Koshi" mapping to "Province 1" internally and then back to "Koshi Province"
|
|
result = normalize_address("Biratnagar, Koshi")
|
|
assert result["province"] == "Koshi Province"
|
|
assert result["municipality"] == "Biratnagar Metropolitan City"
|
|
|
|
result_ne = normalize_address("विराटनगर, कोशी")
|
|
assert result_ne["province"] == "कोशी प्रदेश"
|
|
assert result_ne["municipality"] == "विराटनगर महानगरपालिका"
|
|
|
|
|
|
def test_normalize_address_with_extra_info():
|
|
result = normalize_address("House No 123, Ward 4, Bharatpur, Chitwan")
|
|
assert result["district"] == "Chitawan"
|
|
assert result["municipality"] == "Bharatpur Metropolitan City"
|
|
assert result["province"] == "Bagmati Province"
|
|
|
|
|
|
def test_normalize_address_partial_tokens():
|
|
# "Lalitpur" matches both district and municipality
|
|
result = normalize_address("Lalitpur")
|
|
assert result["district"] == "Lalitpur"
|
|
assert result["municipality"] == "Lalitpur Metropolitan City"
|