def test_overload_manager(self): MetaClass = auditable.metaclass_factory(models.PizzaOrder) #it's not okay to have a manager on an object which isn't auditable with self.assertRaises(auditable.AuditableException): BadModel = MetaClass.__new__(MetaClass, 'BadModel', (models.BaseAudit,), { 'my_bad_manager': django.db.models.Manager(), '__module__': self.__module__ } )
def test_overload_model_to_audit_field(self): MetaClass = auditable.metaclass_factory(models.PizzaOrder) #it's not okay to overload reserved audit fields with self.assertRaises(auditable.AuditableException): BadModel = MetaClass.__new__(MetaClass, 'BadModel', (models.BaseAudit,), { 'audit_instance_row_operation': 'bad_field', '__module__': self.__module__ } ) with self.assertRaises(auditable.AuditableException): BadModel = MetaClass.__new__(MetaClass, 'BadModel', (models.BaseAudit,), { '_instances_for_audit': 'bad_field', '__module__': self.__module__ } ) with self.assertRaises(auditable.AuditableException): BadModel = MetaClass.__new__(MetaClass, 'BadModel', (models.BaseAudit,), { 'audit_instance': 'bad_field', '__module__': self.__module__ } ) #also not okay to redefine fields which are used on PizzaOrder with self.assertRaises(auditable.AuditableException): BadModel = MetaClass.__new__(MetaClass, 'BadModel', (models.BaseAudit,), { 'customer_name': 'bad_field', '__module__': self.__module__ } ) with self.assertRaises(auditable.AuditableException): BadModel = MetaClass.__new__(MetaClass, 'BadModel', (models.BaseAudit,), { 'toppings': 'bad_field', '__module__': self.__module__ } )