using Newtonsoft.Json.Linq; using Oms.Application.Integrations.SmallBagTrack; using Oms.Application.Services.Orders.Batch; using Oms.Domain.OrdersAggregate.Consts; using Xunit; namespace Oms.Tests; public class OrderBatchTrackUpsertResultBuilderTests { [Fact] public void BuildSuccess_IncludesTrackResponseBody() { var trackResult = new SmallBagTrackUpsertResult { Skipped = false, Success = true, Url = "http://track/ProviderService/Order/UpsertSmallBag", RequestJson = "{\"orderNo\":\"IDE001\"}", StatusCode = 200, ResponseBody = "{\"code\":0,\"data\":{\"id\":1001}}" }; var json = OrderBatchTrackUpsertResultBuilder.BuildSuccess(trackResult, 9001, "IDE001"); var obj = JObject.Parse(json); Assert.True(obj.Value("success")); Assert.Equal(OrderBatchActionCodes.TrackUpsertSmallBag, obj.Value("action")); Assert.Equal("轨迹订单创建成功", obj.Value("message")); Assert.Equal(9001, obj.Value("orderId")); Assert.Equal("IDE001", obj.Value("serviceNo")); var trackUpsert = obj["trackUpsert"] as JObject; Assert.NotNull(trackUpsert); Assert.Equal(200, trackUpsert!.Value("responseStatusCode")); Assert.Equal(0, trackUpsert["responseBody"]!.Value("code")); Assert.Equal(1001, trackUpsert["responseBody"]!["data"]!.Value("id")); } }