diff --git a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java index 0f28956c..556f5ad8 100644 --- a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java +++ b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java @@ -127,7 +127,7 @@ public void apply(final Metafix metafix, final Record record, final List add_field { @Override public void apply(final Metafix metafix, final Record record, final List params, final Map options) { - record.addNested(params.get(0), new Value(params.get(1))); + record.set(params.get(0), new Value(params.get(1))); } }, array { // array-from-hash diff --git a/metafix/src/test/java/org/metafacture/metafix/MetafixBindTest.java b/metafix/src/test/java/org/metafacture/metafix/MetafixBindTest.java index 4268a57a..3063a337 100644 --- a/metafix/src/test/java/org/metafacture/metafix/MetafixBindTest.java +++ b/metafix/src/test/java/org/metafacture/metafix/MetafixBindTest.java @@ -572,8 +572,9 @@ public void ifInCollectorCombine() { private void shouldIterateOverList(final String path, final int expectedCount) { MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "set_array('trace')", "do list(path: '" + path + "', 'var': '$i')", - " add_field('trace', 'true')", + " add_field('trace.$append', 'true')", "end", "retain('trace')" ), @@ -617,8 +618,9 @@ public void shouldIterateOverListWithWildcard() { private void shouldIterateOverListOfHashes(final String path, final int expectedCount) { MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "set_array('trace')", "do list(path: '" + path + "', 'var': '$i')", - " add_field('trace', 'true')", + " add_field('trace.$append', 'true')", "end", "retain('trace')" ), diff --git a/metafix/src/test/java/org/metafacture/metafix/MetafixIfTest.java b/metafix/src/test/java/org/metafacture/metafix/MetafixIfTest.java index a97f6b71..849aa431 100644 --- a/metafix/src/test/java/org/metafacture/metafix/MetafixIfTest.java +++ b/metafix/src/test/java/org/metafacture/metafix/MetafixIfTest.java @@ -2416,9 +2416,10 @@ public void shouldMatchString() { @Test public void shouldTestMacroVariable() { MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "set_array('type')", "do put_macro('test')", " if str_contain('name', 'a$[var]')", - " add_field('type', 'Organization: $[var]')", + " add_field('type.$append', 'Organization: $[var]')", " end", "end", "call_macro('test', 'var': 'm')", diff --git a/metafix/src/test/java/org/metafacture/metafix/MetafixRecordTest.java b/metafix/src/test/java/org/metafacture/metafix/MetafixRecordTest.java index 10435111..20bcdc18 100644 --- a/metafix/src/test/java/org/metafacture/metafix/MetafixRecordTest.java +++ b/metafix/src/test/java/org/metafacture/metafix/MetafixRecordTest.java @@ -236,6 +236,48 @@ public void add() { i.startRecord("3"); i.endRecord(); }, + o -> { + o.get().startRecord("1"); + o.get().startEntity("my"); + o.get().literal("name", "nicolas"); + o.get().endEntity(); + o.get().endRecord(); + + o.get().startRecord("2"); + o.get().startEntity("my"); + o.get().literal("name", "nicolas"); + o.get().endEntity(); + o.get().endRecord(); + + o.get().startRecord("3"); + o.get().startEntity("my"); + o.get().literal("name", "nicolas"); + o.get().endEntity(); + o.get().endRecord(); + } + ); + } + + @Test + public void addWithAppendInNewArray() { + MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "set_array('my.name')", + "add_field('my.name.$append','patrick')", + "add_field('my.name.$append','nicolas')" + ), + i -> { + i.startRecord("1"); + i.endRecord(); + + i.startRecord("2"); + i.startEntity("my"); + i.literal("name", "max"); + i.endEntity(); + i.endRecord(); + + i.startRecord("3"); + i.endRecord(); + }, o -> { o.get().startRecord("1"); o.get().startEntity("my"); @@ -246,7 +288,6 @@ public void add() { o.get().startRecord("2"); o.get().startEntity("my"); - o.get().literal("name", "max"); o.get().literal("name", "patrick"); o.get().literal("name", "nicolas"); o.get().endEntity(); @@ -1992,8 +2033,9 @@ public void arrayFromHash() { @Test public void shouldCallMacro() { MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "set_array('test')", "do put_macro('test')", - " add_field('test', '42')", + " add_field('test.$append', '42')", "end", "call_macro('test')", "call_macro('test')" @@ -2030,9 +2072,10 @@ public void shouldNotCallUnknownMacro() { @Test public void shouldCallMacroWithVariables() { MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "set_array('test')", "put_vars(a: '1', b: '2')", // global variables "do put_macro('test', b: '22', c: '33')", // "static" local variables - " add_field('test', '$[a]-$[b]-$[c]-$[d]')", + " add_field('test.$append', '$[a]-$[b]-$[c]-$[d]')", "end", "call_macro('test', c: '333', d: '444')", // "dynamic" local variables "call_macro('test', b: '555', d: '666')", diff --git a/metafix/src/test/java/org/metafacture/metafix/MetafixScriptTest.java b/metafix/src/test/java/org/metafacture/metafix/MetafixScriptTest.java index 0eed13b6..7506cf01 100644 --- a/metafix/src/test/java/org/metafacture/metafix/MetafixScriptTest.java +++ b/metafix/src/test/java/org/metafacture/metafix/MetafixScriptTest.java @@ -202,9 +202,9 @@ public void shouldDoNothing() { public void shouldIncludeFixFile() { MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( "set_array('trace')", - "add_field('trace', 'before include')", + "add_field('trace.$append', 'before include')", "include('src/test/resources/org/metafacture/metafix/fixes/base.fix')", - "add_field('trace', 'after include')" + "add_field('trace.$append', 'after include')" ), i -> { i.startRecord("1"); @@ -281,13 +281,13 @@ public void shouldNotLeakVariablesFromIncludingFixFile() { public void shouldIncludeFixFileInBind() { MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( "set_array('trace')", - "add_field('trace', 'before bind')", + "add_field('trace.$append', 'before bind')", "do list(path: 'data', 'var': '$i')", " paste('trace.$append', '~before include', '$i')", " include('src/test/resources/org/metafacture/metafix/fixes/var.fix')", " paste('trace.$append', '~after include', '$i')", "end", - "add_field('trace', 'after bind')" + "add_field('trace.$append', 'after bind')" ), i -> { i.startRecord("1"); diff --git a/metafix/src/test/resources/org/metafacture/metafix/fixes/include.fix b/metafix/src/test/resources/org/metafacture/metafix/fixes/include.fix index 859edd3d..9f8f6d39 100644 --- a/metafix/src/test/resources/org/metafacture/metafix/fixes/include.fix +++ b/metafix/src/test/resources/org/metafacture/metafix/fixes/include.fix @@ -1,6 +1,6 @@ unless exists("trace") set_array("trace") end -add_field("trace", "before include") +add_field("trace.$append", "before include") include("./base.fix") -add_field("trace", "after include") +add_field("trace.$append", "after include") diff --git a/metafix/src/test/resources/org/metafacture/metafix/fixes/nested.fix b/metafix/src/test/resources/org/metafacture/metafix/fixes/nested.fix index 40a7a48a..33c9ede0 100644 --- a/metafix/src/test/resources/org/metafacture/metafix/fixes/nested.fix +++ b/metafix/src/test/resources/org/metafacture/metafix/fixes/nested.fix @@ -1,4 +1,4 @@ set_array("trace") -add_field("trace", "before nested") +add_field("trace.$append", "before nested") include("src/test/resources/org/metafacture/metafix/fixes/include.fix") -add_field("trace", "after nested") +add_field("trace.$append", "after nested") diff --git a/metafix/src/test/resources/org/metafacture/metafix/integration/record/fromJson/toJson/add_fieldSimpleDestructive/todo.txt b/metafix/src/test/resources/org/metafacture/metafix/integration/record/fromJson/toJson/add_fieldSimpleDestructive/todo.txt deleted file mode 100644 index 14e84792..00000000 --- a/metafix/src/test/resources/org/metafacture/metafix/integration/record/fromJson/toJson/add_fieldSimpleDestructive/todo.txt +++ /dev/null @@ -1 +0,0 @@ -See issue #116