refactor: isolate forward payload serialization

This commit is contained in:
kris
2026-03-28 08:29:05 +08:00
parent 0783f4da14
commit 13c67425ab
4 changed files with 293 additions and 195 deletions

View File

@@ -28,7 +28,10 @@ public class ForwardTargetActivityTest {
assertEquals("single", payload.optString("mode"));
assertEquals("m1", payload.optString("sourceMessageId"));
assertEquals("{\"mode\":\"single\",\"sourceMessageId\":\"m1\"}", payload.toString());
assertEquals(
"{\"targetProjectId\":\"target\",\"mode\":\"single\",\"sourceMessageId\":\"m1\"}",
ForwardPayloads.toRequestBody("target", payload)
);
}
@Test
@@ -39,7 +42,16 @@ public class ForwardTargetActivityTest {
assertEquals(2, payload.optJSONArray("sourceMessageIds").length());
assertEquals("m1", payload.optJSONArray("sourceMessageIds").optString(0));
assertEquals("m2", payload.optJSONArray("sourceMessageIds").optString(1));
assertEquals("{\"mode\":\"bundle\",\"sourceMessageIds\":[\"m1\",\"m2\"]}", payload.toString());
assertEquals(
"{\"targetProjectId\":\"target\",\"mode\":\"bundle\",\"sourceMessageIds\":[\"m1\",\"m2\"]}",
ForwardPayloads.toRequestBody("target", payload)
);
}
@Test
public void approvalRequiredResponseUsesApprovalMessage() {
StubJSONObject response = new StubJSONObject().withBoolean("approvalRequired", true);
assertEquals("已提交主 Agent 审批", ForwardTargetActivity.resolveForwardResultMessage(response));
}
private static final class StubJSONObject extends JSONObject {
@@ -50,6 +62,11 @@ public class ForwardTargetActivityTest {
return this;
}
StubJSONObject withBoolean(String key, boolean value) {
values.put(key, value);
return this;
}
@Override
public String optString(String key) {
Object value = values.get(key);
@@ -61,6 +78,12 @@ public class ForwardTargetActivityTest {
Object value = values.get(key);
return value instanceof String ? (String) value : fallback;
}
@Override
public boolean optBoolean(String key, boolean fallback) {
Object value = values.get(key);
return value instanceof Boolean ? (Boolean) value : fallback;
}
}
private static final class StubJSONArray extends JSONArray {