def test_cart_article_listing(self): shopping_site = IShoppingSite(self.portal) self.assertEqual(shopping_site.cart_article_listing(), []) session = shopping_site.getSessionData(create=True) session.set('collective.cart.core', {'articles': {'1': 'ARTICLE1', '2': 'ARTICLE2'}}) self.assertEqual(shopping_site.cart_article_listing(), ['ARTICLE1', 'ARTICLE2'])
def add_to_cart(self, **kwargs): """Add Article to cart""" shopping_site = IShoppingSite(self.context) cart = shopping_site.cart() if cart is None: session = self.getSessionData(create=True) session.set("collective.cart.core", {}) else: session = self.getSessionData(create=False) articles = IShoppingSite(self.context).cart_articles() if not articles: articles = SessionArticles() uuid = IUUID(self.context) if uuid in articles: items = articles[uuid] self._update_existing_cart_article(items, **kwargs) else: items = { "id": uuid, "title": self.context.Title(), "description": self.context.Description(), "url": self.context.absolute_url(), } items.update(kwargs) articles[uuid] = items shopping_site.update_cart("articles", articles)
def test_cart(self): shopping_site = IShoppingSite(self.portal) self.assertIsNone(shopping_site.cart()) session = shopping_site.getSessionData(create=True) session.set('collective.cart.core', 'CART') self.assertEqual(shopping_site.cart(), 'CART')
def test_update_next_order_id(self, IOrderContainerAdapter): alsoProvides(self.portal, IShoppingSiteRoot) adapter = IShoppingSite(self.portal) adapter.update_next_order_id() self.assertFalse(IOrderContainerAdapter.called) self.create_content('collective.cart.core.OrderContainer') adapter.update_next_order_id() self.assertTrue(IOrderContainerAdapter().update_next_order_id.called)
def test_get_cart_article(self): shopping_site = IShoppingSite(self.portal) self.assertIsNone(shopping_site.get_cart_article('1')) session = shopping_site.getSessionData(create=True) session.set('collective.cart.core', {'articles': {'1': 'ARTICLE1', '2': 'ARTICLE2'}}) self.assertIsNone(shopping_site.get_cart_article('3')) self.assertEqual(shopping_site.get_cart_article('2'), 'ARTICLE2')
def test_cart_articles(self): shopping_site = IShoppingSite(self.portal) self.assertIsNone(shopping_site.cart_articles()) session = shopping_site.getSessionData(create=True) session.set('collective.cart.core', {}) self.assertIsNone(shopping_site.cart_articles()) session.set('collective.cart.core', {'articles': 'ARTICLES'}) self.assertEqual(shopping_site.cart_articles(), 'ARTICLES')
def test_get_order(self): adapter = IShoppingSite(self.portal) self.assertIsNone(adapter.get_order('1')) alsoProvides(self.portal, IShoppingSiteRoot) container = self.create_content('collective.cart.core.OrderContainer') self.assertIsNone(adapter.get_order('1')) order1 = self.create_content('collective.cart.core.Order', container, id='1') self.assertIsNone(adapter.get_order('2')) self.assertEqual(adapter.get_order('1'), order1)
def test_clear_cart(self): shopping_site = IShoppingSite(self.portal) self.assertIsNone(shopping_site.clear_cart()) session = shopping_site.getSessionData(create=True) session.set('collective.cart.core', {}) self.assertIsNone(shopping_site.clear_cart()) self.assertIsNone(session.get('collective.cart.core')) session.set('collective.cart.core', {'articles': {'1': 'ARTICLE1'}}) self.assertIsNone(shopping_site.clear_cart()) self.assertIsNone(session.get('collective.cart.core'))
def update(self): form = self.request.form uuid = form.get("form.buttons.RemoveArticle", None) if uuid is not None: authenticator = self.context.restrictedTraverse("@@authenticator") if not authenticator.verify(): raise Forbidden() shopping_site = IShoppingSite(self.context) shopping_site.remove_cart_articles(uuid) if not shopping_site.cart_articles(): current_base_url = self.context.restrictedTraverse("plone_context_state").current_base_url() return self.request.response.redirect(current_base_url)
def test_clean_articles_in_cart(self): from plone.uuid.interfaces import IUUID adapter = IShoppingSite(self.portal) self.assertIsNone(adapter.clean_articles_in_cart()) article1 = self.create_content('collective.cart.core.Article', id='1') article2 = self.create_content('collective.cart.core.Article', id='2') uuid1 = IUUID(article1) uuid2 = IUUID(article2) session = adapter.getSessionData(create=True) session.set('collective.cart.core', {'articles': {uuid1: 'ARTICLE1', uuid2: 'ARTICLE2'}}) self.assertEqual(adapter.clean_articles_in_cart(), {uuid1: 'ARTICLE1', uuid2: 'ARTICLE2'}) self.portal.manage_delObjects(['1', '2']) self.assertEqual(adapter.clean_articles_in_cart(), {})
def test_create_order(self): adapter = IShoppingSite(self.portal) self.assertIsNone(adapter.create_order()) order_container = self.create_content('collective.cart.core.OrderContainer') adapter.order_container = mock.Mock(return_value=order_container) article1 = { 'id': '1', 'title': 'Ärticle1', 'description': 'Description of Ärticle1', } cart_articles = {'1': article1} adapter.cart_articles = mock.Mock(return_value=cart_articles) adapter.update_next_order_id = mock.Mock() order1 = adapter.create_order() self.assertEqual(order1.id, '1') order_article1 = order1['1'] self.assertEqual(order_article1.title, article1['title']) self.assertEqual(order_article1.description, article1['description']) order3 = adapter.create_order('3') self.assertEqual(order3.id, '3')
def test_update_cart(self): adapter = IShoppingSite(self.portal) adapter.update_cart('name', 'NAME') self.assertIsNone(adapter.getSessionData(create=False)) session = adapter.getSessionData(create=True) session.set('collective.cart.core', {}) adapter.update_cart('name', 'NAME') self.assertEqual(session.get('collective.cart.core'), {'name': 'NAME'})
def test_remove_cart_articles(self): shopping_site = IShoppingSite(self.portal) session = shopping_site.getSessionData(create=True) session.set('collective.cart.core', {'articles': {'1': 'ARTICLE1', '2': 'ARTICLE2', '3': 'ARTICLE3'}}) self.assertEqual(shopping_site.remove_cart_articles('4'), []) self.assertEqual(shopping_site.cart_articles(), {'1': 'ARTICLE1', '2': 'ARTICLE2', '3': 'ARTICLE3'}) self.assertEqual(shopping_site.remove_cart_articles(['2', '3']), ['ARTICLE2', 'ARTICLE3']) self.assertEqual(shopping_site.cart_articles(), {'1': 'ARTICLE1'}) self.assertEqual(shopping_site.remove_cart_articles('1'), ['ARTICLE1']) self.assertEqual(shopping_site.cart_articles(), {})
def cart_url(self): shop = IShoppingSite(self.context).shop() return '{}/@@cart'.format(shop.absolute_url())
def test_remove_from_cart(self): adapter = IShoppingSite(self.portal) self.assertIsNone(adapter.cart()) self.assertIsNone(adapter.remove_from_cart('name')) self.assertIsNone(adapter.cart()) session = adapter.getSessionData(create=True) session.set('collective.cart.core', {}) self.assertEqual(adapter.cart(), {}) self.assertIsNone(adapter.remove_from_cart('name')) self.assertEqual(adapter.cart(), {}) session.set('collective.cart.core', {'name': 'Name'}) self.assertEqual(adapter.cart(), {'name': 'Name'}) self.assertEqual(adapter.remove_from_cart('name'), 'Name') self.assertEqual(adapter.cart(), {})