1818
1919import org .metafacture .framework .StreamReceiver ;
2020
21+ import org .junit .jupiter .api .Disabled ;
2122import org .junit .jupiter .api .Test ;
2223import org .junit .jupiter .api .extension .ExtendWith ;
2324import org .junit .jupiter .api .extension .RegisterExtension ;
3637 * @author Fabian Steeg
3738 */
3839@ ExtendWith (MockitoExtension .class )
40+ @ SuppressWarnings ("checkstyle:MultipleStringLiterals" )
3941public class MetafixRecordTest {
4042
4143 @ RegisterExtension
@@ -48,20 +50,19 @@ public MetafixRecordTest() {
4850 }
4951
5052 @ Test
51- public void shouldSupportLookingAtOtherFieldsAny () {
52- final String name = "name" ;
53+ public void ifAnyMatch () {
5354 MetafixTestHelpers .assertFix (streamReceiver , Arrays .asList (//
5455 "if any_match('name', '.*University.*')" , //
5556 " add_field('type', 'Organization')" , //
5657 "end" ), //
5758 i -> {
5859 i .startRecord ("1" );
59- i .literal (name , "Max Musterman" );
60+ i .literal (" name" , "Max Musterman" );
6061 i .endRecord ();
6162 //
6263 i .startRecord ("2" );
63- i .literal (name , "Some University" );
64- i .literal (name , "Filibandrina" );
64+ i .literal (" name" , "Some University" );
65+ i .literal (" name" , "Filibandrina" );
6566 i .endRecord ();
6667 }, o -> {
6768 o .get ().startRecord ("1" );
@@ -74,21 +75,20 @@ public void shouldSupportLookingAtOtherFieldsAny() {
7475 }
7576
7677 @ Test
77- public void shouldSupportLookingAtOtherFieldsAll () {
78- final String name = "name" ;
78+ public void ifAllMatch () {
7979 MetafixTestHelpers .assertFix (streamReceiver , Arrays .asList (//
8080 "if all_match('name', '.*University.*')" , //
8181 " add_field('type', 'Organization')" , //
8282 "end" ), //
8383 i -> {
8484 i .startRecord ("1" );
85- i .literal (name , "Max Musterman" );
86- i .literal (name , "A University" );
85+ i .literal (" name" , "Max Musterman" );
86+ i .literal (" name" , "A University" );
8787 i .endRecord ();
8888 //
8989 i .startRecord ("2" );
90- i .literal (name , "Some University" );
91- i .literal (name , "University Filibandrina" );
90+ i .literal (" name" , "Some University" );
91+ i .literal (" name" , "University Filibandrina" );
9292 i .endRecord ();
9393 }, o -> {
9494 o .get ().startRecord ("1" );
@@ -100,4 +100,128 @@ public void shouldSupportLookingAtOtherFieldsAll() {
100100 });
101101 }
102102
103+ @ Test
104+ public void ifAnyMatchNested () {
105+ MetafixTestHelpers .assertFix (streamReceiver , Arrays .asList (//
106+ "if any_match('author.name.label', '.*University.*')" , //
107+ " add_field('author.type', 'Organization')" , //
108+ "end" ), //
109+ i -> {
110+ i .startRecord ("1" );
111+ i .startEntity ("author" );
112+ i .startEntity ("name" );
113+ i .literal ("label" , "Max Musterman" );
114+ i .endEntity ();
115+ i .endEntity ();
116+ i .endRecord ();
117+ //
118+ i .startRecord ("2" );
119+ i .startEntity ("author" );
120+ i .startEntity ("name" );
121+ i .literal ("label" , "Some University" );
122+ i .endEntity ();
123+ i .endEntity ();
124+ i .endRecord ();
125+ }, o -> {
126+ o .get ().startRecord ("1" );
127+ o .get ().endRecord ();
128+ //
129+ o .get ().startRecord ("2" );
130+ o .get ().startEntity ("author" );
131+ o .get ().literal ("type" , "Organization" );
132+ o .get ().endEntity ();
133+ o .get ().endRecord ();
134+ });
135+ }
136+
137+ @ Test
138+ @ Disabled // TODO: fix events for this record order
139+ public void ifAnyMatchFirst () {
140+ MetafixTestHelpers .assertFix (streamReceiver , Arrays .asList (//
141+ "if any_match('name', '.*University.*')" , //
142+ " add_field('type', 'Organization')" , //
143+ "end" ), //
144+ i -> {
145+ i .startRecord ("1" );
146+ i .literal ("name" , "Some University" );
147+ i .endRecord ();
148+ //
149+ i .startRecord ("2" );
150+ i .literal ("name" , "Max Musterman" );
151+ i .endRecord ();
152+ }, o -> {
153+ o .get ().startRecord ("1" );
154+ o .get ().literal ("type" , "Organization" );
155+ o .get ().endRecord ();
156+ //
157+ o .get ().startRecord ("2" );
158+ o .get ().endRecord ();
159+ });
160+ }
161+
162+ @ Test
163+ @ Disabled // TODO: support else block
164+ public void ifAnyMatchElse () {
165+ MetafixTestHelpers .assertFix (streamReceiver , Arrays .asList (//
166+ "if any_match('name', '.*University.*')" , //
167+ " add_field('type', 'Organization')" , //
168+ "else" , //
169+ " add_field('type', 'Person')" , //
170+ "end" ), //
171+ i -> {
172+ i .startRecord ("1" );
173+ i .literal ("name" , "Max Musterman" );
174+ i .endRecord ();
175+ //
176+ i .startRecord ("2" );
177+ i .literal ("name" , "Some University" );
178+ i .endRecord ();
179+ }, o -> {
180+ o .get ().startRecord ("1" );
181+ o .get ().literal ("type" , "Person" );
182+ o .get ().endRecord ();
183+ //
184+ o .get ().startRecord ("2" );
185+ o .get ().literal ("type" , "Organization" );
186+ o .get ().endRecord ();
187+ });
188+ }
189+
190+ @ Test
191+ @ Disabled // TODO: support elsif block
192+ public void ifAnyMatchElsif () {
193+ MetafixTestHelpers .assertFix (streamReceiver , Arrays .asList (//
194+ "if any_match('name', '.*University.*')" , //
195+ " add_field('type', 'Organization')" , //
196+ "elsif any_match('name', '[^ ]* [^ ]*')" , //
197+ " add_field('type', 'Person')" , //
198+ "else" , //
199+ " add_field('type', 'Unknown')" , //
200+ "end" ), //
201+ i -> {
202+ i .startRecord ("1" );
203+ i .literal ("name" , "Max Musterman" );
204+ i .endRecord ();
205+ //
206+ i .startRecord ("2" );
207+ i .literal ("name" , "Some University" );
208+ i .endRecord ();
209+ //
210+ i .startRecord ("3" );
211+ i .literal ("name" , "Filibandrina" );
212+ i .endRecord ();
213+ }, o -> {
214+ o .get ().startRecord ("1" );
215+ o .get ().literal ("type" , "Person" );
216+ o .get ().endRecord ();
217+ //
218+ o .get ().startRecord ("2" );
219+ o .get ().literal ("type" , "Organization" );
220+ o .get ().endRecord ();
221+ //
222+ o .get ().startRecord ("3" );
223+ o .get ().literal ("type" , "Unknown" );
224+ o .get ().endRecord ();
225+ });
226+ }
103227}
0 commit comments