From c1c309bc9d7d605c65bb0cbeddd44874bf04e87c Mon Sep 17 00:00:00 2001 From: sneakypete81 Date: Sun, 16 Jun 2013 13:09:31 +0100 Subject: [PATCH] Started photo API unit tests --- tests/unit/test_photos.py | 104 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 tests/unit/test_photos.py diff --git a/tests/unit/test_photos.py b/tests/unit/test_photos.py new file mode 100644 index 0000000..bf87ab6 --- /dev/null +++ b/tests/unit/test_photos.py @@ -0,0 +1,104 @@ +from __future__ import unicode_literals +import mock +try: + import unittest2 as unittest # Python2.6 +except ImportError: + import unittest + +import openphoto + +class TestPhotos(unittest.TestCase): + TEST_HOST = "test.example.com" + + TEST_PHOTOS = [{"id": "1a", + "tags": ["tag1", "tag2"], + "totalPages": 1, + "totalRows": 2}, + {"id": "2b", + "tags": ["tag3", "tag4"], + "totalPages": 1, + "totalRows": 2}] + + def setUp(self): + self.client = openphoto.OpenPhoto(host=self.TEST_HOST) + + @staticmethod + def _return_value(result, message="", code=200): + return {"message": message, "code": code, "result": result} + +class TestPhotosList(TestPhotos): + @mock.patch.object(openphoto.OpenPhoto, 'get') + def test_list(self, mock_get): + photos = self.TEST_PHOTOS + mock_get.return_value = self._return_value(photos) + + result = self.client.photos.list() + mock_get.assert_called_with("/photos/list.json") + self.assertEqual(len(result), 2) + self.assertEqual(result[0].id, "1a") + self.assertEqual(result[0].tags, ["tag1", "tag2"]) + self.assertEqual(result[1].id, "2b") + self.assertEqual(result[1].tags, ["tag3", "tag4"]) + +class TestPhotosUpdate(TestPhotos): + @mock.patch.object(openphoto.OpenPhoto, 'post') + def test_update(self, mock_post): + mock_post.return_value = self._return_value(True) + result = self.client.photos.update(["1a", "2b"], title="Test") + mock_post.assert_called_with("/photos/update.json", + ids=["1a", "2b"], title="Test") + self.assertEqual(result, True) + + @mock.patch.object(openphoto.OpenPhoto, 'post') + def test_update_failure_raises_exception(self, mock_post): + mock_post.return_value = self._return_value(False) + with self.assertRaises(openphoto.OpenPhotoError): + self.client.photos.update(["1a", "2b"], title="Test") + +class TestPhotosDelete(TestPhotos): + @mock.patch.object(openphoto.OpenPhoto, 'post') + def test_delete(self, mock_post): + mock_post.return_value = self._return_value(True) + result = self.client.photos.delete(["1a", "2b"]) + mock_post.assert_called_with("/photos/delete.json", ids=["1a", "2b"]) + self.assertEqual(result, True) + + @mock.patch.object(openphoto.OpenPhoto, 'post') + def test_delete_failure_raises_exception(self, mock_post): + mock_post.return_value = self._return_value(False) + with self.assertRaises(openphoto.OpenPhotoError): + self.client.photos.delete(["1a", "2b"]) + +class TestPhotoDelete(TestPhotos): + @mock.patch.object(openphoto.OpenPhoto, 'post') + def test_delete(self, mock_post): + mock_post.return_value = self._return_value(True) + result = self.client.photo.delete("1a") + mock_post.assert_called_with("/photo/1a/delete.json") + self.assertEqual(result, True) + + # TODO: photo.delete should raise exception on failure + @unittest.expectedFailure + @mock.patch.object(openphoto.OpenPhoto, 'post') + def test_delete_failure_raises_exception(self, mock_post): + mock_post.return_value = self._return_value(False) + with self.assertRaises(openphoto.OpenPhotoError): + self.client.photo.delete("1a") + + @mock.patch.object(openphoto.OpenPhoto, 'post') + def test_object_delete(self, mock_post): + mock_post.return_value = self._return_value(True) + photo = openphoto.objects.Photo(self.client, self.TEST_PHOTOS[0]) + result = photo.delete() + mock_post.assert_called_with("/photo/1a/delete.json") + self.assertEqual(result, True) + + # TODO: photo.delete should raise exception on failure + @unittest.expectedFailure + @mock.patch.object(openphoto.OpenPhoto, 'post') + def test_object_delete_failure_raises_exception(self, mock_post): + mock_post.return_value = self._return_value(False) + photo = openphoto.objects.Photo(self.client, self.TEST_PHOTOS[0]) + with self.assertRaises(openphoto.OpenPhotoError): + photo.delete() +