def testTicketAndProjectCorrectly( self ):
        componentFactory = MockFactory()
        projectFactory = MockFactory()
        self._insertTicketInDb( 1, 'test-1', 'random-component-1', 
                'random-project-1' )
        self._insertTicketInDb( 2, 'test-2', 'random-component-2', 
                'random-project-2' )
        factory = TicketFactory( self._db, componentFactory, projectFactory )


        def assertTicketProperties( ticket, index ):
            self.assertEqual( index, ticket.id() )
            self.assertEqual( 'test-%s' % index, ticket.title() )
            self.assertEqual([ 'random-component-%s' % index ], 
                    componentFactory.requestedNames )
            self.assertEqual([ 'random-project-%s' % index ], 
                    projectFactory.requestedNames )

            componentFactory.requestedNames = []
            projectFactory.requestedNames = []


        ticket = factory.getById( 1 )
        assertTicketProperties( ticket, 1 )

        ticket = factory.getById( 2 )
        assertTicketProperties( ticket, 2 )
    def testCanBeAccessed( self ):
        self._insertTicketInDb( 1, 'test', 'random-component', 'random-project' )

        accessibleFactory = MockFactory( True )
        unaccessibleFactory = MockFactory( False )

        factory = TicketFactory( self._db, unaccessibleFactory, unaccessibleFactory )
        self.assertFalse( factory.getById( 1 ).canBeAccessedBy( None ))
        
        TicketFactory._cache = {}
        factory = TicketFactory( self._db, accessibleFactory, unaccessibleFactory )
        self.assertTrue( factory.getById( 1 ).canBeAccessedBy( None ))

        TicketFactory._cache = {}
        factory = TicketFactory( self._db, unaccessibleFactory, accessibleFactory )
        self.assertTrue( factory.getById( 1 ).canBeAccessedBy( None ))

        TicketFactory._cache = {}
        factory = TicketFactory( self._db, accessibleFactory, accessibleFactory )
        self.assertTrue( factory.getById( 1 ).canBeAccessedBy( None ))
 def testGetByNameDoesntRaiseException( self ):
     factory = TicketFactory( self._db, None, None )
     factory.getById( 123 )