Files
django-nepkit/django_nepkit/tests/test_address_normalization.py
T
sankalp ef8c75bf36 feat: implement address normalization and demo
- 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.
2026-01-30 20:23:18 +05:45

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"