Skip to content

Commit

Permalink
Merge pull request #37 from sundeep-co-in/STAGE
Browse files Browse the repository at this point in the history
ZNTA-780: zanata init
  • Loading branch information
sdp5 committed Jan 11, 2016
2 parents ff0b7b8 + 3e02e0f commit bdbd01e
Show file tree
Hide file tree
Showing 15 changed files with 709 additions and 141 deletions.
7 changes: 5 additions & 2 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
* Thu Dec 10 2015 Sundeep Anand <[email protected]>
- Implemented zanata stats (ZNTA-780)
* Thu Jan 7 2016 Sundeep Anand <[email protected]>
- Implemented zanata init (ZNTA-780)
- Bug ZNTA-853 - Crash when pushing local translations
- Bug 1206995 - allow anonymous pull
- Implemented zanata stats

* Wed Dec 02 2015 Sundeep Anand <[email protected]> - 1.4.0
- Bug 1215274 - specify minimum percentage completion on pull
Expand Down
21 changes: 18 additions & 3 deletions test/test_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,13 @@
'project_version': '1.0', 'client_version': '1.3.12-74-g0b1d-mod', 'project_id': 'test-project',
'user_name': 'username'}

mock_project_remote_config = {'url': 'http://localhost/zanata/', 'project': 'id', 'project-version': '1', 'project-type': 'podir'}


class ProjectContextTest(unittest.TestCase):
def setUp(self):
self.context = ProjectContext(command_options)
self.init_context = ProjectContext(command_options, 'init')

def test_command_options(self):
command_options_keys = ['project_type', 'comment_cols', 'user_config', 'project_config']
Expand Down Expand Up @@ -96,7 +99,9 @@ def test_build_local_config(self):

@mock.patch('zanataclient.zanatalib.projectservice.LocaleService.get_locales')
@mock.patch('zanataclient.zanatalib.versionservice.VersionService.get_server_version')
def test_build_remote_config(self, mock_get_server_version, mock_get_locales):
@mock.patch('zanataclient.zanatalib.projectservice.IterationService.config')
def test_build_remote_config(self, mock_config, mock_get_server_version, mock_get_locales):
mock_config.return_value = mock_project_remote_config
mock_get_server_version.return_value = version_service_return_content
mock_get_locales.return_value = iteration_locales_return_content
self.context.build_local_config()
Expand All @@ -110,10 +115,13 @@ def test_build_remote_config(self, mock_get_server_version, mock_get_locales):
'if not found context will go for remote locale_map'
)
self.assertEqual(self.context.remote_config['server_version'], '3.7.3')
self.assertEqual(self.context.remote_config['project_type'], 'podir')

