Skip to content

Commit 73ef459

Browse files
committed
Add failing unit tests, trying to come up with a test case for #218
1 parent 496dac4 commit 73ef459

File tree

1 file changed

+136
-0
lines changed

1 file changed

+136
-0
lines changed

metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2058,6 +2058,142 @@ public void shouldCopyBindVarWithDollarAfterLookup() {
20582058
);
20592059
}
20602060

2061+
@Test
2062+
@MetafixToDo("Should insert into specific object, but inserts into all")
2063+
public void shouldCopyToFieldWithIndexAndReservedFieldName() {
2064+
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
2065+
"set_array('a[].*.test[]', 'test')",
2066+
"copy_field('some', 'a[].1.test[].$append')",
2067+
"remove_field('some')"
2068+
),
2069+
i -> {
2070+
i.startRecord("1");
2071+
i.literal("some", "thing");
2072+
i.startEntity("a[]");
2073+
i.startEntity("1");
2074+
i.literal("name", "Dog");
2075+
i.endEntity();
2076+
i.startEntity("2");
2077+
i.literal("name", "Cat");
2078+
i.endEntity();
2079+
i.endEntity();
2080+
i.endRecord();
2081+
},
2082+
(o, f) -> {
2083+
o.get().startRecord("1");
2084+
o.get().startEntity("a[]");
2085+
o.get().startEntity("1");
2086+
o.get().literal("name", "Dog");
2087+
o.get().startEntity("test[]");
2088+
o.get().literal("1", "test");
2089+
o.get().literal("2", "thing");
2090+
f.apply(2).endEntity();
2091+
o.get().startEntity("2");
2092+
o.get().literal("name", "Cat");
2093+
o.get().startEntity("test[]");
2094+
o.get().literal("1", "test");
2095+
f.apply(3).endEntity();
2096+
o.get().endRecord();
2097+
}
2098+
);
2099+
}
2100+
2101+
@Test
2102+
@MetafixToDo("Should insert into specific object, but inserts into all")
2103+
public void shouldCopyToFieldWithTwoReservedFieldNames() {
2104+
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
2105+
"set_array('a[].*.test[]', 'test')",
2106+
"copy_field('some', 'a[].$first.test[].$append')",
2107+
"remove_field('some')"
2108+
),
2109+
i -> {
2110+
i.startRecord("1");
2111+
i.literal("some", "thing");
2112+
i.startEntity("a[]");
2113+
i.startEntity("1");
2114+
i.literal("name", "Dog");
2115+
i.endEntity();
2116+
i.startEntity("2");
2117+
i.literal("name", "Cat");
2118+
i.endEntity();
2119+
i.endEntity();
2120+
i.endRecord();
2121+
},
2122+
(o, f) -> {
2123+
o.get().startRecord("1");
2124+
o.get().startEntity("a[]");
2125+
o.get().startEntity("1");
2126+
o.get().literal("name", "Dog");
2127+
o.get().startEntity("test[]");
2128+
o.get().literal("1", "test");
2129+
o.get().literal("2", "thing");
2130+
f.apply(2).endEntity();
2131+
o.get().startEntity("2");
2132+
o.get().literal("name", "Cat");
2133+
o.get().startEntity("test[]");
2134+
o.get().literal("1", "test");
2135+
f.apply(3).endEntity();
2136+
o.get().endRecord();
2137+
}
2138+
);
2139+
}
2140+
2141+
@Test
2142+
@MetafixToDo("Existing value has no path ('[[a]]'), resulting in wrong path for new value")
2143+
public void shouldMoveFieldToPathWithIndexAndReservedField() {
2144+
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
2145+
"move_field('b', 'names[].1.$append')"
2146+
),
2147+
i -> {
2148+
i.startRecord("1");
2149+
i.literal("b", "b");
2150+
i.startEntity("names[]");
2151+
i.startEntity("1[]");
2152+
i.literal("1", "a");
2153+
i.endEntity();
2154+
i.endEntity();
2155+
i.endRecord();
2156+
},
2157+
(o, f) -> {
2158+
o.get().startRecord("1");
2159+
o.get().startEntity("names[]");
2160+
o.get().startEntity("1[]");
2161+
o.get().literal("1", "a");
2162+
o.get().literal("2", "b");
2163+
f.apply(2).endEntity();
2164+
o.get().endRecord();
2165+
}
2166+
);
2167+
}
2168+
2169+
@Test
2170+
@MetafixToDo("Existing value has no path ('[[a]]'), resulting in wrong path for new value")
2171+
public void shouldMoveFieldToPathWithTwoReservedFields() {
2172+
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
2173+
"move_field('b', 'names[].$first.$append')"
2174+
),
2175+
i -> {
2176+
i.startRecord("1");
2177+
i.literal("b", "b");
2178+
i.startEntity("names[]");
2179+
i.startEntity("1[]");
2180+
i.literal("1", "a");
2181+
i.endEntity();
2182+
i.endEntity();
2183+
i.endRecord();
2184+
},
2185+
(o, f) -> {
2186+
o.get().startRecord("1");
2187+
o.get().startEntity("names[]");
2188+
o.get().startEntity("1[]");
2189+
o.get().literal("1", "a");
2190+
o.get().literal("2", "b");
2191+
f.apply(2).endEntity();
2192+
o.get().endRecord();
2193+
}
2194+
);
2195+
}
2196+
20612197
@Test
20622198
// See https://github.com/metafacture/metafacture-fix/issues/121
20632199
public void shouldReplaceAllRegexesInNestedArray() {

0 commit comments

Comments
 (0)