Example #1
0
def test_address_closest_store(mocked, street, city, region, zip):
    address = Address(street, city, region, zip)
    assert_that(
        address,
        has_properties(line1='700 Pennsylvania Avenue NW',
                       line2='Washington, DC, 20408'))

    store = address.closest_store()
    assert_that(
        store,
        has_properties(
            id='4336',
            data=has_entries(
                AddressDescription='1300 L St Nw\nWashington, DC 20005',
                AllowCarryoutOrders=True,
                AllowDeliveryOrders=True,
                HolidaysDescription='',
                HoursDescription='Su-Th 10:00am-1:00am\nFr-Sa 10:00am-2:00am',
                IsDeliveryStore=True,
                IsNEONow=False,
                IsOnlineCapable=True,
                IsOnlineNow=True,
                IsOpen=True,
                IsSpanish=False,
                LanguageLocationInfo=has_entries(es=None),
                LocationInfo=None,
                MaxDistance=0.8,
                MinDistance=0.8,
                Phone='202-639-8700',
                ServiceHoursDescription=has_entries(
                    Carryout='Su-Sa 10:00am-10:00pm',
                    Delivery='Su-Th 10:00am-1:00am\nFr-Sa 10:00am-2:00am'),
                ServiceIsOpen=has_entries(Carryout=True, Delivery=True),
                StoreID='4336')))
def parse_address(full_address):
    """
    Takes a full_address string and return a 2-tuple of (pizzapi Address, pizzapi Store)
    """
    # address_type = "{ address_type }"  # pizzapi doesn't support this yet
    addr_parts = usaddress.tag(full_address)[0]
    addr_line_one = " ".join([
        addr_parts.get("AddressNumber", ""),
        addr_parts.get("StreetNamePreDirectional", ""),
        addr_parts.get("StreetName", ""),
        addr_parts.get("StreetNamePostType", ""),
        addr_parts.get("OccupancyType", ""),
        addr_parts.get("OccupancyIdentifier", ""),
    ])
    address = Address(addr_line_one, addr_parts["PlaceName"],
                      addr_parts["StateName"], addr_parts["ZipCode"])
    store = address.closest_store()
    return address, store