示例#1
0
    def test_listen_by_base_class(self):
        mock = Mock()

        listen(BasePerson, 'gone_sleep', mock)

        p = MyPerson('James')
        p.sleep()

        mock.assert_called_once(
        )  # only available in python 3.6 for builtin unittest.mock
示例#2
0
    def test_event_works(self):
        mock_listener = create_autospec(self._gone_sleep_notification)

        listen(MyPerson, 'gone_sleep', self._gone_sleep_notification)
        listen(MyPerson, 'gone_sleep', mock_listener)

        p = MyPerson('Wonder')
        p.sleep()

        mock_listener.assert_called_once_with(p, 'gone_sleep')
示例#3
0
    def test_orm_events(self):
        ma, mu, md = Mock(), Mock(), Mock()

        listen(Person, 'post_add', ma)
        listen(Person, 'post_update', mu)
        listen(Person, 'post_delete', md)

        p = Person(name='Wonder',
                   _key='10000',
                   dob=date(year=2016, month=9, day=12))

        res = self.db.add(p)
        ma.assert_called_once_with(p, 'post_add', db=self.db, result=res)

        res = self.db.update(p)
        mu.assert_called_once_with(p, 'post_update', db=self.db, result=res)
        res = self.db.update(p)
        assert mu.call_count == 2

        res = self.db.delete(p)
        md.assert_called_once_with(p, 'post_delete', db=self.db, result=res)