Put the album.photos attribute back, since this is used for album.view when includeElements=True.

This commit is contained in:
sneakypete81 2013-09-07 11:44:03 +01:00
parent 533c2661b1
commit ba9ef81ac8
2 changed files with 20 additions and 7 deletions

View file

@ -9,16 +9,21 @@ import trovebox
class TestAlbums(unittest.TestCase): class TestAlbums(unittest.TestCase):
test_host = "test.example.com" test_host = "test.example.com"
test_photo_dict = {"id": "1a", "tags": ["tag1", "tag2"]}
test_albums_dict = [{"cover": {"id": "1a", "tags": ["tag1", "tag2"]}, test_albums_dict = [{"cover": {"id": "1a", "tags": ["tag1", "tag2"]},
"id": "1", "id": "1",
"name": "Album 1", "name": "Album 1",
"photos": [test_photo_dict],
"totalRows": 2}, "totalRows": 2},
{"cover": {"id": "2b", "tags": ["tag3", "tag4"]}, {"cover": {"id": "2b", "tags": ["tag3", "tag4"]},
"id": "2", "id": "2",
"name": "Album 2", "name": "Album 2",
"photos": [test_photo_dict],
"totalRows": 2}] "totalRows": 2}]
def setUp(self): def setUp(self):
self.client = trovebox.Trovebox(host=self.test_host) self.client = trovebox.Trovebox(host=self.test_host)
self.test_photo = trovebox.objects.photo.Photo(self.client,
self.test_photo_dict)
self.test_albums = [trovebox.objects.album.Album(self.client, album) self.test_albums = [trovebox.objects.album.Album(self.client, album)
for album in self.test_albums_dict] for album in self.test_albums_dict]
@ -228,33 +233,35 @@ class TestAlbumView(TestAlbums):
def test_album_view(self, mock_get): def test_album_view(self, mock_get):
"""Check that an album can be viewed""" """Check that an album can be viewed"""
mock_get.return_value = self._return_value(self.test_albums_dict[1]) mock_get.return_value = self._return_value(self.test_albums_dict[1])
result = self.client.album.view(self.test_albums[0], name="Test") result = self.client.album.view(self.test_albums[0], includeElements=True)
mock_get.assert_called_with("/album/1/view.json", name="Test") mock_get.assert_called_with("/album/1/view.json", includeElements=True)
self.assertEqual(result.id, "2") self.assertEqual(result.id, "2")
self.assertEqual(result.name, "Album 2") self.assertEqual(result.name, "Album 2")
self.assertEqual(result.cover.id, "2b") self.assertEqual(result.cover.id, "2b")
self.assertEqual(result.cover.tags, ["tag3", "tag4"]) self.assertEqual(result.cover.tags, ["tag3", "tag4"])
self.assertEqual(result.photos[0].id, self.test_photo.id)
@mock.patch.object(trovebox.Trovebox, 'get') @mock.patch.object(trovebox.Trovebox, 'get')
def test_album_view_id(self, mock_get): def test_album_view_id(self, mock_get):
"""Check that an album can be viewed using its ID""" """Check that an album can be viewed using its ID"""
mock_get.return_value = self._return_value(self.test_albums_dict[1]) mock_get.return_value = self._return_value(self.test_albums_dict[1])
result = self.client.album.view("1", name="Test") result = self.client.album.view("1", includeElements=True)
mock_get.assert_called_with("/album/1/view.json", name="Test") mock_get.assert_called_with("/album/1/view.json", includeElements=True)
self.assertEqual(result.id, "2") self.assertEqual(result.id, "2")
self.assertEqual(result.name, "Album 2") self.assertEqual(result.name, "Album 2")
self.assertEqual(result.cover.id, "2b") self.assertEqual(result.cover.id, "2b")
self.assertEqual(result.cover.tags, ["tag3", "tag4"]) self.assertEqual(result.cover.tags, ["tag3", "tag4"])
self.assertEqual(result.photos[0].id, self.test_photo.id)
@mock.patch.object(trovebox.Trovebox, 'get') @mock.patch.object(trovebox.Trovebox, 'get')
def test_album_object_view(self, mock_get): def test_album_object_view(self, mock_get):
"""Check that an album can be viewed using the album object directly""" """Check that an album can be viewed using the album object directly"""
mock_get.return_value = self._return_value(self.test_albums_dict[1]) mock_get.return_value = self._return_value(self.test_albums_dict[1])
album = self.test_albums[0] album = self.test_albums[0]
album.view(name="Test") album.view(includeElements=True)
mock_get.assert_called_with("/album/1/view.json", name="Test") mock_get.assert_called_with("/album/1/view.json", includeElements=True)
self.assertEqual(album.id, "2") self.assertEqual(album.id, "2")
self.assertEqual(album.name, "Album 2") self.assertEqual(album.name, "Album 2")
self.assertEqual(album.cover.id, "2b") self.assertEqual(album.cover.id, "2b")
self.assertEqual(album.cover.tags, ["tag3", "tag4"]) self.assertEqual(album.cover.tags, ["tag3", "tag4"])
self.assertEqual(album.photos[0].id, self.test_photo.id)

View file

@ -8,6 +8,7 @@ from .photo import Photo
class Album(TroveboxObject): class Album(TroveboxObject):
""" Representation of an Album object """ """ Representation of an Album object """
def __init__(self, trovebox, json_dict): def __init__(self, trovebox, json_dict):
self.photos = None
self.cover = None self.cover = None
TroveboxObject.__init__(self, trovebox, json_dict) TroveboxObject.__init__(self, trovebox, json_dict)
self._update_fields_with_objects() self._update_fields_with_objects()
@ -17,6 +18,11 @@ class Album(TroveboxObject):
# Update the cover with a photo object # Update the cover with a photo object
if isinstance(self.cover, dict): if isinstance(self.cover, dict):
self.cover = Photo(self._trovebox, self.cover) self.cover = Photo(self._trovebox, self.cover)
# Update the photo list with photo objects
if isinstance(self.photos, list):
for i, photo in enumerate(self.photos):
if isinstance(photo, dict):
self.photos[i] = Photo(self._trovebox, photo)
def delete(self, **kwds): def delete(self, **kwds):
""" """