示例#1
0
    def test_clone(self):
        @Node.extend(clone=True)
        def hack(self, alias):
            self._negated = True
            self._alias = alias

        n = Node()
        c = n.hack('magic!')
        self.assertFalse(n._negated)
        self.assertEqual(n._alias, None)
        self.assertTrue(c._negated)
        self.assertEqual(c._alias, 'magic!')

        class TestModel(Model):
            data = CharField()

        hacked = TestModel.data.hack('nugget')
        self.assertFalse(TestModel.data._negated)
        self.assertEqual(TestModel.data._alias, None)
        self.assertTrue(hacked._negated)
        self.assertEqual(hacked._alias, 'nugget')

        delattr(Node, 'hack')
        self.assertRaises(AttributeError, lambda: TestModel.data.hack())