Example #1
0
        public void Add_WithOutOfBoundsIndex_Fails(string position)
        {
            // Arrange
            var resolver     = new Mock <IContractResolver>(MockBehavior.Strict);
            var targetObject = new List <string>()
            {
                "James", "Mike"
            };
            var listAdapter = new ListAdapter();

            // Act
            var addStatus = listAdapter.TryAdd(targetObject, position, resolver.Object, "40", out var message);

            // Assert
            Assert.False(addStatus);
            Assert.Equal($"The index value provided by path segment '{position}' is out of bounds of the array size.", message);
        }
Example #2
0
        public void Patch_WithInvalidPositionFormat_Fails(string position)
        {
            // Arrange
            var resolver     = new Mock <IContractResolver>(MockBehavior.Strict);
            var targetObject = new List <string>()
            {
                "James", "Mike"
            };
            var listAdapter = new ListAdapter();

            // Act
            var addStatus = listAdapter.TryAdd(targetObject, position, resolver.Object, "40", out var message);

            // Assert
            Assert.False(addStatus);
            Assert.Equal($"The path segment '{position}' is invalid for an array index.", message);
        }
Example #3
0
        public void Replace_NonCompatibleType_Fails()
        {
            // Arrange
            var resolver     = new Mock <IContractResolver>(MockBehavior.Strict);
            var targetObject = new List <int>()
            {
                10, 20
            };
            var listAdapter = new ListAdapter();

            // Act
            var replaceStatus = listAdapter.TryReplace(targetObject, "-", resolver.Object, "James", out var message);

            // Assert
            Assert.False(replaceStatus);
            Assert.Equal("The value 'James' is invalid for target location.", message);
        }
Example #4
0
        public void Test_DoesNotThrowException_IfTestIsSuccessful()
        {
            // Arrange
            var resolver     = new Mock <IContractResolver>(MockBehavior.Strict);
            var targetObject = new List <int>()
            {
                10, 20
            };
            var listAdapter = new ListAdapter();

            // Act
            var testStatus = listAdapter.TryTest(targetObject, "0", resolver.Object, "10", out var message);

            //Assert
            Assert.True(testStatus);
            Assert.True(string.IsNullOrEmpty(message), "Expected no error message");
        }
Example #5
0
        public void Patch_OnNonGenericListObject_Fails()
        {
            // Arrange
            var resolver     = new Mock <IContractResolver>(MockBehavior.Strict);
            var targetObject = new ArrayList();

            targetObject.Add(20);
            targetObject.Add(30);
            var listAdapter = new ListAdapter();

            // Act
            var addStatus = listAdapter.TryAdd(targetObject, "-", resolver.Object, "40", out var message);

            // Assert
            Assert.False(addStatus);
            Assert.Equal($"The type '{targetObject.GetType().FullName}' which is a non generic list is not supported for json patch operations. Only generic list types are supported.", message);
        }
Example #6
0
        public void Add_NonCompatibleType_Fails()
        {
            // Arrange
            var resolver     = new DefaultContractResolver();
            var targetObject = new List <int>()
            {
                10, 20
            };
            var listAdapter = new ListAdapter();

            // Act
            var addStatus = listAdapter.TryAdd(targetObject, "-", resolver, "James", out var message);

            // Assert
            Assert.False(addStatus);
            Assert.Equal("The value 'James' is invalid for target location.", message);
        }
Example #7
0
        public void Add_NonCompatibleType_Fails()
        {
            // Arrange
            var resolver     = new Mock <IContractResolver>(MockBehavior.Strict);
            var targetObject = new List <int>()
            {
                10, 20
            };
            var listAdapter = new ListAdapter();

            // Act
            var addStatus = listAdapter.TryAdd(targetObject, "-", resolver.Object, "James", out var message);

            // Assert
            Assert.False(addStatus);
            Assert.Equal(string.Format("The value '{0}' is invalid for target location.", "James"), message);
        }
Example #8
0
        public void Test_ThrowsJsonPatchException_IfListPositionOutOfBounds()
        {
            // Arrange
            var resolver     = new DefaultContractResolver();
            var targetObject = new List <int>()
            {
                10, 20
            };
            var listAdapter          = new ListAdapter();
            var expectedErrorMessage = "The index value provided by path segment '2' is out of bounds of the array size.";

            // Act
            var testStatus = listAdapter.TryTest(targetObject, "2", resolver, "10", out var errorMessage);

            //Assert
            Assert.False(testStatus);
            Assert.Equal(expectedErrorMessage, errorMessage);
        }
