Add list_offers function to libjuju.py
[osm/N2VC.git] / n2vc / tests / unit / test_libjuju.py
index f517afc..27f0454 100644 (file)
@@ -907,3 +907,38 @@ class ModelsExistTest(LibjujuTestCase):
         )
         self.assertTrue(exist)
         self.assertEqual(non_existing_models, [])
+
+
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.get_controller")
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.disconnect_controller")
+@asynctest.mock.patch("juju.controller.Controller.list_offers")
+class ListOffers(LibjujuTestCase):
+    def setUp(self):
+        super(ListOffers, self).setUp()
+
+    def test_disconnect_controller(
+        self, mock_list_offers, mock_disconnect_controller, mock_get_controller,
+    ):
+        mock_get_controller.return_value = juju.controller.Controller()
+        mock_list_offers.side_effect = Exception()
+        with self.assertRaises(Exception):
+            self.loop.run_until_complete(self.libjuju.list_offers("model"))
+        mock_disconnect_controller.assert_called_once()
+
+    def test_empty_list(
+        self, mock_list_offers, mock_disconnect_controller, mock_get_controller,
+    ):
+        mock_get_controller.return_value = juju.controller.Controller()
+        mock_list_offers.return_value = []
+        offers = self.loop.run_until_complete(self.libjuju.list_offers("model"))
+        self.assertEqual(offers, [])
+        mock_disconnect_controller.assert_called_once()
+
+    def test_non_empty_list(
+        self, mock_list_offers, mock_disconnect_controller, mock_get_controller,
+    ):
+        mock_get_controller.return_value = juju.controller.Controller()
+        mock_list_offers.return_value = ["offer"]
+        offers = self.loop.run_until_complete(self.libjuju.list_offers("model"))
+        self.assertEqual(offers, ["offer"])
+        mock_disconnect_controller.assert_called_once()