diff --git a/mopidy/models.py b/mopidy/models.py index 39d29fd3..b1f0b351 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 08a8c6f0..c2d65ec6 100644 --- a/tests/models_test.py +++ b/tests/models_test.py @@ -255,6 +255,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)