Example #9
0
        public void Test_ThrowsJsonPatchException_IfTestFails()
        {
            // Arrange
            var resolver     = new DefaultContractResolver();
            var targetObject = new List <int>()
            {
                10, 20
            };
            var listAdapter          = new ListAdapter();
            var expectedErrorMessage = "The current value '20' at position '1' is not equal to the test value '10'.";

            // Act
            var testStatus = listAdapter.TryTest(targetObject, "1", resolver, "10", out var errorMessage);

            //Assert
            Assert.False(testStatus);
            Assert.Equal(expectedErrorMessage, errorMessage);
        }
Example #10
0
        public void Replace_ReplacesValue_AtGivenPosition(string position, List <int> expected)
        {
            // Arrange
            var resolver     = new DefaultContractResolver();
            var targetObject = new List <int>()
            {
                10, 20
            };
            var listAdapter = new ListAdapter();

            // Act
            var replaceStatus = listAdapter.TryReplace(targetObject, position, resolver, "30", out var message);

            // Assert
            Assert.True(replaceStatus);
            Assert.True(string.IsNullOrEmpty(message), "Expected no error message");
            Assert.Equal(expected, targetObject);
        }
Example #11
0
        public void Patch_OnArrayObject_Fails()
        {
            // Arrange
            var resolver     = new Mock <IContractResolver>(MockBehavior.Strict);
            var targetObject = new[] { 20, 30 };
            var listAdapter  = new ListAdapter();

            // Act
            var addStatus = listAdapter.TryAdd(targetObject, "0", resolver.Object, "40", out var message);

            // Assert
            Assert.False(addStatus);
            Assert.Equal(
                string.Format(
                    "The type '{0}' which is an array is not supported for json patch operations as it has a fixed size.",
                    targetObject.GetType().FullName),
                message);
        }
Example #12
0
        public void Replace_ReplacesValue_AtTheEnd()
        {
            // Arrange
            var resolver     = new Mock <IContractResolver>(MockBehavior.Strict);
            var targetObject = new List <int>()
            {
                10, 20
            };
            var listAdapter = new ListAdapter();

            // Act
            var replaceStatus = listAdapter.TryReplace(targetObject, "-", resolver.Object, "30", out var message);

            // Assert
            Assert.True(replaceStatus);
            Assert.True(string.IsNullOrEmpty(message), "Expected no error message");
            Assert.Equal(new List <int>()
            {
                10, 30
            }, targetObject);
        }
Example #13
0
        public void Add_NullObject_ToReferenceTypeListWorks()
        {
            // Arrange
            var resolver     = new DefaultContractResolver();
            var listAdapter  = new ListAdapter();
            var targetObject = new List <string>()
            {
                "James", "Mike"
            };

            // Act
            var addStatus = listAdapter.TryAdd(targetObject, "-", resolver, value: null, errorMessage: out var message);

            // Assert
            Assert.True(addStatus);
            Assert.True(string.IsNullOrEmpty(message), "Expected no error message");
            Assert.Equal(3, targetObject.Count);
            Assert.Equal(new List <string>()
            {
                "James", "Mike", null
            }, targetObject);
        }
Example #14
0
        public void Add_WithIndexSameAsNumberOfElements_Works()
        {
            // Arrange
            var resolver     = new DefaultContractResolver();
            var targetObject = new List <string>()
            {
                "James", "Mike"
            };
            var listAdapter = new ListAdapter();
            var position    = targetObject.Count.ToString(CultureInfo.InvariantCulture);

            // Act
            var addStatus = listAdapter.TryAdd(targetObject, position, resolver, "Rob", out var message);

            // Assert
            Assert.Null(message);
            Assert.True(addStatus);
            Assert.Equal(3, targetObject.Count);
            Assert.Equal(new List <string>()
            {
                "James", "Mike", "Rob"
            }, targetObject);
        }
Example #15
0
        public void Add_CompatibleTypeWorks()
        {
            // Arrange
            var sDto         = new SimpleObject();
            var iDto         = new InheritedObject();
            var resolver     = new DefaultContractResolver();
            var targetObject = new List <SimpleObject>()
            {
                sDto
            };
            var listAdapter = new ListAdapter();

            // Act
            var addStatus = listAdapter.TryAdd(targetObject, "-", resolver, iDto, out var message);

            // Assert
            Assert.True(addStatus);
            Assert.True(string.IsNullOrEmpty(message), "Expected no error message");
            Assert.Equal(2, targetObject.Count);
            Assert.Equal(new List <SimpleObject>()
            {
                sDto, iDto
            }, targetObject);
        }