File size: 1,454 Bytes
bd67155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from __future__ import annotations

import unittest
from pathlib import Path

from pydantic import BaseModel

from support_ops_env.env import SupportOpsEnv
from support_ops_env.models import Action, Observation, RewardModel


class OpenEnvSpecTest(unittest.TestCase):
    def test_models_are_pydantic(self) -> None:
        self.assertTrue(issubclass(Observation, BaseModel))
        self.assertTrue(issubclass(Action, BaseModel))
        self.assertTrue(issubclass(RewardModel, BaseModel))

    def test_reset_and_step_shapes(self) -> None:
        env = SupportOpsEnv()
        observation = env.reset()
        self.assertIsInstance(observation, Observation)
        next_observation, reward, done, info = env.step(Action(action_type="inspect_ticket"))
        self.assertIsInstance(next_observation, Observation)
        self.assertIsInstance(reward, RewardModel)
        self.assertIsInstance(done, bool)
        self.assertIsInstance(info, dict)

    def test_state_model_exists(self) -> None:
        env = SupportOpsEnv()
        self.assertEqual(env.state().task_id, env.reset().task_id)

    def test_openenv_metadata_file_exists(self) -> None:
        path = Path(__file__).resolve().parent.parent / "openenv.yaml"
        self.assertTrue(path.exists())
        text = path.read_text(encoding="utf-8")
        self.assertIn("name: support-ops-env", text)
        self.assertIn("openenv", text)


if __name__ == "__main__":
    unittest.main()