From 73171755f36d33eecfbbe7c6209d97a68d4d97f7 Mon Sep 17 00:00:00 2001 From: Antonin Delpeuch Date: Sun, 12 Aug 2018 15:48:52 +0100 Subject: [PATCH] More JSON tests for operations --- .../column/ColumnAdditionOperationTests.java | 34 +++++++++++++++ .../column/ColumnSplitOperationTests.java | 42 ++++++++++++++++++ .../ReconClearSimilarCellsOperationTests.java | 30 +++++++++++++ .../ReconCopyAcrossColumnsOperationTests.java | 32 ++++++++++++++ .../ReconDiscardJudgmentsOperationTests.java | 35 +++++++++++++++ .../ReconJudgeSimilarCellsOperationTests.java | 33 ++++++++++++++ .../recon/ReconJudgeSimilarCellsTests.java | 2 - .../ReconMarkNewTopicsOperationTests.java | 32 ++++++++++++++ ...econMatchBestCandidatesOperationTests.java | 34 +++++++++++++++ ...ReconMatchSpecificTopicOperationTests.java | 43 +++++++++++++++++++ .../operations/recon/ReconOperationTests.java | 43 +++++++++++++++++++ 11 files changed, 358 insertions(+), 2 deletions(-) create mode 100644 main/tests/server/src/com/google/refine/tests/operations/column/ColumnAdditionOperationTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/operations/column/ColumnSplitOperationTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/operations/recon/ReconClearSimilarCellsOperationTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/operations/recon/ReconCopyAcrossColumnsOperationTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/operations/recon/ReconDiscardJudgmentsOperationTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/operations/recon/ReconJudgeSimilarCellsOperationTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/operations/recon/ReconMarkNewTopicsOperationTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/operations/recon/ReconMatchBestCandidatesOperationTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/operations/recon/ReconMatchSpecificTopicOperationTests.java create mode 100644 main/tests/server/src/com/google/refine/tests/operations/recon/ReconOperationTests.java diff --git a/main/tests/server/src/com/google/refine/tests/operations/column/ColumnAdditionOperationTests.java b/main/tests/server/src/com/google/refine/tests/operations/column/ColumnAdditionOperationTests.java new file mode 100644 index 000000000..d150adafb --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/operations/column/ColumnAdditionOperationTests.java @@ -0,0 +1,34 @@ +package com.google.refine.tests.operations.column; + +import static org.mockito.Mockito.mock; + +import org.json.JSONException; +import org.json.JSONObject; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +import com.google.refine.model.Project; +import com.google.refine.operations.OperationRegistry; +import com.google.refine.operations.column.ColumnAdditionOperation; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + +public class ColumnAdditionOperationTests extends RefineTest { + + @BeforeSuite + public void registerOperation() { + OperationRegistry.registerOperation(getCoreModule(), "column-addition", ColumnAdditionOperation.class); + } + + @Test + public void serializeColumnAdditionOperation() throws JSONException, Exception { + String json = "{" + + " \"op\":\"core/column-addition\"," + + " \"description\":\"Create column organization_json at index 3 based on column employments using expression grel:value.parseJson()[\\\"employment-summary\\\"].join('###')\",\"engineConfig\":{\"mode\":\"row-based\",\"facets\":[]},\"newColumnName\":\"organization_json\",\"columnInsertIndex\":3,\"baseColumnName\":\"employments\"," + + " \"expression\":\"grel:value.parseJson()[\\\"employment-summary\\\"].join('###')\"," + + " \"onError\":\"set-to-blank\"" + + "}"; + Project project = mock(Project.class); + TestUtils.isSerializedTo(ColumnAdditionOperation.reconstruct(project, new JSONObject(json)), json); + } +} diff --git a/main/tests/server/src/com/google/refine/tests/operations/column/ColumnSplitOperationTests.java b/main/tests/server/src/com/google/refine/tests/operations/column/ColumnSplitOperationTests.java new file mode 100644 index 000000000..1aa3a997c --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/operations/column/ColumnSplitOperationTests.java @@ -0,0 +1,42 @@ +package com.google.refine.tests.operations.column; + +import static org.mockito.Mockito.mock; + +import org.json.JSONException; +import org.json.JSONObject; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +import com.google.refine.model.Project; +import com.google.refine.operations.OperationRegistry; +import com.google.refine.operations.column.ColumnSplitOperation; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + +public class ColumnSplitOperationTests extends RefineTest { + @BeforeSuite + public void registerOperation() { + OperationRegistry.registerOperation(getCoreModule(), "column-split", ColumnSplitOperation.class); + } + + @Test + public void serializeColumnSplitOperation() throws JSONException, Exception { + String json = "{\n" + + " \"op\": \"core/column-split\",\n" + + " \"description\": \"Split column ea by separator\",\n" + + " \"engineConfig\": {\n" + + " \"mode\": \"row-based\",\n" + + " \"facets\": []\n" + + " },\n" + + " \"columnName\": \"ea\",\n" + + " \"guessCellType\": true,\n" + + " \"removeOriginalColumn\": true,\n" + + " \"mode\": \"separator\",\n" + + " \"separator\": \"e\",\n" + + " \"regex\": false,\n" + + " \"maxColumns\": 0\n" + + " }"; + Project project = mock(Project.class); + TestUtils.isSerializedTo(ColumnSplitOperation.reconstruct(project, new JSONObject(json)), json); + } +} diff --git a/main/tests/server/src/com/google/refine/tests/operations/recon/ReconClearSimilarCellsOperationTests.java b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconClearSimilarCellsOperationTests.java new file mode 100644 index 000000000..bddfb4fed --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconClearSimilarCellsOperationTests.java @@ -0,0 +1,30 @@ +package com.google.refine.tests.operations.recon; +import static org.mockito.Mockito.mock; + +import org.json.JSONObject; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +import com.google.refine.model.Project; +import com.google.refine.operations.OperationRegistry; +import com.google.refine.operations.recon.ReconClearSimilarCellsOperation; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + +public class ReconClearSimilarCellsOperationTests extends RefineTest { + @BeforeSuite + public void registerOperation() { + OperationRegistry.registerOperation(getCoreModule(), "recon-clear-similar-cells", ReconClearSimilarCellsOperation.class); + } + + @Test + public void serializeReconClearSimilarCellsOperation() throws Exception { + String json = "{\"op\":\"core/recon-clear-similar-cells\"," + + "\"description\":\"Clear recon data for cells containing \\\"some value\\\" in column my column\"," + + "\"engineConfig\":{\"mode\":\"row-based\",\"facets\":[]}," + + "\"columnName\":\"my column\"," + + "\"similarValue\":\"some value\"}"; + Project project = mock(Project.class); + TestUtils.isSerializedTo(ReconClearSimilarCellsOperation.reconstruct(project, new JSONObject(json)), json); + } +} diff --git a/main/tests/server/src/com/google/refine/tests/operations/recon/ReconCopyAcrossColumnsOperationTests.java b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconCopyAcrossColumnsOperationTests.java new file mode 100644 index 000000000..7b79a8164 --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconCopyAcrossColumnsOperationTests.java @@ -0,0 +1,32 @@ +package com.google.refine.tests.operations.recon; +import static org.mockito.Mockito.mock; + +import org.json.JSONObject; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +import com.google.refine.model.Project; +import com.google.refine.operations.OperationRegistry; +import com.google.refine.operations.recon.ReconCopyAcrossColumnsOperation; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + +public class ReconCopyAcrossColumnsOperationTests extends RefineTest { + @BeforeSuite + public void registerOperation() { + OperationRegistry.registerOperation(getCoreModule(), "recon-copy-across-columns", ReconCopyAcrossColumnsOperation.class); + } + + @Test + public void serializeReconCopyAcrossColumnsOperation() throws Exception { + String json = "{\"op\":\"core/recon-copy-across-columns\"," + + "\"description\":\"Copy recon judgments from column source column to firstsecond\"," + + "\"engineConfig\":{\"mode\":\"row-based\"}," + + "\"fromColumnName\":\"source column\"," + + "\"toColumnNames\":[\"first\",\"second\"]," + + "\"judgments\":[\"matched\",\"new\"]," + + "\"applyToJudgedCells\":true}"; + Project project = mock(Project.class); + TestUtils.isSerializedTo(ReconCopyAcrossColumnsOperation.reconstruct(project, new JSONObject(json)), json); + } +} diff --git a/main/tests/server/src/com/google/refine/tests/operations/recon/ReconDiscardJudgmentsOperationTests.java b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconDiscardJudgmentsOperationTests.java new file mode 100644 index 000000000..ce44bb9cd --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconDiscardJudgmentsOperationTests.java @@ -0,0 +1,35 @@ +package com.google.refine.tests.operations.recon; +import static org.mockito.Mockito.mock; + +import org.json.JSONObject; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +import com.google.refine.model.Project; +import com.google.refine.operations.OperationRegistry; +import com.google.refine.operations.recon.ReconDiscardJudgmentsOperation; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + +public class ReconDiscardJudgmentsOperationTests extends RefineTest { + @BeforeSuite + public void registerOperation() { + OperationRegistry.registerOperation(getCoreModule(), "recon-discard-judgments", ReconDiscardJudgmentsOperation.class); + } + + @Test + public void serializeReconDiscardJudgmentsOperation() throws Exception { + String json = "{\n" + + " \"op\": \"core/recon-discard-judgments\",\n" + + " \"description\": \"Discard recon judgments and clear recon data for cells in column researcher\",\n" + + " \"engineConfig\": {\n" + + " \"mode\": \"record-based\",\n" + + " \"facets\": []\n" + + " },\n" + + " \"columnName\": \"researcher\",\n" + + " \"clearData\": true\n" + + " }"; + Project project = mock(Project.class); + TestUtils.isSerializedTo(ReconDiscardJudgmentsOperation.reconstruct(project, new JSONObject(json)), json); + } +} diff --git a/main/tests/server/src/com/google/refine/tests/operations/recon/ReconJudgeSimilarCellsOperationTests.java b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconJudgeSimilarCellsOperationTests.java new file mode 100644 index 000000000..117193d58 --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconJudgeSimilarCellsOperationTests.java @@ -0,0 +1,33 @@ +package com.google.refine.tests.operations.recon; +import static org.mockito.Mockito.mock; + +import org.json.JSONObject; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +import com.google.refine.model.Project; +import com.google.refine.operations.OperationRegistry; +import com.google.refine.operations.recon.ReconJudgeSimilarCellsOperation; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + +public class ReconJudgeSimilarCellsOperationTests extends RefineTest { + @BeforeSuite + public void registerOperation() { + OperationRegistry.registerOperation(getCoreModule(), "recon-judge-similar-cells", ReconJudgeSimilarCellsOperation.class); + } + + @Test + public void serializeReconJudgeSimilarCellsOperation() throws Exception { + String json = "{\"op\":\"core/recon-judge-similar-cells\"," + + "\"description\":\"Match item Unicef Indonesia (Q7884717) for cells containing \\\"UNICEF Indonesia\\\" in column organization_name\"," + + "\"engineConfig\":{\"mode\":\"row-based\",\"facets\":[]}," + + "\"columnName\":\"organization_name\"," + + "\"similarValue\":\"UNICEF Indonesia\"," + + "\"judgment\":\"matched\"," + + "\"match\":{\"id\":\"Q7884717\",\"name\":\"Unicef Indonesia\",\"score\":71.42857142857143,\"types\":[\"Q43229\"]}," + + "\"shareNewTopics\":false}"; + Project project = mock(Project.class); + TestUtils.isSerializedTo(ReconJudgeSimilarCellsOperation.reconstruct(project, new JSONObject(json)), json); + } +} diff --git a/main/tests/server/src/com/google/refine/tests/operations/recon/ReconJudgeSimilarCellsTests.java b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconJudgeSimilarCellsTests.java index dd304ff45..5a8234e31 100644 --- a/main/tests/server/src/com/google/refine/tests/operations/recon/ReconJudgeSimilarCellsTests.java +++ b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconJudgeSimilarCellsTests.java @@ -8,7 +8,6 @@ import java.util.Properties; import org.json.JSONObject; import org.slf4j.LoggerFactory; -import org.testng.annotations.BeforeSuite; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; @@ -20,7 +19,6 @@ import com.google.refine.model.Recon; import com.google.refine.model.recon.ReconConfig; import com.google.refine.model.recon.StandardReconConfig; import com.google.refine.operations.OperationRegistry; -import com.google.refine.operations.column.ColumnMoveOperation; import com.google.refine.operations.recon.ReconJudgeSimilarCellsOperation; import com.google.refine.process.Process; import com.google.refine.tests.RefineTest; diff --git a/main/tests/server/src/com/google/refine/tests/operations/recon/ReconMarkNewTopicsOperationTests.java b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconMarkNewTopicsOperationTests.java new file mode 100644 index 000000000..382eb47fc --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconMarkNewTopicsOperationTests.java @@ -0,0 +1,32 @@ +package com.google.refine.tests.operations.recon; +import static org.mockito.Mockito.mock; + +import org.json.JSONObject; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +import com.google.refine.model.Project; +import com.google.refine.operations.OperationRegistry; +import com.google.refine.operations.recon.ReconMarkNewTopicsOperation; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + +public class ReconMarkNewTopicsOperationTests extends RefineTest { + @BeforeSuite + public void registerOperation() { + OperationRegistry.registerOperation(getCoreModule(), "recon-mark-new-topics", ReconMarkNewTopicsOperation.class); + } + + @Test + public void serializeReconMarkNewTopicsOperation() throws Exception { + String json = "{" + + "\"op\":\"core/recon-mark-new-topics\"," + + "\"engineConfig\":{\"mode\":\"row-based\"}," + + "\"columnName\":\"my column\"," + + "\"shareNewTopics\":true," + + "\"description\":\"Mark to create new items for cells in column my column, one item for each group of similar cells\"" + + "}"; + Project project = mock(Project.class); + TestUtils.isSerializedTo(ReconMarkNewTopicsOperation.reconstruct(project, new JSONObject(json)), json); + } +} diff --git a/main/tests/server/src/com/google/refine/tests/operations/recon/ReconMatchBestCandidatesOperationTests.java b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconMatchBestCandidatesOperationTests.java new file mode 100644 index 000000000..63274e487 --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconMatchBestCandidatesOperationTests.java @@ -0,0 +1,34 @@ +package com.google.refine.tests.operations.recon; +import static org.mockito.Mockito.mock; + +import org.json.JSONObject; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +import com.google.refine.model.Project; +import com.google.refine.operations.OperationRegistry; +import com.google.refine.operations.recon.ReconMatchBestCandidatesOperation; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + +public class ReconMatchBestCandidatesOperationTests extends RefineTest { + @BeforeSuite + public void registerOperation() { + OperationRegistry.registerOperation(getCoreModule(), "recon-match-best-candidates", ReconMatchBestCandidatesOperation.class); + } + + @Test + public void serializeReconMatchBestCandidatesOperation() throws Exception { + String json = "{" + + "\"op\":\"core/recon-match-best-candidates\"," + + "\"description\":\"Match each cell to its best recon candidate in column organization_name\"," + + "\"engineConfig\":{\"mode\":\"row-based\",\"facets\":[" + + " {\"selectNumeric\":true,\"expression\":\"cell.recon.best.score\",\"selectBlank\":false,\"selectNonNumeric\":true,\"selectError\":true,\"name\":\"organization_name: best candidate's score\",\"from\":13,\"to\":101,\"type\":\"range\",\"columnName\":\"organization_name\"}," + + " {\"selectNonTime\":true,\"expression\":\"grel:toDate(value)\",\"selectBlank\":true,\"selectError\":true,\"selectTime\":true,\"name\":\"start_year\",\"from\":410242968000,\"to\":1262309184000,\"type\":\"timerange\",\"columnName\":\"start_year\"}" + + "]}," + + "\"columnName\":\"organization_name\"" + + "}"; + Project project = mock(Project.class); + TestUtils.isSerializedTo(ReconMatchBestCandidatesOperation.reconstruct(project, new JSONObject(json)), json); + } +} diff --git a/main/tests/server/src/com/google/refine/tests/operations/recon/ReconMatchSpecificTopicOperationTests.java b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconMatchSpecificTopicOperationTests.java new file mode 100644 index 000000000..1e1c51386 --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconMatchSpecificTopicOperationTests.java @@ -0,0 +1,43 @@ +package com.google.refine.tests.operations.recon; +import static org.mockito.Mockito.mock; + +import org.json.JSONObject; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +import com.google.refine.model.Project; +import com.google.refine.operations.OperationRegistry; +import com.google.refine.operations.recon.ReconMatchSpecificTopicOperation; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + +public class ReconMatchSpecificTopicOperationTests extends RefineTest { + @BeforeSuite + public void registerOperation() { + OperationRegistry.registerOperation(getCoreModule(), "recon-match-specific-topic-to-cells", ReconMatchSpecificTopicOperation.class); + } + + @Test + public void serializeReconMatchSpecificTopicOperation() throws Exception { + String json = "{\n" + + " \"op\": \"core/recon-match-specific-topic-to-cells\",\n" + + " \"description\": \"Match specific item Gangnam (Q489941) to cells in column researcher\",\n" + + " \"engineConfig\": {\n" + + " \"mode\": \"record-based\",\n" + + " \"facets\": []\n" + + " },\n" + + " \"columnName\": \"researcher\",\n" + + " \"match\": {\n" + + " \"id\": \"Q489941\",\n" + + " \"name\": \"Gangnam\",\n" + + " \"types\": [\n" + + " \"Q5\"\n" + + " ]\n" + + " },\n" + + " \"identifierSpace\": \"http://www.wikidata.org/entity/\",\n" + + " \"schemaSpace\": \"http://www.wikidata.org/prop/direct/\"\n" + + " }"; + Project project = mock(Project.class); + TestUtils.isSerializedTo(ReconMatchSpecificTopicOperation.reconstruct(project, new JSONObject(json)), json); + } +} diff --git a/main/tests/server/src/com/google/refine/tests/operations/recon/ReconOperationTests.java b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconOperationTests.java new file mode 100644 index 000000000..d5f16b420 --- /dev/null +++ b/main/tests/server/src/com/google/refine/tests/operations/recon/ReconOperationTests.java @@ -0,0 +1,43 @@ +package com.google.refine.tests.operations.recon; + +import static org.mockito.Mockito.mock; + +import org.json.JSONException; +import org.json.JSONObject; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Test; + +import com.google.refine.model.Project; +import com.google.refine.operations.OperationRegistry; +import com.google.refine.operations.recon.ReconOperation; +import com.google.refine.tests.RefineTest; +import com.google.refine.tests.util.TestUtils; + + +public class ReconOperationTests extends RefineTest { + @BeforeSuite + public void registerOperation() { + OperationRegistry.registerOperation(getCoreModule(), "recon", ReconOperation.class); + } + + @Test + public void serializeReconOperation() throws JSONException, Exception { + String json = "{" + + "\"op\":\"core/recon\"," + + "\"description\":\"Reconcile cells in column researcher to type Q5\"," + + "\"columnName\":\"researcher\"," + + "\"config\":{" + + " \"mode\":\"standard-service\"," + + " \"service\":\"https://tools.wmflabs.org/openrefine-wikidata/en/api\"," + + " \"identifierSpace\":\"http://www.wikidata.org/entity/\"," + + " \"schemaSpace\":\"http://www.wikidata.org/prop/direct/\"," + + " \"type\":{\"id\":\"Q5\",\"name\":\"human\"}," + + " \"autoMatch\":true," + + " \"columnDetails\":[]," + + " \"limit\":0" + + "}," + + "\"engineConfig\":{\"mode\":\"row-based\",\"facets\":[]}}"; + Project project = mock(Project.class); + TestUtils.isSerializedTo(ReconOperation.reconstruct(project, new JSONObject(json)), json); + } +}