Skip to content

Commit 960a5c9

Browse files
committed
can skip test ops
1 parent 0f6d2d9 commit 960a5c9

File tree

2 files changed

+36
-7
lines changed

2 files changed

+36
-7
lines changed

patch/diff.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,24 @@ import (
99
)
1010

1111
type Diff struct {
12-
Left interface{}
13-
Right interface{}
12+
Left interface{}
13+
Right interface{}
14+
Unchecked bool
1415
}
1516

1617
func (d Diff) Calculate() Ops {
17-
return d.calculate(d.Left, d.Right, []Token{RootToken{}})
18+
ops := d.calculate(d.Left, d.Right, []Token{RootToken{}})
19+
if !d.Unchecked {
20+
return ops
21+
}
22+
23+
newOps := []Op{}
24+
for _, op := range ops {
25+
if _, ok := op.(TestOp); !ok {
26+
newOps = append(newOps, op)
27+
}
28+
}
29+
return newOps
1830
}
1931

2032
func (d Diff) calculate(left, right interface{}, tokens []Token) []Op {

patch/diff_test.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,21 @@ var _ = Describe("Diff.Calculate", func() {
3838
)
3939
})
4040

41-
It("can replace doc root", func() {
42-
testDiff(nil, "a", []Op{
43-
TestOp{Path: MustNewPointerFromString(""), Value: nil},
41+
It("can skip test operations", func() {
42+
expectedOps := []Op{
4443
ReplaceOp{Path: MustNewPointerFromString(""), Value: "a"},
45-
})
44+
}
45+
46+
var left interface{}
47+
right := "a"
48+
49+
diffOps := Diff{Left: left, Right: right, Unchecked: true}.Calculate()
50+
Expect(diffOps).To(Equal(Ops(expectedOps)))
51+
52+
result, err := Ops(diffOps).Apply(left)
53+
Expect(err).ToNot(HaveOccurred())
54+
55+
Expect(result).To(Equal(right))
4656
})
4757

4858
It("can replace doc root with nil", func() {
@@ -52,6 +62,13 @@ var _ = Describe("Diff.Calculate", func() {
5262
})
5363
})
5464

65+
It("can replace doc root", func() {
66+
testDiff(nil, "a", []Op{
67+
TestOp{Path: MustNewPointerFromString(""), Value: nil},
68+
ReplaceOp{Path: MustNewPointerFromString(""), Value: "a"},
69+
})
70+
})
71+
5572
It("can diff maps", func() {
5673
testDiff(
5774
map[interface{}]interface{}{"a": 123},

0 commit comments

Comments
 (0)