[CMF-checkins] CVS: CMF/CMFActionIcons/tests - __init__.py:1.1 test_ActionIconsTool.py:1.1

Tres Seaver tseaver at zope.com
Tue Apr 20 16:20:58 EDT 2004


Update of /cvs-repository/CMF/CMFActionIcons/tests
In directory cvs.zope.org:/tmp/cvs-serv13996/tests

Added Files:
	__init__.py test_ActionIconsTool.py 
Log Message:


  - Merge from Products/CMFActionIcons (now defunct).


=== Added File CMF/CMFActionIcons/tests/__init__.py ===
##############################################################################
#
# Copyright (c) 2003 Zope Corporation and Contributors. All Rights Reserved.
# 
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
# 
##############################################################################
""" CMFActionIcons product unit tests

$Id: __init__.py,v 1.1 2004/04/20 20:20:56 tseaver Exp $
"""


=== Added File CMF/CMFActionIcons/tests/test_ActionIconsTool.py ===
##############################################################################
#
# Copyright (c) 2003 Zope Corporation and Contributors. All Rights Reserved.
# 
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
# 
##############################################################################
import unittest

import Zope

class ActionIconToolTests( unittest.TestCase ):

    def _makeOne( self, *args, **kw ):

        from Products.CMFActionIcons.ActionIconsTool import ActionIconsTool
        
        return ActionIconsTool( *args, **kw )

    def test_empty( self ):

        tool = self._makeOne()

        self.assertEqual( len( tool.listActionIcons() ), 0 )
        self.assertRaises( KeyError, tool.getActionIcon, 'foo', 'bar' )
        self.assertEqual( tool.queryActionIcon( 'foo', 'bar' ), None )
        self.assertEqual( tool.queryActionIcon( 'foo', 'bar', 'baz' ), 'baz' )
        self.assertRaises( KeyError, tool.removeActionIcon, 'foo', 'bar' )

    def test_addActionIcon( self ):

        tool = self._makeOne()

        tool.addActionIcon( 'foo', 'bar', 'qux' )

        icons = tool.listActionIcons()
        self.assertEqual( len( icons ), 1 )

        icon = icons[0]
        self.assertEqual( icon.getCategory(), 'foo' )
        self.assertEqual( icon.getActionId(), 'bar' )
        self.assertEqual( icon.getExpression(), 'qux' )
        self.assertEqual( icon.getIconURL(), 'qux' )

        self.assertRaises( KeyError, tool.getActionIcon, 'foo', 'baz' )
        self.assertEqual( tool.getActionIcon( 'foo', 'bar' ), 'qux' )
        self.assertEqual( tool.queryActionIcon( 'foo', 'bar' ), 'qux' )
        self.assertEqual( tool.queryActionIcon( 'foo', 'bar', 'baz' ), 'qux' )

    def test_addActionIcon_duplicate( self ):

        tool = self._makeOne()

        tool.addActionIcon( 'foo', 'bar', 'qux' )
        self.assertRaises( KeyError, tool.addActionIcon, 'foo', 'bar', 'qux' )

    def test_addActionIcon_multiple( self ):

        tool = self._makeOne()

        tool.addActionIcon( 'foo', 'bar', 'qux' )
        tool.addActionIcon( 'foo', 'baz', 'spam' )
        tool.addActionIcon( 'abc', 'def', 'ghi' )

        icons = tool.listActionIcons()
        self.assertEqual( len( icons ), 3 )

        icon = icons[0]
        self.assertEqual( icon.getCategory(), 'foo' )
        self.assertEqual( icon.getActionId(), 'bar' )
        self.assertEqual( icon.getExpression(), 'qux' )
        self.assertEqual( icon.getIconURL(), 'qux' )

        icon = icons[1]
        self.assertEqual( icon.getCategory(), 'foo' )
        self.assertEqual( icon.getActionId(), 'baz' )
        self.assertEqual( icon.getExpression(), 'spam' )
        self.assertEqual( icon.getIconURL(), 'spam' )

        icon = icons[2]
        self.assertEqual( icon.getCategory(), 'abc' )
        self.assertEqual( icon.getActionId(), 'def' )
        self.assertEqual( icon.getExpression(), 'ghi' )
        self.assertEqual( icon.getIconURL(), 'ghi' )

    def test_updateActionIcon( self ):

        tool = self._makeOne()

        tool.addActionIcon( 'foo', 'bar', 'qux' )

        self.assertEqual( tool.getActionIcon( 'foo', 'bar' ), 'qux' )
        self.assertEqual( tool.queryActionIcon( 'foo', 'bar' ), 'qux' )
        self.assertEqual( tool.queryActionIcon( 'foo', 'bar', 'baz' ), 'qux' )

        tool.updateActionIcon( 'foo', 'bar', 'bam' )

        self.assertEqual( tool.getActionIcon( 'foo', 'bar' ), 'bam' )
        self.assertEqual( tool.queryActionIcon( 'foo', 'bar' ), 'bam' )
        self.assertEqual( tool.queryActionIcon( 'foo', 'bar', 'baz' ), 'bam' )

    def test_updateActionIcon_emptyiconexpr( self ):

        # CMF Collector # 239

        tool = self._makeOne()
        tool.addActionIcon( 'foo', 'bar', 'qux' )
        tool.updateActionIcon( 'foo', 'bar', '' )
        tool.updateActionIcon( 'foo', 'bar', 'bam' )

        self.assertEqual( tool.getActionIcon( 'foo', 'bar' ), 'bam' )
        self.assertEqual( tool.queryActionIcon( 'foo', 'bar' ), 'bam' )
        self.assertEqual( tool.queryActionIcon( 'foo', 'bar', 'baz' ), 'bam' )

    def test_updateActionIcon_nonesuch( self ):

        tool = self._makeOne()
        self.assertRaises( KeyError
                         , tool.updateActionIcon, 'foo', 'baz', 'qux' )

    def test_removeActionIcon( self ):

        tool = self._makeOne()

        tool.addActionIcon( 'foo', 'bar', 'qux' )
        tool.addActionIcon( 'foo', 'baz', 'spam' )
        tool.addActionIcon( 'abc', 'def', 'ghi' )

        tool.removeActionIcon( 'foo', 'baz' )

        icons = tool.listActionIcons()
        self.assertEqual( len( icons ), 2 )

        icon = icons[0]
        self.assertEqual( icon.getCategory(), 'foo' )
        self.assertEqual( icon.getActionId(), 'bar' )
        self.assertEqual( icon.getExpression(), 'qux' )
        self.assertEqual( icon.getIconURL(), 'qux' )

        icon = icons[1]
        self.assertEqual( icon.getCategory(), 'abc' )
        self.assertEqual( icon.getActionId(), 'def' )
        self.assertEqual( icon.getExpression(), 'ghi' )
        self.assertEqual( icon.getIconURL(), 'ghi' )

        self.assertEqual( tool.getActionIcon( 'foo', 'bar' ), 'qux' )
        self.assertRaises( KeyError, tool.getActionIcon, 'foo', 'baz' )
        self.assertEqual( tool.getActionIcon( 'abc', 'def' ), 'ghi' )

    def test_removeActionIcon_nonesuch( self ):

        tool = self._makeOne()

        tool.addActionIcon( 'foo', 'bar', 'qux' )
        tool.addActionIcon( 'foo', 'baz', 'spam' )
        tool.addActionIcon( 'abc', 'def', 'ghi' )

        self.assertRaises( KeyError, tool.removeActionIcon, 'jkl', 'mno' )

    def test_removeActionIcon_noIconURL( self ):
        # Regression test, issue #333
        tool = self._makeOne()
        tool.addActionIcon( 'foo', 'bar', '' )

        tool.removeActionIcon( 'foo', 'bar' )
        self.assertEqual(len(tool.listActionIcons()), 0)

    def test_updateActionDicts( self ):

        tool = self._makeOne()

        tool.addActionIcon( 'foo', 'bar', 'qux', 'FooBar' )
        tool.addActionIcon( 'foo', 'baz', 'spam', 'FooBaz', 1 )
        tool.addActionIcon( 'abc', 'def', 'ghi' )

        sod = { 'foo' : ( { 'id' : 'bar' }
                        , { 'id' : 'baz', 'icon' : 'qwerty' }
                        , { 'id' : 'bam' }
                        )
              , 'abc' : ( { 'id' : 'def', 'title' : 'DEF' }
                        ,
                        )
              }

        sod2 = tool.updateActionDicts( sod )

        self.assertEqual( len( sod2 ), len( sod ) )

        self.assertEqual( len( sod2['foo'] ), len( sod['foo'] ) )
        self.assertEqual( sod2['foo'][0]['icon'], 'qux' )
        self.assertEqual( sod2['foo'][0]['title'], 'FooBar' )
        self.assertEqual( sod2['foo'][0]['priority'], 0 )

        self.failIf( sod2['foo'][1].has_key( 'icon' ) ) # sorted higher!

        self.assertEqual( sod2['foo'][2]['icon'], 'spam' )
        self.assertEqual( sod2['foo'][2]['title'], 'FooBaz' )
        self.assertEqual( sod2['foo'][2]['priority'], 1 )

        self.assertEqual( len( sod2['abc'] ), len( sod['abc'] ) )
        self.assertEqual( sod2['abc'][0]['icon'], 'ghi' )
        self.assertEqual( sod2['abc'][0]['title'], 'DEF' )

        sod3 = tool( sod )
        self.assertEqual( sod2, sod3 )




More information about the CMF-checkins mailing list