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_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 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_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_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 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 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_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(), {})