Example #1
0
    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__ } )
Example #2
0
    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__ } )