-@asynctest.mock.patch("n2vc.temporal_libjuju.Libjuju.get_controller")
-@asynctest.mock.patch("n2vc.temporal_libjuju.Libjuju.get_model")
-@asynctest.mock.patch("n2vc.temporal_libjuju.Libjuju.disconnect_model")
-@asynctest.mock.patch("n2vc.temporal_libjuju.Libjuju.disconnect_controller")
-@asynctest.mock.patch("n2vc.temporal_libjuju.Libjuju.wait_app_deployment_completion")
-@asynctest.mock.patch(
- "juju.model.Model.applications", new_callable=asynctest.PropertyMock
-)
-@asynctest.mock.patch("juju.model.Model.deploy")
-class DeployCharmTest(LibjujuTestCase):
- def setUp(self):
- super(DeployCharmTest, self).setUp()
-
- def test_existing_app_is_not_deployed(
- self,
- mock_deploy,
- mock_applications,
- mock_wait_app_deployment,
- mock_disconnect_controller,
- mock_disconnect_model,
- mock_get_model,
- mock_get_controller,
- ):
- mock_get_model.return_value = juju.model.Model()
- mock_applications.return_value = {"existing_app"}
-
- application = None
- with self.assertRaises(JujuApplicationExists):
- application = self.loop.run_until_complete(
- self.libjuju.deploy_charm(
- "existing_app",
- "path",
- "model",
- "machine",
- )
- )
- self.assertIsNone(application)
-
- mock_disconnect_controller.assert_called()
- mock_disconnect_model.assert_called()
-
- def test_app_is_deployed(
- self,
- mock_deploy,
- mock_applications,
- mock_wait_app_deployment,
- mock_disconnect_controller,
- mock_disconnect_model,
- mock_get_model,
- mock_get_controller,
- ):
- mock_get_model.return_value = juju.model.Model()
- mock_deploy.return_value = Mock()
- self.loop.run_until_complete(
- self.libjuju.deploy_charm(
- "app",
- "path",
- "model",
- series="series",
- num_units=2,
- )
- )
- mock_deploy.assert_called_once_with(
- entity_url="path",
- application_name="app",
- channel="stable",
- num_units=2,
- series="series",
- config=None,
- )
- mock_wait_app_deployment.assert_called()
- mock_disconnect_controller.assert_called()
- mock_disconnect_model.assert_called()
-
-