"""base model tests""" from typing import Callable, Type from django.test import TestCase from rest_framework.serializers import BaseSerializer from passbook.flows.models import Stage from passbook.lib.models import SerializerModel from passbook.lib.utils.reflection import all_subclasses class TestModels(TestCase): """Generic model properties tests""" def model_tester_factory(test_model: Type[Stage]) -> Callable: """Test a form""" def tester(self: TestModels): model_inst = test_model() try: self.assertTrue(issubclass(model_inst.serializer, BaseSerializer)) except NotImplementedError: pass return tester for model in all_subclasses(SerializerModel): setattr(TestModels, f"test_model_{model.__name__}", model_tester_factory(model))