fix(guild): emblem_list wire shape — add wire-shape test locking shape (b)

GuildEmblemListTask.Parse reads jsonData[i][emblem_id].ToLong(),
confirming shape (b): array of objects with emblem_id. The existing
List<GuildEmblemEntry> DTO was already correct. Add
EmblemList_serializes_as_array_of_objects_with_emblem_id test to
GuildWireShape to lock the shape in.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-06-27 12:38:57 -04:00
parent cb5fc8d2d6
commit f9361fa467

View File

@@ -13,6 +13,28 @@ public class GuildWireShape
DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull,
};
[Test]
public void EmblemList_serializes_as_array_of_objects_with_emblem_id()
{
// GuildEmblemListTask.Parse() reads jsonData[i]["emblem_id"].ToLong()
// → wire must be an array of objects, each with an "emblem_id" string field.
var resp = new GuildEmblemListResponse
{
EmblemList = new() { new GuildEmblemEntry { EmblemId = 100_000_001L }, new GuildEmblemEntry { EmblemId = 100_000_002L } }
};
var json = JsonSerializer.Serialize(resp, Opts);
using var doc = JsonDocument.Parse(json);
var arr = doc.RootElement.GetProperty("guild_emblem_list");
Assert.That(arr.ValueKind, Is.EqualTo(JsonValueKind.Array));
Assert.That(arr.GetArrayLength(), Is.EqualTo(2));
var first = arr[0];
Assert.That(first.ValueKind, Is.EqualTo(JsonValueKind.Object));
Assert.That(first.GetProperty("emblem_id").ValueKind, Is.EqualTo(JsonValueKind.String));
Assert.That(first.GetProperty("emblem_id").GetString(), Is.EqualTo("100000001"));
}
[Test]
public void GuildInfo_non_joined_serializes_to_prod_shape()
{