def test_update_address(self): adapter = IShoppingSite(self.portal) data = {} self.assertEqual(adapter.update_address('address', data), u'First name is missing.') data = {'address_first_name': 'F|RST'} self.assertEqual(adapter.update_address('address', data), u'Last name is missing.') data = {'address_first_name': 'F|RST', 'address_last_name': 'LÄST'} self.assertEqual(adapter.update_address('address', data), u'Invalid e-mail address.') data = {'address_first_name': 'F|RST', 'address_last_name': 'LÄST', 'address_email': 'EMAIL'} self.assertEqual(adapter.update_address('address', data), u'Invalid e-mail address.') data = {'address_first_name': 'F|RST', 'address_last_name': 'LÄST', 'address_email': '*****@*****.**'} self.assertEqual(adapter.update_address('address', data), u'Street address is missing.') data = {'address_first_name': 'F|RST', 'address_last_name': 'LÄST', 'address_email': '*****@*****.**', 'address_street': 'STR€€T'} self.assertEqual(adapter.update_address('address', data), u'Post code is missing.') data = {'address_first_name': 'F|RST', 'address_last_name': 'LÄST', 'address_email': '*****@*****.**', 'address_street': 'STR€€T', 'address_post': 'PÖST'} self.assertEqual(adapter.update_address('address', data), u'City is missing.') data = {'address_first_name': 'F|RST', 'address_last_name': 'LÄST', 'address_email': '*****@*****.**', 'address_street': 'STR€€T', 'address_post': 'PÖST', 'address_city': 'C|TY'} self.assertEqual(adapter.update_address('address', data), u'Phone number is missing.') data = {'address_first_name': 'F|RST', 'address_last_name': 'LÄST', 'address_email': '*****@*****.**', 'address_street': 'STR€€T', 'address_city': 'C|TY', 'address_post': 'PÖST', 'address_phone': 'PHÖNE'} self.assertIsNone(adapter.update_address('address', data)) adapter.get_address = mock.Mock(return_value=None) adapter.update_cart = mock.Mock() self.assertIsNone(adapter.update_address('address', data)) adapter.update_cart.assert_called_with('address', { 'city': 'C|TY', 'email': '*****@*****.**', 'first_name': 'F|RST', 'last_name': 'LÄST', 'phone': 'PHÖNE', 'post': 'PÖST', 'street': 'STR€€T', }) 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.assertIsNone(adapter.update_address('address', data)) adapter.update_cart.assert_called_with('address', { 'city': 'C|TY', 'email': '*****@*****.**', 'first_name': 'F|RST', 'last_name': 'LÄST', 'phone': 'PHÖNE', 'post': 'PÖST', 'street': 'STR€€T', })
def test_clean_articles_in_cart(self, clean_articles_in_cart, IStock): article1 = self.create_content('collective.cart.core.Article') uuid1 = IUUID(article1) article2 = self.create_content('collective.cart.core.Article') uuid2 = IUUID(article2) clean_articles_in_cart.return_value = {uuid1: {}, uuid2: {}} IStock().stock = 0 instance = IShoppingSite(self.portal) instance.update_cart = mock.Mock() self.assertEqual(instance.clean_articles_in_cart(), {}) instance.update_cart.assert_called_with('articles', {})
def test_update_shipping_method(self): adapter = IShoppingSite(self.portal) self.assertIsNone(adapter.shipping_method()) adapter.update_shipping_method() self.assertIsNone(adapter.shipping_method()) session = adapter.getSessionData(create=True) session.set('collective.cart.core', {'articles': { '1': {'gross': self.money('10.00'), 'quantity': 2, 'vat_rate': 24.0} }}) adapter.update_shipping_method() self.assertIsNone(adapter.shipping_method()) alsoProvides(self.portal, IShoppingSiteRoot) container = self.create_content('collective.cart.shipping.ShippingMethodContainer') shippingmethod1 = self.create_atcontent('ShippingMethod', container, id='shippingmethod1', vat=self.decimal('24.00')) uuid1 = IUUID(shippingmethod1) adapter.update_shipping_method() self.assertEqual(adapter.shipping_method(), { 'gross': None, 'max_delivery_days': None, 'uuid': uuid1, 'title': '', 'min_delivery_days': None, 'vat_rate': self.decimal('24.00'), 'net': None, 'vat': None, 'weight_dimension_rate': 250.0 }) articles = {'1': {'gross': self.money('10.00'), 'quantity': 2, 'weight': 100.0, 'depth': 10.0, 'height': 20.0, 'width': 30.0, 'vat_rate': 24.0}} adapter.update_cart('articles', articles) adapter.update_shipping_method() self.assertEqual(adapter.shipping_method(), { 'gross': self.money('3.00'), 'max_delivery_days': None, 'uuid': uuid1, 'title': '', 'min_delivery_days': None, 'vat_rate': self.decimal('24.00'), 'net': self.money('2.28'), 'vat': self.money('0.72'), 'weight_dimension_rate': 250.0 }) articles = {'1': {'gross': self.money('10.00'), 'quantity': 4, 'weight': 100.0, 'depth': 10.0, 'height': 20.0, 'width': 30.0, 'vat_rate': 24.0}} adapter.update_cart('articles', articles) adapter.update_shipping_method(uuid1) self.assertEqual(adapter.shipping_method(), { 'gross': self.money('6.00'), 'max_delivery_days': None, 'uuid': uuid1, 'title': '', 'min_delivery_days': None, 'vat_rate': self.decimal('24.00'), 'net': self.money('4.56'), 'vat': self.money('1.44'), 'weight_dimension_rate': 250.0 }) articles = {'1': {'gross': self.money('10.00'), 'quantity': 2, 'weight': 100.0, 'depth': 10.0, 'height': 20.0, 'width': 30.0, 'vat_rate': 24.0}} adapter.update_cart('articles', articles) adapter.update_shipping_method('UUID') self.assertEqual(adapter.shipping_method(), { 'gross': self.money('3.00'), 'max_delivery_days': None, 'uuid': uuid1, 'title': '', 'min_delivery_days': None, 'vat_rate': self.decimal('24.00'), 'net': self.money('2.28'), 'vat': self.money('0.72'), 'weight_dimension_rate': 250.0 }) articles = {'1': {'gross': self.money('10.00'), 'quantity': 4, 'weight': 100.0, 'depth': 10.0, 'height': 20.0, 'width': 30.0, 'vat_rate': 24.0}} adapter.update_cart('articles', articles) adapter.update_shipping_method(uuid1) self.assertEqual(adapter.shipping_method(), { 'gross': self.money('6.00'), 'max_delivery_days': None, 'uuid': uuid1, 'title': '', 'min_delivery_days': None, 'vat_rate': self.decimal('24.00'), 'net': self.money('4.56'), 'vat': self.money('1.44'), 'weight_dimension_rate': 250.0 }) shippingmethod2 = self.create_atcontent('ShippingMethod', container, id='shippingmethod2', vat=self.decimal('24.00'), weight_dimension_rate=1.0) uuid2 = IUUID(shippingmethod2) articles = {'1': {'gross': self.money('10.00'), 'quantity': 2, 'weight': 100.0, 'depth': 10.0, 'height': 20.0, 'width': 30.0, 'vat_rate': 24.0}} adapter.update_cart('articles', articles) adapter.update_shipping_method(uuid2) self.assertEqual(adapter.shipping_method(), { 'gross': self.money('0.20'), 'max_delivery_days': None, 'uuid': uuid2, 'title': '', 'min_delivery_days': None, 'vat_rate': self.decimal('24.00'), 'net': self.money('0.15'), 'vat': self.money('0.05'), 'weight_dimension_rate': 1.0 }) articles = {'1': {'gross': self.money('10.00'), 'quantity': 4, 'weight': 100.0, 'depth': 10.0, 'height': 20.0, 'width': 30.0, 'vat_rate': 24.0}} adapter.update_cart('articles', articles) adapter.update_shipping_method(uuid1) self.assertEqual(adapter.shipping_method(), { 'gross': self.money('6.00'), 'max_delivery_days': None, 'uuid': uuid1, 'title': '', 'min_delivery_days': None, 'vat_rate': self.decimal('24.00'), 'net': self.money('4.56'), 'vat': self.money('1.44'), 'weight_dimension_rate': 250.0 }) adapter.remove_from_cart('shipping_method') self.assertIsNone(adapter.shipping_method()) adapter.update_shipping_method(uuid1) self.assertEqual(adapter.shipping_method(), { 'gross': self.money('6.00'), 'max_delivery_days': None, 'uuid': uuid1, 'title': '', 'min_delivery_days': None, 'vat_rate': self.decimal('24.00'), 'net': self.money('4.56'), 'vat': self.money('1.44'), 'weight_dimension_rate': 250.0 })