feat(client): net primitives — DmResponse, NarrateResult, DmTransport, ProxyConfig

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-10 09:54:03 -05:00
parent b4d22f5c5f
commit 18a18820fe
10 changed files with 126 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
extends "res://addons/gut/test.gd"
const DmResponse = preload("res://scripts/net/dm_response.gd")
const NarrateResult = preload("res://scripts/net/narrate_result.gd")
const DmTransport = preload("res://scripts/net/dm_transport.gd")
const ProxyConfig = preload("res://scripts/net/proxy_config.gd")
func test_dm_response_ok():
var r = DmResponse.ok(200, {"prose": "hi"})
assert_eq(r.status, 200)
assert_true(r.transport_ok)
assert_eq(r.body, {"prose": "hi"})
assert_eq(r.error, "")
func test_dm_response_failed():
var r = DmResponse.failed("boom")
assert_false(r.transport_ok)
assert_eq(r.status, 0)
assert_eq(r.body, null)
assert_eq(r.error, "boom")
func test_narrate_result_basic():
var r = NarrateResult.new("text", ["a"], false)
assert_eq(r.display_text, "text")
assert_eq(r.facts, ["a"])
assert_false(r.degraded)
func test_narrate_result_fallback():
var r = NarrateResult.fallback("cold chamber")
assert_eq(r.display_text, "cold chamber")
assert_eq(r.facts, [])
assert_true(r.degraded)
func test_transport_base_returns_not_implemented():
var t = DmTransport.new()
var r = await t.post_json("/x", {})
assert_false(r.transport_ok)
assert_eq(r.error, "transport not implemented")
func test_proxy_config_default():
ProjectSettings.set_setting(ProxyConfig.SETTING, null)
assert_eq(ProxyConfig.base_url(), ProxyConfig.DEFAULT)
func test_proxy_config_override():
ProjectSettings.set_setting(ProxyConfig.SETTING, "http://example.test:9000")
assert_eq(ProxyConfig.base_url(), "http://example.test:9000")
ProjectSettings.set_setting(ProxyConfig.SETTING, null)