Skip to content

Commit

Permalink
test JsonateField (for now < 1.9)
Browse files Browse the repository at this point in the history
  • Loading branch information
igorkramaric committed Dec 22, 2015
1 parent aba4ac8 commit 609b876
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 7 deletions.
9 changes: 6 additions & 3 deletions jsonate/fields.py
Expand Up @@ -31,6 +31,9 @@ def formfield(self, **kwargs):
}
defaults.update(kwargs)
return super(JsonateField, self).formfield(**defaults)

from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^jsonate\.fields\.JsonateField"])

try:
from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^jsonate\.fields\.JsonateField"])
except:
pass
23 changes: 23 additions & 0 deletions test_project/test_app/migrations/0002_mymodelwithjsonatefield.py
@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations
import jsonate.fields


class Migration(migrations.Migration):

dependencies = [
('test_app', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='MyModelWithJsonateField',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('some_name', models.CharField(max_length=255)),
('some_json_data', jsonate.fields.JsonateField(null=True, blank=True)),
],
),
]
7 changes: 7 additions & 0 deletions test_project/test_app/models.py
@@ -1,8 +1,11 @@
from datetime import datetime, date
from decimal import Decimal

from django.db import models
from django.contrib.auth.models import User

from jsonate.fields import JsonateField

class MyModel(models.Model):
foreign_key = models.ForeignKey(User)
normal_field1 = models.CharField(max_length=25, default="field1")
Expand All @@ -24,3 +27,7 @@ class MyModel(models.Model):

class Meta:
jsonate_exclude = ('sensitive_field1',)

class MyModelWithJsonateField(models.Model):
some_name = models.CharField(max_length=255)
some_json_data = JsonateField(null=True, blank=True)
23 changes: 19 additions & 4 deletions test_project/test_app/tests.py
@@ -1,15 +1,17 @@
from os import unlink, rmdir
from os.path import join
from glob import glob
import json
import unittest

from jsonate import jsonate

from django.test import TestCase
from django.conf import settings
from django.contrib.auth.models import User
from django.core.files.base import ContentFile
from test_app.models import MyModel
from jsonate import jsonate
import json

from .models import MyModel, MyModelWithJsonateField

def destroy_media_folder(folder):
path = join(settings.MEDIA_ROOT, folder)
Expand Down Expand Up @@ -42,7 +44,20 @@ def assertJsonEqual(self, obj1, obj2, *args, **kwargs):
obj2 = json.loads(obj2)

self.assertEqual(obj1, obj2, *args, **kwargs)


def test_jsonate_field(self):
some_test_dict = {"red":3, "orange":451}

MyModelWithJsonateField.objects.create(
some_name="test row with json data",
some_json_data=some_test_dict
)

self.assertEqual(
MyModelWithJsonateField.objects.first().some_json_data,
some_test_dict
)

def test_basic_serialization(self):
mymodel_data = {
u"float_field": 32.25,
Expand Down

0 comments on commit 609b876

Please sign in to comment.