nation_optimizer / tests /integration /test_openenv_server.py
thewildofficial
Add OpenEnv server slice
f0d0d63
Raw
History Blame Contribute Delete
1.65 kB
import json
from server.environment import NationOpenEnv
from server.models import NationAction, NationObservation, NationState
def assert_json_serializable(value: object) -> None:
json.dumps(value)
def test_openenv_wrapper_resets_steps_and_serializes_state() -> None:
env = NationOpenEnv()
reset_observation = env.reset(seed=123, episode_id="integration-smoke")
phase_2 = env.step(NationAction(actions=[]))
debate = env.step(
NationAction(
actions={
"type": "DEBATE",
"agent_id": "Health",
"message": "Health expects demand pressure this quarter.",
}
)
)
assert isinstance(reset_observation, NationObservation)
assert isinstance(env.state, NationState)
assert phase_2.state["phase"] == 2
assert debate.info["accepted_actions"][0]["type"] == "DEBATE"
assert not debate.done
assert_json_serializable(reset_observation.model_dump(mode="json"))
assert_json_serializable(debate.model_dump(mode="json"))
assert_json_serializable(env.state.model_dump(mode="json"))
def test_openenv_wrapper_supports_direct_allocation_smoke_round() -> None:
env = NationOpenEnv()
observation = env.reset(seed=7)
allocations = {
department: sector["demand"] * 1.1
for department, sector in observation.state["sectors"].items()
}
result = env.step(NationAction(direct_allocations=allocations))
assert result.state["round"] == 1
assert result.state["last_total_allocation"] > 0
assert result.reward is not None
assert_json_serializable(result.model_dump(mode="json"))