Skip to content

Commit 06b49d8

Browse files
committed
Making mjs tests work on 11 and 12
1 parent 4717ab6 commit 06b49d8

File tree

7 files changed

+60
-16
lines changed

7 files changed

+60
-16
lines changed

marklogic-client-api-functionaltests/src/test/java/com/marklogic/client/fastfunctest/TestEvalJavaScript.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.fasterxml.jackson.databind.JsonNode;
88
import com.fasterxml.jackson.databind.ObjectMapper;
99
import com.marklogic.client.DatabaseClient;
10+
import com.marklogic.client.MarkLogicVersion;
1011
import com.marklogic.client.document.DocumentManager;
1112
import com.marklogic.client.document.DocumentWriteSet;
1213
import com.marklogic.client.document.TextDocumentManager;
@@ -38,7 +39,7 @@
3839
*/
3940
@TestMethodOrder(MethodOrderer.MethodName.class)
4041
public class TestEvalJavaScript extends AbstractFunctionalTest {
41-
private static String appServerHostname = null;
42+
4243
private String dbName = "java-functest";
4344

4445
private DatabaseClient client;
@@ -48,7 +49,6 @@ public static void setUpBeforeClass() throws Exception {
4849
TestEvalXquery.createUserRolesWithPrevilages("test-js-eval", "xdbc:eval", "xdbc:eval-in", "xdmp:eval-in", "xdmp:invoke-in", "xdmp:invoke", "xdbc:invoke-in", "any-uri",
4950
"xdbc:invoke");
5051
TestEvalXquery.createRESTUser("eval-userJS", "x", "test-js-eval");
51-
appServerHostname = getRestAppServerHostName();
5252
}
5353

5454
@AfterAll
@@ -628,10 +628,8 @@ public void testStreamClosingWithEvalAs() throws KeyManagementException, NoSuchA
628628
}
629629
}
630630

