Ejemplo n.º 1
0
        public void AreJsonObjectsSemanticallyEqual_WhenArrayExcludePathIsGiven_ItDoesNotFail()
        {
            var a = @"
                {
                  ""a"": {
                    ""b"": [
                      { ""c"": 1 },
                      { ""c"": 2 },
                    ]
                  }
                }
            ";

            var b = @"
                {
                  ""a"": {
                    ""b"": [
                      { ""c"": 1 },
                      { ""c"": 3 },
                    ]
                  }
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(
                                          a,
                                          b,
                                          new List <string> {
                "a.b[1]"
            }));

            Assert.Null(ex);
        }
Ejemplo n.º 2
0
        public void It_Fails_WhenDifferentValuesForSameKey()
        {
            var a = @"
                {
                    ""a"": {}
                }
            ";

            var b = @"
                {
                    ""a"": 2
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.NotNull(ex);

            Assert.Equal(
                @"################### expected:
{
  ""a"": {}
}

################### actual:
{
  ""a"": 2
}

Token of path 'a' and type Object is different from 'a' of type Integer
", ex.Message, ignoreLineEndingDifferences: true);
        }
Ejemplo n.º 3
0
        public void It_DoesNothing_When_JsonsAreSemanticallyEqual_NoNested()
        {
            var a = @"{ ""a"": 1,    ""b"": ""foo"" }";
            var b = @"{""b"": ""foo"", ""a"": 1 }";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.Null(ex);
        }
Ejemplo n.º 4
0
        public void It_DoesNothing_When_JsonsAreSemanticallyEqual_Empty()
        {
            var a = "{}";
            var b = "{}";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.Null(ex);
        }
Ejemplo n.º 5
0
        public void AreJsonObjectsSemanticallyEqual_WhenBothJsonAreOneLevelDeepWithSameBody_ItDoesNotFail()
        {
            var a = @"{ ""a"": 1,    ""b"": ""foo"" }";
            var b = @"{""b"": ""foo"", ""a"": 1 }";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.Null(ex);
        }
Ejemplo n.º 6
0
        public void AreJsonObjectsSemanticallyEqual_WhenBothJsonsAreEmpty_ItDoesNotFail()
        {
            var a = "{}";
            var b = "{}";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.Null(ex);
        }
Ejemplo n.º 7
0
        public void It_DoesNothing_When_JsonsAreSemanticallyEqual()
        {
            var a = @"
                {
                    ""str"": ""bar"",
                    ""num"": 12.90,
                    ""arr"": [
                        {
                            ""bool"": true,
                            ""null"": null,
                            ""int"": 1
                        }
                    ],
                    ""obj"": {
                        ""nested"": {
                            ""num"": 123,
                            ""arr1"": [1, 2, 3],
                            ""arr2"": [{}],
                            ""arr3"": [true, false],
                            ""arr4"": [""foobar""]
                        }
                    }
                }
            ";

            var b = @"
                {
                    ""num"": 12.90,
                    ""obj"": {
                        ""nested"": {
                            ""num"": 123,
                            ""arr1"": [1, 2, 3],
                            ""arr4"": [""foobar""],
                            ""arr3"": [true, false],
                            ""arr2"": [{}]
                        }
                    },
                    ""str"": ""bar"",
                    ""arr"": [
                        {
                            ""int"": 1,
                            ""null"": null,
                            ""bool"": true
                        }
                    ]
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.Null(ex);
        }
Ejemplo n.º 8
0
        public void AreJsonObjectsSemanticallyEqual_WhenSimplyPropExcludePathIsGiven_ItDoesNotFail()
        {
            var a = @"{ ""a"": 1,    ""b"": ""foo_a"" }";
            var b = @"{""b"": ""foo_b"", ""a"": 1 }";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(
                                          a,
                                          b,
                                          new List <string> {
                "b"
            }));

            Assert.Null(ex);
        }
Ejemplo n.º 9
0
        public void AreJsonObjectsSemanticallyEqual_WhenObjectInArrayIsMissingProperty_ItFails()
        {
            var a = @"
                {
                    ""arr"": [{""a"": 1}]
                }
            ";

            var b = @"
                {
                    ""arr"": [{""a"": 1, ""b"": 2}]
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.NotNull(ex);

            Assert.Equal(
                @"################### Expected:
{
  ""arr"": [
    {
      ""a"": 1
    }
  ]
}

******************* Actual:
{
  ""arr"": [
    {
      ""a"": 1,
      ""b"": 2
    }
  ]
}

Objects for path arr[0] are different.
Expected:
{
  ""a"": 1
}
Actual:
{
  ""a"": 1,
  ""b"": 2
}
", ex.Message, ignoreLineEndingDifferences: true);
        }
Ejemplo n.º 10
0
        public void It_Fails_When_MissingProperty()
        {
            var a = @"
                {
                    ""arr"": [{""a"": 1}]
                }
            ";

            var b = @"
                {
                    ""arr"": [{""a"": 1, ""b"": 2}]
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.NotNull(ex);

            Assert.Equal(
                @"################### expected:
{
  ""arr"": [
    {
      ""a"": 1
    }
  ]
}

################### actual:
{
  ""arr"": [
    {
      ""a"": 1,
      ""b"": 2
    }
  ]
}

{
  ""a"": 1
} is different from {
  ""a"": 1,
  ""b"": 2
}
", ex.Message, ignoreLineEndingDifferences: true);
        }
Ejemplo n.º 11
0
        public void It_Fails_When_JsonArraySequenceIsDifferent()
        {
            var a = @"
                {
                    ""arr"": [1, 2, 3]
                }
            ";

            var b = @"
                {
                    ""arr"": [3, 2, 1]
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.NotNull(ex);

            Assert.Equal(
                @"################### expected:
{
  ""arr"": [
    1,
    2,
    3
  ]
}

################### actual:
{
  ""arr"": [
    3,
    2,
    1
  ]
}

Assert.Equal() Failure
          ↓ (pos 0)
Expected: 1
Actual:   3
          ↑ (pos 0)
", ex.Message, ignoreLineEndingDifferences: true);
        }
Ejemplo n.º 12
0
        public void AreJsonObjectsSemanticallyEqual_WhenObjectsHaveDifferentPropertyNames_ItFails()
        {
            var a = @"
                {
                    ""a"": {""b"": 1}
                }
            ";

            var b = @"
                {
                    ""a"": {""c"": 1}
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.NotNull(ex);

            Assert.Equal(
                @"################### Expected:
{
  ""a"": {
    ""b"": 1
  }
}

******************* Actual:
{
  ""a"": {
    ""c"": 1
  }
}

Property: 'a.b' is missing in actual object
Expected:
{
  ""b"": 1
}
Actual:
{
  ""c"": 1
}
", ex.Message, ignoreLineEndingDifferences: true);
        }
Ejemplo n.º 13
0
        public void AreJsonObjectsSemanticallyEqual_WhenArraysHaveDifferentValue_ItFails()
        {
            var a = @"
                {
                    ""arr"": [1, 2, 3]
                }
            ";

            var b = @"
                {
                    ""arr"": [3, 2, 1]
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.NotNull(ex);

            Assert.Equal(
                @"################### Expected:
{
  ""arr"": [
    1,
    2,
    3
  ]
}

******************* Actual:
{
  ""arr"": [
    3,
    2,
    1
  ]
}

Values for path arr[0] are different.
Expected: 1
Actual: 3
", ex.Message, ignoreLineEndingDifferences: true);
        }
Ejemplo n.º 14
0
        public void AreJsonObjectsSemanticallyEqual_WhenPropertiesForObjectAreOfDifferentType_ItFails()
        {
            var a = @"
                {
                    ""a"": {
                      ""b"": 1
                    }
                }
            ";

            var b = @"
                {
                    ""a"": {
                      ""b"": {}
                    }
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.NotNull(ex);

            Assert.Equal(
                @"################### Expected:
{
  ""a"": {
    ""b"": 1
  }
}

******************* Actual:
{
  ""a"": {
    ""b"": {}
  }
}

Token of path 'a.b' of type Integer is different from 'a.b' of type Object
", ex.Message, ignoreLineEndingDifferences: true);
        }
Ejemplo n.º 15
0
        public void AreJsonObjectsSemanticallyEqual_WhenArrayExcludePathIsGiven_ItFails()
        {
            var a = @"
                {
                  ""a"": {
                    ""b"": [
                      { ""c"": 1 },
                      { ""c"": 2 },
                    ]
                  }
                }
            ";

            var b = @"
                {
                  ""a"": {
                    ""b"": [
                      { ""c"": 1 },
                      { ""c"": 3 },
                    ]
                  }
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(
                                          a,
                                          b,
                                          new List <string> {
                "a.b[0]"
            }));

            Assert.NotNull(ex);

            Assert.Equal(
                @"################### Expected:
{
  ""a"": {
    ""b"": [
      {
        ""c"": 1
      },
      {
        ""c"": 2
      }
    ]
  }
}

******************* Actual:
{
  ""a"": {
    ""b"": [
      {
        ""c"": 1
      },
      {
        ""c"": 3
      }
    ]
  }
}

Values for path a.b[1].c are different.
Expected: 2
Actual: 3
", ex.Message, ignoreLineEndingDifferences: true);
        }
Ejemplo n.º 16
0
        public void AreJsonObjectsSemanticallyEqual_WhenArraysHaveDifferentLength_ItFails()
        {
            var a = @"
                {
                    ""a"": {
                      ""b"": [
                        {""c"": 1}
                      ]
                    }
                }
            ";

            var b = @"
                {
                    ""a"": {
                      ""b"": [
                        {""c"": 1 },
                        {""d"": 1 }
                      ]
                }
            ";

            var ex = Record.Exception(() => AssertHelper.AreJsonObjectsSemanticallyEqual(a, b));

            Assert.NotNull(ex);

            Assert.Equal(
                @"################### Expected:
{
  ""a"": {
    ""b"": [
      {
        ""c"": 1
      }
    ]
  }
}

******************* Actual:
{
  ""a"": {
    ""b"": [
      {
        ""c"": 1
      },
      {
        ""d"": 1
      }
    ]
  }
}

Arrays for path a.b have different length.
Expected [
  {
    ""c"": 1
  }
]
Actual:
[
  {
    ""c"": 1
  },
  {
    ""d"": 1
  }
]
", ex.Message, ignoreLineEndingDifferences: true);
        }