def test_is_address_filled(self):
        adapter = IShoppingSite(self.portal)
        self.assertFalse(adapter.is_address_filled('billing'))

        adapter.get_address = mock.Mock(return_value={})
        self.assertFalse(adapter.is_address_filled('billing'))

        names = ['city', 'last_name', 'first_name', 'email', 'phone', 'post', 'street']
        address = {}
        for name in names:
            address[name] = name.upper()

        adapter.get_address = mock.Mock(return_value=address)
        self.assertTrue(adapter.is_address_filled('billing'))

        del address['email']
        self.assertFalse(adapter.is_address_filled('billing'))
    def test_is_addresses_filled(self):
        adapter = IShoppingSite(self.portal)
        self.assertIsNone(adapter.is_addresses_filled())

        adapter.is_address_filled = mock.Mock(return_value=True)
        self.assertTrue(adapter.is_addresses_filled())
        self.assertEqual(adapter.is_address_filled.call_args_list, [(('billing',),), (('shipping',),)])

        adapter.billing_same_as_shipping = mock.Mock(return_value=True)
        self.assertTrue(adapter.is_addresses_filled())
        self.assertEqual(adapter.is_address_filled.call_args_list, [(('billing',),), (('shipping',),), (('billing',),)])