import os from ..config import DJANGO_SETTINGS_DIR from ..program import Program from .base import DjangoDeployTestCase class ProgramTestCase(DjangoDeployTestCase): def setUp(self): self._program = Program() self._tmp_dir = str(self.tmpdir) def test_create(self): project_dir = os.path.join(self._tmp_dir, 'new') exitval = self._program(argv=['--create', project_dir]) self.assertEqual(os.EX_OK, exitval) self.assert_django_project(project_dir) self.assert_django_deploy_hooks(project_dir) def test_create_in_empty_dir(self): project_dir = self._tmp_dir exitval = self._program(argv=['-c', project_dir]) self.assertEqual(os.EX_OK, exitval) self.assert_django_project(project_dir) self.assert_django_deploy_hooks(project_dir) def test_create_in_project_dir(self): project_dir = self._tmp_dir self._program(argv=['-c', project_dir]) exitval = self._program(argv=['-c', project_dir]) self.assertNotEqual(os.EX_OK, exitval) def test_create_without_hooks(self): project_dir = self._tmp_dir exitval = self._program(argv=['-c', '--no-install-hooks', project_dir]) self.assertEqual(os.EX_OK, exitval) self.assert_django_project(project_dir) self.assert_no_django_deploy_hooks(project_dir) def test_install_hooks_without_project_dir(self): project_dir = os.path.join(self._tmp_dir, 'new') exitval = self._program(argv=['--install-hooks', project_dir]) self.assertNotEqual(os.EX_OK, exitval) project_dir = os.path.join(self._tmp_dir) exitval = self._program(argv=['--install-hooks', project_dir]) self.assertNotEqual(os.EX_OK, exitval) def test_install_hooks_in_pure_django(self): project_dir = self._tmp_dir cmd = 'django-admin startproject {name} {path}'.format(name=DJANGO_SETTINGS_DIR, path=project_dir) os.system(cmd) exitval = self._program(argv=['--install-hooks', project_dir]) self.assertEqual(os.EX_OK, exitval) self.assert_django_project(project_dir) self.assert_django_deploy_hooks(project_dir) def test_install_hooks_twice(self): project_dir = self._tmp_dir self._program(argv=['-c', project_dir]) exitval = self._program(argv=['--install-hooks', project_dir]) self.assertEqual(os.EX_SOFTWARE, exitval) def test_install_apps(self): project_dir = self._tmp_dir argv = [ '-c', '--install-app', 'django_deploy.tests.fake_app1', '--install-app', 'django_deploy.tests.fake_app1', '-a', 'django_deploy.tests.fake_app2', project_dir ] exitval = self._program(argv=argv) self.assertEqual(os.EX_OK, exitval) # Similar code from test_api.test_install_apps installed_apps = [ 'django_deploy.tests.fake_app1', 'django_deploy.tests.fake_app2', ] self.assert_installed_apps(project_dir, installed_apps) self.assert_urlpatterns(project_dir, []) def test_install_apps_with_error(self): project_dir = self._tmp_dir argv = [ '-c', '-a', 'django_deploy.tests.fake_app1', '-a', 'django_deploy.tests.fake_app0', '-a', 'django_deploy.tests.fake_app2', project_dir ] exitval = self._program(argv=argv) self.assertNotEqual(os.EX_OK, exitval) installed_apps = [ 'django_deploy.tests.fake_app1', 'django_deploy.tests.fake_app2', ] self.assert_installed_apps(project_dir, installed_apps) def test_mount_apps(self): project_dir = self._tmp_dir argv = [ '-c', '--mount-app', 'django_deploy.tests.fake_app1', 'app1', '--mount-app', 'django_deploy.tests.fake_app1', 'app1', '-m', 'django_deploy.tests.fake_app2', 'app2', project_dir ] exitval = self._program(argv=argv) self.assertEqual(os.EX_OK, exitval) # Similar code from test_api.test_mount_apps expected_urlpatterns = [ ('URLResolver', '^app1/', 'django_deploy.tests.fake_app1.urls'), ('URLResolver', '^app2/', 'django_deploy.tests.fake_app2.urls'), ] self.assert_urlpatterns(project_dir, expected_urlpatterns) # Similar code from test_api.test_mount_apps installed_apps = [ 'django_deploy.tests.fake_app1', 'django_deploy.tests.fake_app2', ] self.assert_installed_apps(project_dir, installed_apps) def test_mount_apps_with_errors(self): project_dir = self._tmp_dir self._program(argv=['-c', project_dir]) argv = [ '-m', 'django_deploy.tests.fake_app1', 'app1', '-m', 'django_deploy.tests.fake_app0', 'app0', '-m', 'django_deploy.tests.fake_app2', 'app2', project_dir ] exitval = self._program(argv=argv) self.assertNotEqual(os.EX_OK, exitval) # Similar code from test_api.test_mount_apps expected_urlpatterns = [ ('URLResolver', '^app1/', 'django_deploy.tests.fake_app1.urls'), ('URLResolver', '^app2/', 'django_deploy.tests.fake_app2.urls'), ] self.assert_urlpatterns(project_dir, expected_urlpatterns)