def testMediatorReregistration(self):
        """
        Tests registering the same mediator twice.
        A subsequent notification should only illicit
        one response. Also, since reregistration
        was causing 2 observers to be created, ensure
        that after removal of the mediator there will
        be no further response.

        Added for the fix deployed in version 2.0.4
        """

        view = View('test')

        view.register_mediator(utils.view.ViewTestMediator5(self))

        # try to register another instance of that mediator (uses the same NAME constant).
        view.register_mediator(utils.view.ViewTestMediator5(self))

        self.counter = 0
        view.notify_observers(Notification(self.NOTE5))
        self.assertEqual(1, self.counter)

        view.remove_mediator(utils.view.ViewTestMediator5.NAME)

        self.assertEqual(True, view.retrieve_mediator(utils.view.ViewTestMediator5.NAME ) is None)

        self.counter=0
        view.notify_observers(Notification(self.NOTE5))
        self.assertEqual(0,  self.counter)
    def testRemoveOneOfTwoMediatorsAndSubsequentNotify(self):
        """ViewTest: Test removing one of two Mediators and subsequent notify()"""

        view = View('test')

        view.register_mediator(utils.view.ViewTestMediator2(self))

        view.register_mediator(utils.view.ViewTestMediator3(self))

        view.notify_observers(Notification(self.NOTE1))
        self.assertEqual(True, self.lastNotification == self.NOTE1)

        view.notify_observers(Notification(self.NOTE2))
        self.assertEqual(True, self.lastNotification == self.NOTE2)

        view.notify_observers(Notification(self.NOTE3))
        self.assertEqual(True, self.lastNotification == self.NOTE3)

        view.remove_mediator(utils.view.ViewTestMediator2.NAME)

        self.assertEqual(True, view.retrieve_mediator(utils.view.ViewTestMediator2.NAME) is None)

        self.lastNotification = None

        view.notify_observers(Notification(self.NOTE1))
        self.assertEqual(True, self.lastNotification != self.NOTE1)

        view.notify_observers(Notification(self.NOTE2))
        self.assertEqual(True, self.lastNotification != self.NOTE2)

        view.notify_observers(Notification(self.NOTE3))
        self.assertEqual(True, self.lastNotification == self.NOTE3)

        self.__cleanup()
    def testRemoveSelf(self):
        view = View('test')
        view.register_mediator(utils.view.ViewTestMediator2(self))
        view.register_mediator(utils.view.ViewTestMediator3(self))

        self.assertTrue(self.NOTE5 in view.observer_map)
        view.notify_observers(Notification(self.NOTE5))
        self.assertFalse(self.NOTE5 in view.observer_map)
    def testRegisterAndRetrieveMediator(self):
        """ViewTest: Test register_mediator() and retrieve_mediator()"""
        view = View('test')

        viewTestMediator = utils.view.ViewTestMediator(self)
        view.register_mediator(viewTestMediator)

        mediator = view.retrieve_mediator(utils.view.ViewTestMediator.NAME)

        self.assertEqual(True, isinstance(mediator, utils.view.ViewTestMediator))
        self.__cleanup()
    def testHasMediator(self):
        """ViewTest: Test has_mediator()"""
        view = View('test')
        meditr = Mediator('hasMediatorTest', self)
        view.register_mediator(meditr)

        self.assertEqual(True, view.has_mediator('hasMediatorTest'))

        view.remove_mediator('hasMediatorTest')

        self.assertEqual(False, view.has_mediator('hasMediatorTest'))
        self.__cleanup()
    def testOnRegisterAndOnRemove(self):
        """ViewTest: Test onRegsiter() and on_remove()"""
        view = View('test')

        mediator = utils.view.ViewTestMediator4(self)
        view.register_mediator(mediator)

        self.assertEqual(True, self.onRegisterCalled)

        view.remove_mediator(utils.view.ViewTestMediator4.NAME)

        self.assertEqual(True, self.onRemoveCalled)
        self.__cleanup()
    def testRegisterAndRemoveMediator(self):
        """ViewTest: Test register_mediator() and remove_mediator()"""
        view = View('test')

        meditr = Mediator('testing', self)
        view.register_mediator(meditr)

        removedMediator = view.remove_mediator('testing')

        self.assertEqual(True, removedMediator.get_mediator_name() == 'testing')

        self.assertEqual(True, view.retrieve_mediator('testing') is None)
        self.__cleanup()
    def testSuccessiveRegisterAndRemoveMediator(self):
        """ViewTest: Test Successive register_mediator() and remove_mediator()"""
        view = View('test')

        view.register_mediator(utils.view.ViewTestMediator(self))

        self.assertEqual(True, isinstance(view.retrieve_mediator(utils.view.ViewTestMediator.NAME), utils.view.ViewTestMediator))

        view.remove_mediator(utils.view.ViewTestMediator.NAME)

        self.assertEqual(True, view.retrieve_mediator(utils.view.ViewTestMediator.NAME) is None)

        self.assertEqual(True, view.remove_mediator(utils.view.ViewTestMediator.NAME) is None)

        view.register_mediator(utils.view.ViewTestMediator(self))

        self.assertEqual(True, isinstance(view.retrieve_mediator(utils.view.ViewTestMediator.NAME), utils.view.ViewTestMediator))

        view.remove_mediator(utils.view.ViewTestMediator.NAME)

        self.assertEqual(True, view.retrieve_mediator(utils.view.ViewTestMediator.NAME) is None)

        self.__cleanup()