public void SingleResultValueConverter_CanSerializeSingleResultOfT()
        {
            // Arrange & Act & Assert
            IEnumerable <Customer> customers = new Customer[]
            {
                new Customer {
                    Id = 1, Name = "abc"
                },
                new Customer {
                    Id = 2, Name = "efg"
                }
            };

            SingleResult <Customer> result = new SingleResult <Customer>(customers.AsQueryable());

            JsonSerializerOptions      options          = new JsonSerializerOptions();
            SingleResultValueConverter converterFactory = new SingleResultValueConverter();
            Type type = typeof(SingleResult <Customer>);
            SingleResultConverter <Customer> typeConverter = converterFactory.CreateConverter(type, options) as SingleResultConverter <Customer>;

            // Act
            string json = SerializeUtils.SerializeAsJson(jsonWriter => typeConverter.Write(jsonWriter, result, options));

            // Assert
            Assert.Equal("{\"Id\":1,\"Name\":\"abc\"}", json);
        }
        public void CanConvert_WorksForSingleResultValueConverter(Type type, bool expected)
        {
            // Arrange
            SingleResultValueConverter converter = new SingleResultValueConverter();

            // Act & Assert
            Assert.Equal(expected, converter.CanConvert(type));
        }
        public void CreateConverter_WorksForSingleResultValueConverter()
        {
            // Arrange
            JsonSerializerOptions      options   = new JsonSerializerOptions();
            SingleResultValueConverter converter = new SingleResultValueConverter();

            // Act & Assert
            Type          type          = typeof(SingleResult <object>);
            JsonConverter typeConverter = converter.CreateConverter(type, options);

            Assert.Equal(typeof(SingleResultConverter <object>), typeConverter.GetType());

            // Act & Assert
            type          = typeof(IEnumerable <object>);
            typeConverter = converter.CreateConverter(type, options);
            Assert.Null(typeConverter);
        }