diff --git a/src/Elastic.Clients.Elasticsearch/Types/SourceConfig.cs b/src/Elastic.Clients.Elasticsearch/Types/SourceConfig.cs index 99112976e9e..d9fdff1fba9 100644 --- a/src/Elastic.Clients.Elasticsearch/Types/SourceConfig.cs +++ b/src/Elastic.Clients.Elasticsearch/Types/SourceConfig.cs @@ -60,5 +60,15 @@ internal class SourceConfigConverter : JsonConverter return null; } - public override void Write(Utf8JsonWriter writer, SourceConfig value, JsonSerializerOptions options) => throw new NotImplementedException(); + public override void Write(Utf8JsonWriter writer, SourceConfig value, JsonSerializerOptions options) + { + if (value.HasBoolValue) + { + writer.WriteBooleanValue(value.Item1); + } + else + { + JsonSerializer.Serialize(writer, value.Item2, options); + } + } } diff --git a/tests/Tests/Search/Search/SearchRequestSerialization.cs b/tests/Tests/Search/Search/SearchRequestSerialization.cs new file mode 100644 index 00000000000..0e1c42e18e6 --- /dev/null +++ b/tests/Tests/Search/Search/SearchRequestSerialization.cs @@ -0,0 +1,34 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Threading.Tasks; +using Elastic.Clients.Elasticsearch.Core.Search; +using Tests.Serialization; +using VerifyXunit; + +namespace Tests.Search.Search; + +[UsesVerify] +public class SearchRequestSerialization : SerializerTestBase +{ + [U] + public async Task SearchRequestWithSourceProperty_SerializesCorrectly() + { + var descriptor = new SearchRequestDescriptor("test") + .Source(new SourceConfig(false)); + + var json = await SerializeAndGetJsonStringAsync(descriptor); + + await Verifier.VerifyJson(json); + + var searchRequest = new SearchRequest("test") + { + Source = new SourceConfig(false), + }; + + var objectJson = await SerializeAndGetJsonStringAsync(searchRequest); + objectJson.Should().Be(json); + } +} diff --git a/tests/Tests/_VerifySnapshots/SearchRequestSerialization.SearchRequestWithSourceProperty_SerializesCorrectly.verified.txt b/tests/Tests/_VerifySnapshots/SearchRequestSerialization.SearchRequestWithSourceProperty_SerializesCorrectly.verified.txt new file mode 100644 index 00000000000..fe59f761020 --- /dev/null +++ b/tests/Tests/_VerifySnapshots/SearchRequestSerialization.SearchRequestWithSourceProperty_SerializesCorrectly.verified.txt @@ -0,0 +1,3 @@ +{ + _source: false +} \ No newline at end of file