diff --git a/.travis.yml b/.travis.yml index 63470eee..cc7cd4d6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,8 +17,8 @@ install: - pip install $DJANGO - python setup.py -q develop - pip install -r requirements-test.txt - # Temporary - - pip install --upgrade https://github.com/openwisp/netdiff/tarball/issue/39-detect-node-changes + # Temporary, remove when netdiff 0.8.0 is released + - pip install --upgrade https://github.com/openwisp/netdiff/tarball/master script: - coverage run --source=openwisp_network_topology runtests.py diff --git a/openwisp_network_topology/base/node.py b/openwisp_network_topology/base/node.py index 5d34604e..14c94ca8 100644 --- a/openwisp_network_topology/base/node.py +++ b/openwisp_network_topology/base/node.py @@ -70,8 +70,8 @@ def json(self, dict=False, **kwargs): value = getattr(self, attr) if value or attr == 'properties': netjson[attr] = value - netjson['properties']['created'] = self.created - netjson['properties']['modified'] = self.modified + netjson['properties']['created'] = JSONEncoder().default(self.created) + netjson['properties']['modified'] = JSONEncoder().default(self.modified) if dict: return netjson return json.dumps(netjson, cls=JSONEncoder, **kwargs) diff --git a/openwisp_network_topology/tests/test_node.py b/openwisp_network_topology/tests/test_node.py index 1b261b4c..d147da9a 100644 --- a/openwisp_network_topology/tests/test_node.py +++ b/openwisp_network_topology/tests/test_node.py @@ -1,5 +1,6 @@ import swapper from django.test import TestCase +from rest_framework.utils.encoders import JSONEncoder from .utils import CreateGraphObjectsMixin, CreateOrgMixin @@ -89,8 +90,8 @@ def test_json(self): 'local_addresses': ['10.0.0.1'], 'properties': { 'gateway': True, - 'created': n.created, - 'modified': n.modified, + 'created': JSONEncoder().default(n.created), + 'modified': JSONEncoder().default(n.modified), }, }, ) diff --git a/openwisp_network_topology/tests/test_topology.py b/openwisp_network_topology/tests/test_topology.py index 7b5702cf..a229691d 100644 --- a/openwisp_network_topology/tests/test_topology.py +++ b/openwisp_network_topology/tests/test_topology.py @@ -211,7 +211,9 @@ def test_update_changed(self): self.assertEqual(link.properties, {'pretty': True}) self.assertEqual(link.cost, 1.5) self.assertEqual(link.cost_text, '15 Mbps') - link = self.link_model.objects.last() + link = self.link_model.get_from_nodes( + source='192.168.0.1', target='192.168.0.3', topology=t + ) self.assertEqual(link.properties, {'pretty': False}) self.assertEqual(link.cost, 2.0) self.assertEqual(link.cost_text, '20 Mbps') diff --git a/tests/openwisp2/sample_network_topology/migrations/0002_json_properties.py b/tests/openwisp2/sample_network_topology/migrations/0002_json_properties.py new file mode 100644 index 00000000..5802ed0b --- /dev/null +++ b/tests/openwisp2/sample_network_topology/migrations/0002_json_properties.py @@ -0,0 +1,47 @@ +# Generated by Django 3.0.7 on 2020-06-25 18:25 + +import collections +from django.db import migrations +import jsonfield.fields +import rest_framework.utils.encoders + + +class Migration(migrations.Migration): + + dependencies = [ + ('sample_network_topology', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='link', + name='properties', + field=jsonfield.fields.JSONField( + blank=True, + default=dict, + dump_kwargs={ + 'cls': rest_framework.utils.encoders.JSONEncoder, + 'indent': 4, + }, + load_kwargs={'object_pairs_hook': collections.OrderedDict}, + ), + ), + migrations.AlterField( + model_name='node', + name='addresses', + field=jsonfield.fields.JSONField(blank=True, default=[]), + ), + migrations.AlterField( + model_name='node', + name='properties', + field=jsonfield.fields.JSONField( + blank=True, + default=dict, + dump_kwargs={ + 'cls': rest_framework.utils.encoders.JSONEncoder, + 'indent': 4, + }, + load_kwargs={'object_pairs_hook': collections.OrderedDict}, + ), + ), + ]