# -*- coding: utf-8 -*- """Tests for compositor.session model.""" from odoo.tests import common, tagged @tagged("post_install", "-at_install") class TestCompositorSession(common.TransactionCase): def setUp(self): super().setUp() self.Session = self.env["compositor.session"] self.App = self.env["compositor.app"] def test_create_session_defaults(self): session = self.Session.create({}) self.assertEqual(session.state, "pending") self.assertTrue(session.compositor_session_id) self.assertEqual(session.user_id, self.env.user) self.assertEqual(session.app_count, 0) self.assertEqual(session.running_app_count, 0) def test_session_app_lifecycle(self): session = self.Session.create({}) app = self.App.create({ "name": "Test", "app_id": "test-lifecycle", "executable": "/bin/true", }) inst = self.env["compositor.session.app"].create({ "session_id": session.id, "app_id": app.id, }) self.assertEqual(inst.state, "launching") inst.write({"state": "running"}) self.assertEqual(session.running_app_count, 1) inst.action_terminate() self.assertEqual(inst.state, "terminated") self.assertEqual(session.running_app_count, 0) def test_action_close(self): session = self.Session.create({}) app = self.App.create({"name": "X", "app_id": "x", "executable": "/bin/true"}) inst = self.env["compositor.session.app"].create({ "session_id": session.id, "app_id": app.id, "state": "running", }) session.action_close() self.assertEqual(session.state, "closed") self.assertEqual(inst.state, "terminated")