Esempio n. 1
0
        private static string ToActual(JsonPatchBuilder builder)
        {
            var withSpaces = builder.ToString();
            var crunched   = String.Concat(withSpaces.Where(character => !Char.IsWhiteSpace(character)));

            return(crunched);
        }
Esempio n. 2
0
        public void WorkItemRemovals()
        {
            var before = GetBaselineWorkItem();
            var after  = GetBaselineWorkItem();

            after.Relations.Remove(after.Relations.First(item => item.Index == 19));
            after.Relations.Remove(after.Relations.First(item => item.Index == 12));
            after.Relations.Remove(after.Relations.First(item => item.Index == 0));

            var patch = JsonPatchBuilder.GenerateDeltaPatch <ADOWorkItem>(before, after);

            Assert.AreEqual(3, patch.PatchCount);

            AssertJsonContains(patch, JArray.FromObject(new dynamic[]
            {
                new
                {
                    op   = "remove",
                    path = "/relations/0"
                },
                new
                {
                    op   = "remove",
                    path = "/relations/12"
                },
                new
                {
                    op   = "remove",
                    path = "/relations/19"
                }
            }));
        }
Esempio n. 3
0
        public void WorkItemAdditions()
        {
            ADOWorkItem from = GetBaselineWorkItem();
            ADOWorkItem to   = GetBaselineWorkItem();

            var patchFromEmpty = JsonPatchBuilder.GenerateDeltaPatch(new ADOWorkItem(), to);

            AssertJsonContains(patchFromEmpty, JObject.FromObject(new
            {
                op    = "add",
                path  = "/id",
                value = to.Id
            }));
            AssertJsonContains(patchFromEmpty, JObject.FromObject(new
            {
                op    = "add",
                path  = "/fields/System.Title",
                value = to.Title
            }));

            var patch = JsonPatchBuilder.GenerateDeltaPatch(from, to);

            Assert.AreEqual(0, patch.PatchCount);

            to.AssignedTo = new ADOPerson()
            {
                DisplayName = "John Doe", Email = "*****@*****.**"
            };
            to.Relations.Add(new ADOWorkItemRelationInfo()
            {
                Name = "Test Name", Type = "Test Type"
            });
            patch = JsonPatchBuilder.GenerateDeltaPatch(from, to);
            Assert.AreEqual(2, patch.PatchCount);
            AssertJsonContains(patch, JObject.FromObject(new
            {
                op    = "add",
                path  = "/fields/System.AssignedTo",
                value = new
                {
                    uniqueName = to.AssignedTo.Email
                }
            }));
            AssertJsonContains(patch, JObject.FromObject(new
            {
                op    = "add",
                path  = "/relations/-",
                value = new
                {
                    rel        = "ArtifactLink",
                    url        = (string)null,
                    attributes = new
                    {
                        name = "Test Name"
                    }
                }
            }));
        }
Esempio n. 4
0
        public void SingleRemove()
        {
            var builder = new JsonPatchBuilder()
                          .Remove(this.removePath);

            Assert.AreEqual(
                ToExpectedFull("remove", this.removePath),
                ToActual(builder));
        }
Esempio n. 5
0
        public void SingleAddNumber()
        {
            var builder = new JsonPatchBuilder()
                          .Add(this.addPath, 3);

            Assert.AreEqual(
                ToExpectedFull("add", this.addPath, "3"),
                ToActual(builder));
        }
Esempio n. 6
0
        public void SingleAddText()
        {
            var builder = new JsonPatchBuilder()
                          .Add(this.addPath, this.testTextValue);

            Assert.AreEqual(
                ToExpectedFull("add", this.addPath, $"\"{this.testTextValue}\""),
                ToActual(builder));
        }
Esempio n. 7
0
        public void CombinePatches()
        {
            var original = new JsonPatchBuilder()
                           .Add(this.addPath, 4);
            var toBeAdded = new JsonPatchBuilder()
                            .Remove(this.removePath);

            original += toBeAdded;
            Assert.AreEqual(2, original.PatchCount);
        }
Esempio n. 8
0
        public void WorkItemMixedOperations()
        {
            var before = GetBaselineWorkItem();
            var after  = GetBaselineWorkItem();

            after.Title = "Modified title";
            after.State = null;
            after.Relations.Remove(after.Relations.First(item => item.Index == 12));
            after.Relations.Add(new ADOWorkItemRelationInfo()
            {
                Name = "New relation name",
                Url  = "New relation url"
            });

            var patch = JsonPatchBuilder.GenerateDeltaPatch(before, after);

            Assert.AreEqual(4, patch.PatchCount);
            AssertJsonContains(patch, JObject.FromObject(new
            {
                op    = "replace",
                path  = "/fields/System.Title",
                value = "Modified title"
            }));
            AssertJsonContains(patch, JObject.FromObject(new
            {
                op   = "remove",
                path = "/fields/System.State"
            }));
            AssertJsonContains(patch, JObject.FromObject(new
            {
                op   = "remove",
                path = "/relations/12"
            }));
            AssertJsonContains(patch, JObject.FromObject(new
            {
                op    = "add",
                path  = "/relations/-",
                value = new
                {
                    rel        = "ArtifactLink",
                    url        = "New relation url",
                    attributes = new
                    {
                        name = "New relation name"
                    },
                }
            }));
        }
Esempio n. 9
0
        public void MultipleHeterogeneousOperations()
        {
            var builder = new JsonPatchBuilder()
                          .Add(this.addPath, 4)
                          .Remove(this.removePath)
                          .Add(this.addPath, this.testDynamicValue)
                          .Replace(this.replacePath, true)
                          .Add(this.addPath, this.testTextValue);
            var expected = "["
                           + ToExpectedObject("add", this.addPath, "4")
                           + "," + ToExpectedObject("remove", this.removePath)
                           + "," + ToExpectedObject("add", this.addPath, this.testDynamicExpectedSerialized)
                           + "," + ToExpectedObject("replace", this.replacePath, "true")
                           + "," + ToExpectedObject("add", this.addPath, $"\"{this.testTextValue}\"")
                           + "]";

            Assert.AreEqual(5, builder.PatchCount);
            Assert.AreEqual(expected, ToActual(builder));
        }
Esempio n. 10
0
 private void AssertJsonContains(JsonPatchBuilder builder, JToken item)
 => AssertJsonContains(JArray.Parse(builder.ToString()), item);