@mock.patch('zanataclient.zanatalib.projectservice.LocaleService.get_locales')
@mock.patch('zanataclient.zanatalib.versionservice.VersionService.get_server_version')
def test_get_context_data_local_locale_map(self, mock_get_server_version, mock_get_locales):
@mock.patch('zanataclient.zanatalib.projectservice.IterationService.config')
def test_get_context_data_local_locale_map(self, mock_config, mock_get_server_version, mock_get_locales):
mock_config.return_value = mock_project_remote_config
mock_get_server_version.return_value = version_service_return_content
mock_get_locales.return_value = project_locales_return_content
context_data = self.context.get_context_data()
Expand All @@ -133,9 +141,11 @@ def test_get_context_data_local_locale_map(self, mock_get_server_version, mock_g
@mock.patch('zanataclient.parseconfig.ZanataConfig.read_project_config')
@mock.patch('zanataclient.zanatalib.projectservice.LocaleService.get_locales')
@mock.patch('zanataclient.zanatalib.versionservice.VersionService.get_server_version')
@mock.patch('zanataclient.zanatalib.projectservice.IterationService.config')
def test_get_context_data_remote_locale_map(
self, mock_get_server_version, mock_get_locales, mock_read_project_config
self, mock_config, mock_get_server_version, mock_get_locales, mock_read_project_config
):
mock_config.return_value = mock_project_remote_config
mock_get_server_version.return_value = version_service_return_content
mock_get_locales.return_value = project_locales_return_content
mock_read_project_config.return_value = project_config_without_locale_map
Expand All @@ -151,5 +161,10 @@ def test_process_locales(self):
self.assertEqual(locale_map, {'bn-IN': 'bn-IN', 'pa-IN': 'pa', 'en-US': 'en-US',
'hi-IN': 'hi', 'ta-IN': 'ta-IN'})

def test_init_context(self):
context_data = self.init_context.get_context_data()
self.assertIn('servers', context_data)
self.assertIn('http://localhost:8080/zanata', context_data['servers'])

if __name__ == '__main__':
unittest.main()
2 changes: 2 additions & 0 deletions test/test_parseconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ def test_user_config(self):
server = self.config.get_server("http://localhost:8080/zanata")
user_name = self.config.get_config_value("username", 'servers', server)
apikey = self.config.get_config_value("key", 'servers', server)
servers = self.config.get_servers()
self.assertIn('http://localhost:8080/zanata', servers)
self.assertEqual(server, "local")
self.assertEqual(user_name, "username")
self.assertEqual(apikey, "key")
Expand Down
13 changes: 13 additions & 0 deletions test/test_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,13 @@
SERVICE_RESPONSE_503 = {'status': '503'}
RESPONSE_CONTENT = {}
RESPONSE_CONTENT_200 = '[{"project-name": "test-project", "project-id": "12345"}]'
SERVICE_RESPONSE_200_XML = {'status': '200', 'content-type': 'application/xml'}
RESPONSE_CONTENT_200_XML = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n' \
'<config xmlns="http://zanata.org/namespace/config/">\n ' \
'<url>https://translate.zanata.org/zanata/</url>\n ' \
'<project>test-project</project>\n ' \
'<project-version>12345</project-version>\n ' \
'<project-type>podir</project-type>\n\n</config>\n'


class ServiceTest(unittest.TestCase):
Expand All @@ -49,6 +56,12 @@ def test_messages_status_200(self):
self.assertEqual(result_set[0]['project-id'], "12345")
self.assertEqual(result_set[0]['project-name'], "test-project")

def test_messages_status_200_xml(self):
result_set = self.service.messages(SERVICE_RESPONSE_200_XML, RESPONSE_CONTENT_200_XML)
self.assertEqual(result_set['project-version'], "12345")
self.assertEqual(result_set['project'], "test-project")
self.assertEqual(result_set['project-type'], "podir")

def test_messages_status_201(self):
result_set = self.service.messages(SERVICE_RESPONSE_201, RESPONSE_CONTENT)
self.assertTrue(result_set)
Expand Down
51 changes: 32 additions & 19 deletions zanataclient/cmdbase.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,28 @@
log = Logger()


class CommandsBase(object):
"""
This is base class for all zpc commands
"""
class CommandsInit(object):
_fields = ['args', 'context_data']

def __init__(self, *args, **kargs):
for name, val in zip(self._fields, args):
setattr(self, name, val)
for key, value in kargs.iteritems():
setattr(self, key, value)

def check_essential(self, item, message):
if not item:
log.error(message)
sys.exit(1)
return item


class CommandsBase(CommandsInit):
"""
This is base class for zpc commands
"""
def __init__(self, *args, **kargs):
super(CommandsBase, self).__init__(*args, **kargs)
self.zanatacmd = self.create_zanatacmd()

def create_zanatacmd(self):
Expand All @@ -61,12 +72,6 @@ def generate_zanatacmd(self, url, headers):
sys.exit(1)
return ZanataCommand(url, headers)

def check_essential(self, item, message):
if not item:
log.error(message)
sys.exit(1)
return item


class ListProjects(CommandsBase):
def __init__(self, *args, **kargs):
Expand Down Expand Up @@ -107,19 +112,27 @@ def __init__(self, *args, **kargs):
super(CreateProject, self).__init__(*args, **kargs)

def run(self):
if self.args:
if len(self.args) > 0:
project_id = self.args[0]
else:
log.error("Please provide PROJECT_ID for creating project")
sys.exit(1)
if self.context_data.get('project_name'):
project_name = self.context_data['project_name']
else:
log.error("Please specify project name with '--project-name' option")
sys.exit(1)
if self.context_data.get('project_desc'):
project_desc = self.context_data['project_desc']
self.zanatacmd.create_project(project_id, project_name, project_desc)
self.check_essential(
self.context_data.get('project_name'),
"Please specify project name with '--project-name' option"
)
project_name = self.context_data['project_name']
project_desc = self.context_data['project_desc'] \
if self.context_data.get('project_desc') else ''
project_type = (
self.context_data['project_type']
if self.context_data.get('project_type') and (self.context_data.get('project_type')
in ('gettext', 'podir'))
else 'IterationProject'
)
self.zanatacmd.create_project(
project_id, project_name, project_desc, project_type
)


class CreateVersion(CommandsBase):
Expand Down
Loading

0 comments on commit bdbd01e

Please sign in to comment.