From 9fbf3a988b2dc48ee923defe094525dd02399d09 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 7 Nov 2025 00:35:50 +0000 Subject: [PATCH 1/3] Initial plan From 2fcdc6a62ba8af3a3f937e7387a0177f6f3a3abc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 7 Nov 2025 01:04:27 +0000 Subject: [PATCH 2/3] Add SpectorTests for SpreadRecordNonDiscriminatedUnion3 scenario Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com> --- .../AdditionalPropertiesTests.cs | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs index 0550b638447..2017f6055e9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs @@ -841,6 +841,45 @@ public Task SpreadRecordNonDiscriminatedUnion2Put() => Test(async host => Assert.AreEqual(204, response.GetRawResponse().Status); }); + [SpectorTest] + public Task SpreadRecordNonDiscriminatedUnion3Get() => Test(async host => + { + var response = await new AdditionalPropertiesClient(host, null).GetSpreadRecordNonDiscriminatedUnion3Client().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual("abc", response.Value.Name); + Assert.AreEqual(2, response.Value.AdditionalProperties.Count); + var prop1Array = response.Value.AdditionalProperties["prop1"].ToObjectFromJson(); + Assert.IsNotNull(prop1Array); + Assert.AreEqual(2, prop1Array!.Length); + Assert.AreEqual("2021-01-01T00:00:00Z", prop1Array[0]!.Start); + Assert.AreEqual("2021-01-01T00:00:00Z", prop1Array[1]!.Start); + var prop2 = ModelReaderWriter.Read(response.Value.AdditionalProperties["prop2"]); + Assert.AreEqual(new DateTimeOffset(2021, 1, 1, 0, 0, 0, TimeSpan.Zero), prop2!.Start); + Assert.AreEqual(new DateTimeOffset(2021, 1, 2, 0, 0, 0, TimeSpan.Zero), prop2.End); + }); + + [SpectorTest] + public Task SpreadRecordNonDiscriminatedUnion3Put() => Test(async host => + { + var value = new SpreadRecordForNonDiscriminatedUnion3("abc") + { + AdditionalProperties = + { + ["prop1"] = BinaryData.FromObjectAsJson(new[] + { + new WidgetData2("2021-01-01T00:00:00Z"), + new WidgetData2("2021-01-01T00:00:00Z") + }), + ["prop2"] = ModelReaderWriter.Write(new WidgetData1(new DateTimeOffset(2021, 1, 1, 0, 0, 0, TimeSpan.Zero)) + { + End = new DateTimeOffset(2021, 1, 2, 0, 0, 0, TimeSpan.Zero) + }) + } + }; + var response = await new AdditionalPropertiesClient(host, null).GetSpreadRecordNonDiscriminatedUnion3Client().PutAsync(value); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + [SpectorTest] public Task SpreadRecordUnionGet() => Test(async host => { From 18ed3502ed1ed601c2d3ca1ffa9a9c9f0e41fd18 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 7 Nov 2025 01:08:11 +0000 Subject: [PATCH 3/3] Add explanatory comments for serialization method choices Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com> --- .../Property/AdditionalProperties/AdditionalPropertiesTests.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs index 2017f6055e9..c7c176b3239 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs @@ -865,11 +865,13 @@ public Task SpreadRecordNonDiscriminatedUnion3Put() => Test(async host => { AdditionalProperties = { + // Use BinaryData.FromObjectAsJson for the array since arrays don't implement IJsonModel ["prop1"] = BinaryData.FromObjectAsJson(new[] { new WidgetData2("2021-01-01T00:00:00Z"), new WidgetData2("2021-01-01T00:00:00Z") }), + // Use ModelReaderWriter.Write for single model objects ["prop2"] = ModelReaderWriter.Write(new WidgetData1(new DateTimeOffset(2021, 1, 1, 0, 0, 0, TimeSpan.Zero)) { End = new DateTimeOffset(2021, 1, 2, 0, 0, 0, TimeSpan.Zero)