(self)
| 3033 | ) |
| 3034 | @isolate_apps("schema") |
| 3035 | def test_check_constraint_exact_jsonfield(self): |
| 3036 | class JSONConstraintModel(Model): |
| 3037 | data = JSONField() |
| 3038 | |
| 3039 | class Meta: |
| 3040 | app_label = "schema" |
| 3041 | |
| 3042 | with connection.schema_editor() as editor: |
| 3043 | editor.create_model(JSONConstraintModel) |
| 3044 | self.isolated_local_models = [JSONConstraintModel] |
| 3045 | constraint_name = "check_only_stable_version" |
| 3046 | constraint = CheckConstraint( |
| 3047 | condition=Q(data__version="stable"), |
| 3048 | name=constraint_name, |
| 3049 | ) |
| 3050 | JSONConstraintModel._meta.constraints = [constraint] |
| 3051 | with connection.schema_editor() as editor: |
| 3052 | editor.add_constraint(JSONConstraintModel, constraint) |
| 3053 | constraints = self.get_constraints(JSONConstraintModel._meta.db_table) |
| 3054 | self.assertIn(constraint_name, constraints) |
| 3055 | with self.assertRaises(IntegrityError), atomic(): |
| 3056 | JSONConstraintModel.objects.create( |
| 3057 | data={"release": "5.0.2dev", "version": "dev"} |
| 3058 | ) |
| 3059 | JSONConstraintModel.objects.create( |
| 3060 | data={"release": "5.0.3", "version": "stable"} |
| 3061 | ) |
| 3062 | |
| 3063 | @skipUnlessDBFeature( |
| 3064 | "supports_column_check_constraints", "can_introspect_check_constraints" |
nothing calls this directly
no test coverage detected