fixes fact jsonbfield for unit tests

This commit is contained in:
Chris Meyers
2016-11-21 17:25:18 -05:00
parent eeeea8ad88
commit ddd41e77be
6 changed files with 52 additions and 57 deletions

View File

@@ -4,6 +4,7 @@ import pytest
import mock
import json
import os
import six
from datetime import timedelta
# Django
@@ -12,6 +13,8 @@ from django.utils.six.moves.urllib.parse import urlparse
from django.utils import timezone
from django.contrib.auth.models import User
from django.conf import settings
from django.core.serializers.json import DjangoJSONEncoder
from jsonbfield.fields import JSONField
# AWX
from awx.main.models.projects import Project
@@ -476,3 +479,24 @@ def job_template_labels(organization, job_template):
return job_template
def dumps(value):
return DjangoJSONEncoder().encode(value)
# Taken from https://github.com/django-extensions/django-extensions/blob/54fe88df801d289882a79824be92d823ab7be33e/django_extensions/db/fields/json.py
def get_db_prep_save(self, value, connection, **kwargs):
"""Convert our JSON object to a string before we save"""
if value is None and self.null:
return None
# default values come in as strings; only non-strings should be
# run through `dumps`
if not isinstance(value, six.string_types):
value = dumps(value)
return value
@pytest.fixture
def monkeypatch_jsonbfield_get_db_prep_save(mocker):
JSONField.get_db_prep_save = get_db_prep_save