public void JsonElement_Array_value()
        {
            const string json = "[\"one\",\"two\"]";
            var          je   = SystemJsonSerializer.Deserialize <JsonElement>(json);

            DimensionsCollectionHelper.SerializeValue(je).Should().Be(json);
        }
        public void JArray_value()
        {
            const string json = "[\"one\",\"two\"]";
            var          ja   = JsonConvert.DeserializeObject <JArray>(json);

            DimensionsCollectionHelper.SerializeValue(ja).Should().Be(json);
        }
        public void JsonElement_Object_value()
        {
            const string json = "{\"Prop1\":\"one\",\"Prop2\":2}";
            var          je   = SystemJsonSerializer.Deserialize <JsonElement>(json);

            DimensionsCollectionHelper.SerializeValue(je).Should().Be(json);
        }
        public void JObject_value()
        {
            const string json = "{\"Prop1\":\"one\",\"Prop2\":2}";
            var          jo   = JsonConvert.DeserializeObject <JObject>(json);

            DimensionsCollectionHelper.SerializeValue(jo).Should().Be(json);
        }
        public void Nullable_Int32_null_value()
        {
            int?value = null;

            // ReSharper disable once ExpressionIsAlwaysNull
            DimensionsCollectionHelper.SerializeValue(value).Should().BeNull();
        }
        public void On_json_serialization_exception_should_return_null()
        {
            var value = new CircularCustomObject
            {
                Prop1 = "one"
            };

            value.Self = value;

            DimensionsCollectionHelper.SerializeValue(value).Should().BeNull();
        }
        public void Dictionary_value()
        {
            var value = new Dictionary <string, int>
            {
                { "key1", 1 },
                { "key2", 2 }
            };
            const string expected = "{\"key1\":1,\"key2\":2}";

            DimensionsCollectionHelper.SerializeValue(value).Should().Be(expected);
        }
        public void Custom_object_value()
        {
            var value = new CustomObject
            {
                Prop1 = "one",
                Prop2 = 2
            };
            const string expected = "{\"Prop1\":\"one\",\"Prop2\":2}";

            DimensionsCollectionHelper.SerializeValue(value).Should().Be(expected);
        }
        public void Problem_Details_With_Extensions()
        {
            var value = new ProblemDetails
            {
                Extensions =
                {
                    { "Prop1", "one" },
                    { "Prop2",     2 }
                }
            };
            const string expected = "{\"Prop1\":\"one\",\"Prop2\":2}";

            DimensionsCollectionHelper.SerializeValue(value).Should().Be(expected);
        }
        public void Custom_Problem_Details_With_Extensions()
        {
            var value = new CustomProblemDetails
            {
                Prop1      = "one",
                Prop2      = 2,
                Extensions =
                {
                    { "Prop3", "three" },
                    { "Prop4",       4 }
                }
            };
            const string expected = "{\"Prop1\":\"one\",\"Prop2\":2,\"Prop3\":\"three\",\"Prop4\":4}";

            DimensionsCollectionHelper.SerializeValue(value).Should().Be(expected);
        }
        public void One_Anonymous_Object_Dimension_To_Collect()
        {
            // given
            var existing = new Dictionary <string, string>();

            // when
            var anon       = new { Prop1 = "Value1", Prop2 = 10 };
            var dimensions = new Dictionary <string, object>
            {
                ["InterestingKey"] = anon
            };

            existing.SetDimensions(dimensions);

            // then
            var expected = new Dictionary <string, string>
            {
                ["InterestingKey"] = DimensionsCollectionHelper.SerializeValue(anon)
            };

            existing.Should().BeEquivalentTo(expected);
        }
 public void String_value()
 {
     DimensionsCollectionHelper.SerializeValue("value").Should().Be("value");
 }
 public void Int32_value()
 {
     DimensionsCollectionHelper.SerializeValue(10).Should().Be("10");
 }
        public void DateTimeOffset_value()
        {
            var dtm = new DateTimeOffset(new DateTime(1999, 12, 31, 23, 59, 59));

            DimensionsCollectionHelper.SerializeValue(dtm).Should().Be("1999-12-31T23:59:59.0000000+00:00");
        }
        public void DateTime_utc_value()
        {
            var dtm = new DateTime(1999, 12, 31, 23, 59, 59, DateTimeKind.Utc);

            DimensionsCollectionHelper.SerializeValue(dtm).Should().Be("1999-12-31T23:59:59.0000000Z");
        }
        public void DateTime_default_kind_value()
        {
            var dtm = new DateTime(1999, 12, 31, 23, 59, 59);

            DimensionsCollectionHelper.SerializeValue(dtm).Should().Be("1999-12-31T23:59:59.0000000");
        }
        public void Int64_value()
        {
            const long value = 10;

            DimensionsCollectionHelper.SerializeValue(value).Should().Be("10");
        }
        public void Nullable_Int32_value()
        {
            int?value = 10;

            DimensionsCollectionHelper.SerializeValue(value).Should().Be("10");
        }