diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2012-09-25 12:11:52 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2012-09-25 12:11:52 (GMT) |
commit | 5ea69e14afe5d43dbd1433c61dcbe2ffa36357c2 (patch) | |
tree | a8b9d67c17b600c1323450b25e84cd934d6a50c9 | |
parent | 82aa41773163b49c82a0b71c02e6f85eea1e352a (diff) |
Polish the code, no special treatmeant for json blobs, use regular props instead
-rw-r--r-- | active_document/volume.py | 3 | ||||
-rwxr-xr-x | tests/units/volume.py | 43 |
2 files changed, 8 insertions, 38 deletions
diff --git a/active_document/volume.py b/active_document/volume.py index 8583803..db8326e 100644 --- a/active_document/volume.py +++ b/active_document/volume.py @@ -15,7 +15,6 @@ import os import time -import json import logging from contextlib import contextmanager from os.path import exists, join, abspath, isdir @@ -255,8 +254,6 @@ class VolumeCommands(CommandsProcessor): prop.assert_access(access) value = prop.on_set(doc, value) if isinstance(prop, BlobProperty): - if prop.mime_type == 'application/json': - value = json.dumps(value) enforce(PropertyMeta.is_blob(value), 'Invalid BLOB value') blobs.append((name, value)) else: diff --git a/tests/units/volume.py b/tests/units/volume.py index 0ef7c72..d40673f 100755 --- a/tests/units/volume.py +++ b/tests/units/volume.py @@ -169,7 +169,7 @@ class VolumeTest(tests.Test): blob_path = tests.tmpdir + '/testdocument/%s/%s/blob' % (guid[:2], guid) blob_meta = { - 'seqno': 3, + 'seqno': 2, 'path': blob_path + '.blob', 'digest': hashlib.sha1('blob').hexdigest(), 'mime_type': 'application/octet-stream', @@ -188,31 +188,6 @@ class VolumeTest(tests.Test): ], self.call('GET', document='testdocument', reply=['guid', 'blob'])['result']) - def test_JsonBLOB(self): - - class TestDocument(Document): - - @active_property(BlobProperty, mime_type='application/json') - def blob(self, value): - return value - - self.volume = SingleVolume(tests.tmpdir, [TestDocument]) - guid = self.call('POST', document='testdocument', content={'blob': {'foo': None, 'bar': -1}}) - - self.assertEqual( - '{"foo": null, "bar": -1}', - ''.join([i for i in self.call('GET', document='testdocument', guid=guid, prop='blob')])) - - self.call('PUT', document='testdocument', guid=guid, prop='blob', content=0) - self.assertEqual( - '0', - ''.join([i for i in self.call('GET', document='testdocument', guid=guid, prop='blob')])) - - self.call('PUT', document='testdocument', guid=guid, prop='blob', content=None) - self.assertEqual( - 'null', - ''.join([i for i in self.call('GET', document='testdocument', guid=guid, prop='blob')])) - def test_CommandsGetBlobDirectory(self): class TestDocument(Document): @@ -961,27 +936,25 @@ class VolumeTest(tests.Test): @blob.setter def blob(self, value): - if type(value) is int: - value = [value] + if '!' not in value: meta = self.meta('blob') if meta: - with file(meta['path']) as f: - value = json.load(f) + value + value = file(meta['path']).read() + value coroutine.spawn(self.post, value) return value def post(self, value): - self.request.call('PUT', document='testdocument', guid=self.guid, prop='blob', content=value + [-1]) + self.request.call('PUT', document='testdocument', guid=self.guid, prop='blob', content=value + '!') self.volume = SingleVolume(tests.tmpdir, [TestDocument]) - guid = self.call('POST', document='testdocument', content={'blob': 0}) + guid = self.call('POST', document='testdocument', content={'blob': '0'}) coroutine.dispatch() - self.assertEqual('[0, -1]', ''.join(self.call('GET', document='testdocument', guid=guid, prop='blob'))) + self.assertEqual('0!', ''.join(self.call('GET', document='testdocument', guid=guid, prop='blob'))) - self.call('PUT', document='testdocument', guid=guid, prop='blob', content=2) + self.call('PUT', document='testdocument', guid=guid, prop='blob', content='1') coroutine.dispatch() - self.assertEqual('[0, -1, 2, -1]', ''.join(self.call('GET', document='testdocument', guid=guid, prop='blob'))) + self.assertEqual('0!1!', ''.join(self.call('GET', document='testdocument', guid=guid, prop='blob'))) def call(self, method, document=None, guid=None, prop=None, accept_language=None, **kwargs): |