diff --git a/mopidy/models.py b/mopidy/models.py index 1a165222..3acf5f73 100644 --- a/mopidy/models.py +++ b/mopidy/models.py @@ -87,7 +87,9 @@ class ImmutableObject(object): public_key = key.lstrip('_') value = self.__dict__[key] if isinstance(value, (set, frozenset, list, tuple)): - value = [o.serialize() for o in value] + value = [ + v.serialize() if isinstance(v, ImmutableObject) else v + for v in value] elif isinstance(value, ImmutableObject): value = value.serialize() if value: diff --git a/tests/models_test.py b/tests/models_test.py index ef3fd68c..c624addd 100644 --- a/tests/models_test.py +++ b/tests/models_test.py @@ -249,6 +249,13 @@ class AlbumTest(unittest.TestCase): 'artists': [artist.serialize()]}, Album(uri='uri', name='name', artists=[artist]).serialize()) + def test_serialize_with_images(self): + image = 'data:foobar' + self.assertDictEqual( + {'__model__': 'Album', 'uri': 'uri', 'name': 'name', + 'images': [image]}, + Album(uri='uri', name='name', images=[image]).serialize()) + def test_to_json_and_back(self): album1 = Album(uri='uri', name='name', artists=[Artist(name='foo')]) serialized = json.dumps(album1, cls=ModelJSONEncoder)