631-
// Making sure that mjs modules can be used in eval.
632631
@Test
633632
public void testJavaScriptModules() {
634-
System.out.println("Running testJavaScriptModules");
635633
DatabaseClient moduleClient = null;
636634
try {
637635
String docId[] = { "/test/words/wd1.json", "/test/words/wd2.json", "/test/words/wd3.json",
@@ -644,8 +642,11 @@ public void testJavaScriptModules() {
644642
" .orderBy('city')" +
645643
" .filter()" +
646644
" .slice(0, 10)" +
647-
" .result();" +
648-
"export default output;";
645+
" .result(); ";
646+
647+
mjsString = MarkLogicVersion.getMarkLogicVersion(client).getMajor() >= 12 ?
648+
mjsString + "export default output;" :
649+
mjsString + "output";
649650

650651
DocumentManager dm = moduleClient.newDocumentManager();
651652
DocumentMetadataHandle metadataHandle = new DocumentMetadataHandle();

marklogic-client-api/src/test/java/com/marklogic/client/test/rows/TransformDocTest.java

+24-6
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@
1010
import com.marklogic.client.io.marker.AbstractWriteHandle;
1111
import com.marklogic.client.row.RowRecord;
1212
import com.marklogic.client.test.Common;
13+
import com.marklogic.client.test.MarkLogicVersion;
1314
import com.marklogic.client.test.junit5.RequiresML11;
15+
import org.junit.Before;
16+
import org.junit.jupiter.api.BeforeEach;
1417
import org.junit.jupiter.api.Test;
1518
import org.junit.jupiter.api.extension.ExtendWith;
1619

@@ -24,6 +27,21 @@
2427
@ExtendWith(RequiresML11.class)
2528
public class TransformDocTest extends AbstractOpticUpdateTest {
2629

30+
private String transformDocModule;
31+
private String transformMultipleDocsModule;
32+
33+
@BeforeEach
34+
void beforeEach() {
35+
boolean is12OrHigher = Common.getMarkLogicVersion().getMajor() >= 12;
36+
if (is12OrHigher) {
37+
transformDocModule = "/etc/optic/test/transformDoc-test-12.mjs";
38+
transformMultipleDocsModule = "/etc/optic/test/transformDoc-multipleRows-12.mjs";
39+
} else {
40+
transformDocModule = "/etc/optic/test/transformDoc-test.mjs";
41+
transformMultipleDocsModule = "/etc/optic/test/transformDoc-multipleRows.mjs";
42+
}
43+
}
44+
2745
@Test
2846
public void mjsTransformWithParam() {
2947
ArrayNode rows = mapper.createArrayNode();
@@ -32,7 +50,7 @@ public void mjsTransformWithParam() {
3250
ModifyPlan plan = op
3351
.fromParam("myDocs", "", op.colTypes(op.colType("doc", "none")))
3452
.transformDoc(op.col("doc"),
35-
op.transformDef("/etc/optic/test/transformDoc-test.mjs")
53+
op.transformDef(transformDocModule)
3654
.withParam("myParam", "my value"));
3755

3856
List<RowRecord> results = resultRows(plan.bindParam("myDocs", new JacksonHandle(rows)));
@@ -53,7 +71,7 @@ public void mjsTransformWithColParam() {
5371
.joinDoc(op.col("doc"), op.col("uri"))
5472
.transformDoc(
5573
op.col("doc"),
56-
op.transformDef("/etc/optic/test/transformDoc-test.mjs")
74+
op.transformDef(transformDocModule)
5775
.withParam("myColumnParam", op.col("uri"))
5876
.withParam("myParam", "test value")
5977
);
@@ -76,7 +94,7 @@ public void mjsTransformWithQualifiedColParam() {
7694
.joinDoc(op.col("doc"), op.viewCol(qualifier, "uri"))
7795
.transformDoc(
7896
op.col("doc"),
79-
op.transformDef("/etc/optic/test/transformDoc-test.mjs").withParam("myParam", op.viewCol(qualifier, "uri"))
97+
op.transformDef(transformDocModule).withParam("myParam", op.viewCol(qualifier, "uri"))
8098
);
8199

82100
List<RowRecord> rows = resultRows(plan);
@@ -96,7 +114,7 @@ public void mjsTransformWithoutParam() {
96114
ModifyPlan plan = op
97115
.fromParam("myDocs", "", op.colTypes(op.colType("doc", "none")))
98116
.transformDoc(op.col("doc"),
99-
op.transformDef("/etc/optic/test/transformDoc-test.mjs").withKind("mjs"));
117+
op.transformDef(transformDocModule).withKind("mjs"));
100118

101119
List<RowRecord> results = resultRows(plan.bindParam("myDocs", new JacksonHandle(rows)));
102120
assertEquals(1, results.size());
@@ -113,7 +131,7 @@ public void mjsTransformReturnsMultipleRows() {
113131
.fromDocDescriptors(
114132
op.docDescriptor(newWriteOp("will-be-replaced", mapper.createObjectNode().put("hello", "there")))
115133
)
116-
.transformDoc(op.col("doc"), op.transformDef("/etc/optic/test/transformDoc-multipleRows.mjs"))
134+
.transformDoc(op.col("doc"), op.transformDef(transformMultipleDocsModule))
117135
.bind(op.as("uri", op.fn.concat(
118136
op.xs.string("/acme/"),
119137
op.xdmp.random(),
@@ -152,7 +170,7 @@ public void multipleJsonDocs() {
152170
.fromDocUris("/optic/test/musician1.json", "/optic/test/musician2.json")
153171
.joinDoc(op.col("doc"), op.col("uri"))
154172
.transformDoc(op.col("doc"),
155-
op.transformDef("/etc/optic/test/transformDoc-test.mjs").withParam("myParam",
173+
op.transformDef(transformDocModule).withParam("myParam",
156174
"my value"));
157175

158176
List<RowRecord> results = resultRows(plan);

marklogic-client-api/src/test/java/com/marklogic/client/test/rows/UpdateUseCasesTest.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.marklogic.client.test.Common;
1313
import com.marklogic.client.test.junit5.RequiresML11;
1414
import com.marklogic.client.type.PlanSystemColumn;
15+
import org.junit.jupiter.api.BeforeEach;
1516
import org.junit.jupiter.api.Test;
1617
import org.junit.jupiter.api.extension.ExtendWith;
1718

@@ -28,6 +29,15 @@
2829
@ExtendWith(RequiresML11.class)
2930
public class UpdateUseCasesTest extends AbstractOpticUpdateTest {
3031

32+
private String transformDocModule;
33+
34+
@BeforeEach
35+
void beforeEach() {
36+
transformDocModule = Common.getMarkLogicVersion().getMajor() >= 12 ?
37+
"/etc/optic/test/transformDoc-test-12.mjs" :
38+
"/etc/optic/test/transformDoc-test.mjs";
39+
}
40+
3141
/**
3242
* Use case: Given a set of doc descriptors, add a collection to each document with a URI matching one of the
3343
* descriptors. Any descriptor that has a URI for a document that no longer exists will be ignored.
@@ -177,7 +187,7 @@ public void writeNewDocsFromView() {
177187
.lockForUpdate()
178188
.transformDoc(
179189
op.col("doc"),
180-
op.transformDef("/etc/optic/test/transformDoc-test.mjs")
190+
op.transformDef(transformDocModule)
181191
.withParam("myParam", "my value"))
182192
.write();
183193

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
'use strict';
2+
const doc = external.doc;
3+
const rows = [
4+
{"number": 1, "theDoc": doc},
5+
{"number": 2, "theDoc": doc}
6+
];
7+
const output = Sequence.from(rows);
8+
export default output;

test-app/src/main/ml-modules/root/etc/optic/test/transformDoc-multipleRows.mjs

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,4 @@ const rows = [
44
{"number": 1, "theDoc": doc},
55
{"number": 2, "theDoc": doc}
66
];
7-
const output = Sequence.from(rows);
8-
export default output;
7+
Sequence.from(rows)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
'use strict';
2+
const result = {
3+
"hello": "world",
4+
"yourParam": external.myParam,
5+
"yourColumnValue": external.myColumnParam,
6+
"theDoc": external.doc
7+
}
8+
export default result;

test-app/src/main/ml-modules/root/etc/optic/test/transformDoc-test.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ const result = {
55
"yourColumnValue": external.myColumnParam,
66
"theDoc": external.doc
77
}
8-
export default result;
8+
result;

0 commit comments

Comments
 (0)