Skip to content

Commit

Permalink
Separating out the service mocking so that it can be used in other te…
Browse files Browse the repository at this point in the history
…sts.
  • Loading branch information
Zoramite committed Aug 28, 2017
1 parent 5471152 commit ea83a7a
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 52 deletions.
60 changes: 60 additions & 0 deletions grow/testing/google_service.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
"""Testing utility for working with google service APIs."""

import mock


class GoogleServiceMock(object):
"""Utility for creating mocks for Google APIs."""

@classmethod
def get_batch_requests(cls, mocked):
requests = []
for _, kwargs in mocked.call_args_list:
requests += kwargs['body']['requests']
return requests

@classmethod
def mock_drive_service(cls, create=None):
"""Create mock for a google drive service."""
mock_service = mock.Mock()

mock_permissions = mock.Mock()
mock_service.permissions.return_value = mock_permissions

mock_permissions_create = mock.Mock()
mock_permissions.create.return_value = mock_permissions_create

mock_permissions_create.execute.return_value = create

return {
'service': mock_service,
'permissions': mock_permissions,
'permissions.create': mock_permissions_create,
}

@classmethod
def mock_sheets_service(cls, create=None, get=None):
"""Create mock for a google sheets service."""
mock_service = mock.Mock()

mock_spreadsheets = mock.Mock()
mock_service.spreadsheets.return_value = mock_spreadsheets

mock_batch_update = mock.Mock()
mock_spreadsheets.batchUpdate = mock_batch_update

mock_create = mock.Mock()
mock_create.execute.return_value = create
mock_spreadsheets.create.return_value = mock_create

mock_get = mock.Mock()
mock_get.execute.return_value = get
mock_spreadsheets.get.return_value = mock_get

return {
'service': mock_service,
'spreadsheets': mock_spreadsheets,
'spreadsheets.batchUpdate': mock_batch_update,
'spreadsheets.create': mock_create,
'spreadsheets.get': mock_get,
}
57 changes: 5 additions & 52 deletions grow/translators/google_sheets_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from grow.common import oauth
from grow.pods import pods
from grow.pods import storage
from grow.testing import google_service
from grow.testing import testing
from . import google_sheets

Expand All @@ -33,54 +34,6 @@ def test_upload_translations(self):

class GoogleSheetsTranslatorMockTestCase(unittest.TestCase):

def _get_batch_requests(self, mocked):
requests = []
for args, kwargs in mocked.call_args_list:
requests += kwargs['body']['requests']
return requests

def _mock_drive_service(self, create=None):
mock_service = mock.Mock()

mock_permissions = mock.Mock()
mock_service.permissions.return_value = mock_permissions

mock_permissions_create = mock.Mock()
mock_permissions.create.return_value = mock_permissions_create

mock_permissions_create.execute.return_value = create

return {
'service': mock_service,
'permissions': mock_permissions,
'permissions.create': mock_permissions_create,
}

def _mock_sheets_service(self, create=None, get=None):
mock_service = mock.Mock()

mock_spreadsheets = mock.Mock()
mock_service.spreadsheets.return_value = mock_spreadsheets

mock_batch_update = mock.Mock()
mock_spreadsheets.batchUpdate = mock_batch_update

mock_create = mock.Mock()
mock_create.execute.return_value = create
mock_spreadsheets.create.return_value = mock_create

mock_get = mock.Mock()
mock_get.execute.return_value = get
mock_spreadsheets.get.return_value = mock_get

return {
'service': mock_service,
'spreadsheets': mock_spreadsheets,
'spreadsheets.batchUpdate': mock_batch_update,
'spreadsheets.create': mock_create,
'spreadsheets.get': mock_get,
}

def _setup_mocks(self, sheets_create=None, sheets_get=None):
if sheets_create is None:
sheets_create = {
Expand All @@ -99,8 +52,8 @@ def _setup_mocks(self, sheets_create=None, sheets_get=None):
'spreadsheetId': 76543,
}

mock_drive_service = self._mock_drive_service()
mock_sheets_service = self._mock_sheets_service(
mock_drive_service = google_service.GoogleServiceMock.mock_drive_service()
mock_sheets_service = google_service.GoogleServiceMock.mock_sheets_service(
create=sheets_create, get=sheets_get)

return mock_drive_service, mock_sheets_service
Expand All @@ -121,7 +74,7 @@ def test_create_sheet(self, mock_service_drive, mock_service_sheets, mock_new_sh
translator = self.pod.get_translator('google_sheets')
translator.upload(locales=['de'])

requests = self._get_batch_requests(
requests = google_service.GoogleServiceMock.get_batch_requests(
mock_sheets_service['spreadsheets.batchUpdate'])

# Creates the sheet.
Expand Down Expand Up @@ -212,7 +165,7 @@ def test_update_meta(self, mock_service_drive, mock_service_sheets):
})
translator.update_meta(locales=['de'])

requests = self._get_batch_requests(
requests = google_service.GoogleServiceMock.get_batch_requests(
mock_sheets_service['spreadsheets.batchUpdate'])

# Style the header cells.
Expand Down

0 comments on commit ea83a7a

Please sign in to comment.