@@ -512,21 +512,6 @@ def test_address_creation_invalid_state() -> None:
512512 )
513513
514514
515- def test_address_creation_invalid_postcode () -> None :
516- """Test creation with invalid postcode"""
517- with pytest .raises (ValidationError ):
518- Address (
519- ** {
520- "addr:housenumber" : "1200-29" ,
521- "addr:street" : "North Spring Street" ,
522- "addr:unit" : "B" ,
523- "addr:city" : "Los Angeles" ,
524- "addr:state" : "CA" ,
525- "addr:postcode" : "9001" , # Invalid postcode
526- }
527- )
528-
529-
530515def test_address_creation_optional_fields () -> None :
531516 """Test creation with optional fields missing"""
532517 address = Address (** {"addr:housenumber" : 200 , "addr:street" : "North Spring Street" })
@@ -556,3 +541,63 @@ def test_address_alias_handling() -> None:
556541 assert address .addr_city == "Los Angeles"
557542 assert address .addr_state == "CA"
558543 assert address .addr_postcode == "90012"
544+
545+
546+ def test_address_model_aliases ():
547+ """Test Address model field aliases."""
548+ addr = Address (** {"addr:housenumber" : "123" , "addr:street" : "Main St" })
549+
550+ # Test model_dump with aliases
551+ dumped = addr .model_dump (exclude_none = True , by_alias = True )
552+ assert "addr:housenumber" in dumped
553+ assert "addr:street" in dumped
554+ assert dumped ["addr:housenumber" ] == "123"
555+ assert dumped ["addr:street" ] == "Main St"
556+
557+ # Test creation with invalid state (too long)
558+ with pytest .raises (ValidationError ):
559+ Address (
560+ ** {
561+ "addr:housenumber" : "1200-29" ,
562+ "addr:street" : "North Spring Street" ,
563+ "addr:unit" : "B" ,
564+ "addr:city" : "Los Angeles" ,
565+ "addr:state" : "CAL" , # Invalid state
566+ "addr:postcode" : "90012-4801" ,
567+ }
568+ )
569+
570+
571+ def test_collapse_list_preserves_order ():
572+ """Test that collapse_list preserves the order of first occurrence."""
573+ input_list = ["c" , "a" , "b" , "a" , "c" , "d" ]
574+ expected = ["c" , "a" , "b" , "d" ]
575+ assert collapse_list (input_list ) == expected
576+
577+
578+ def test_address_creation_invalid_postcode () -> None :
579+ """Test creation with invalid postcode"""
580+ with pytest .raises (ValidationError ):
581+ Address (
582+ ** {
583+ "addr:housenumber" : "1200-29" ,
584+ "addr:street" : "North Spring Street" ,
585+ "addr:unit" : "B" ,
586+ "addr:city" : "Los Angeles" ,
587+ "addr:state" : "CA" ,
588+ "addr:postcode" : "9001" , # Invalid postcode
589+ }
590+ )
591+
592+
593+ def test_get_address_comprehensive_cleaning ():
594+ """Test get_address with comprehensive address cleaning."""
595+ # Test address that exercises multiple cleaning functions
596+ test_address = "123A Main St., Apt B, New York, NY 12345-0000"
597+ result , removed = get_address (test_address )
598+
599+ assert result ["addr:housenumber" ] == "123"
600+ assert result ["addr:unit" ] == "A"
601+ assert "Main" in result ["addr:street" ]
602+ assert "Street" in result ["addr:street" ]
603+ assert result ["addr:postcode" ] == "12345" # Should remove -0000
0 commit comments