Skip to content

Commit fe483d3

Browse files
authored
Merge pull request #77 from j-sal/75-column-names
Change column names upon project start
2 parents 2789614 + 9fc7c3f commit fe483d3

File tree

2 files changed

+92
-1
lines changed

2 files changed

+92
-1
lines changed

src/main/java/org/openrefine/extensions/commons/importer/CommonsImporter.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@
2121

2222
public class CommonsImporter {
2323

24+
static String apiUrl = "https://commons.wikimedia.org/w/api.php";
25+
26+
27+
/**
28+
* Utility method for testing with mock api calls
29+
*
30+
* @param limit
31+
*/
32+
public void setApiUrl(String apiUrlTest) {
33+
apiUrl = apiUrlTest;
34+
}
35+
2436
static public void parsePreview(
2537
Project project,
2638
ProjectMetadata metadata,
@@ -60,7 +72,6 @@ static public void parse(
6072
categoriesWithDepth.add(new CategoryWithDepth(category.get("category").asText(),
6173
category.get("depth").asInt()));
6274
}
63-
String apiUrl = "https://commons.wikimedia.org/w/api.php";//FIXME
6475
String service = "https://commonsreconcile.toolforge.org/en/api";
6576

6677
// initializes progress reporting with the name of the first category
@@ -97,6 +108,15 @@ static public void parse(
97108
1);
98109
col.setReconStats(ReconStats.create(project, 0));
99110
col.setReconConfig(cfg);
111+
col.setName("File");
112+
if (mIdsColumn) {
113+
project.columnModel.columns.get(1).setName("M-ids");
114+
if (categoriesColumn) {
115+
project.columnModel.columns.get(2).setName("Categories");
116+
}
117+
} else if (categoriesColumn) {
118+
project.columnModel.columns.get(1).setName("Categories");
119+
}
100120

101121
setProgress(job, categoriesWithDepth.get(categoriesWithDepth.size()-1).categoryName, 100);
102122
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package org.openrefine.extensions.commons.importer;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import org.mockito.Mockito;
7+
import org.testng.Assert;
8+
import org.testng.annotations.Test;
9+
10+
import com.fasterxml.jackson.databind.node.ObjectNode;
11+
import com.google.refine.ProjectMetadata;
12+
import com.google.refine.RefineServlet;
13+
import com.google.refine.importing.ImportingJob;
14+
import com.google.refine.importing.ImportingManager;
15+
import com.google.refine.model.Cell;
16+
import com.google.refine.model.Project;
17+
import com.google.refine.util.ParsingUtilities;
18+
19+
import okhttp3.HttpUrl;
20+
import okhttp3.mockwebserver.MockResponse;
21+
import okhttp3.mockwebserver.MockWebServer;
22+
23+
public class CommonsImporterTest {
24+
25+
protected RefineServlet servlet;
26+
27+
// dependencies
28+
private Project project;
29+
private ProjectMetadata metadata;
30+
private ImportingJob job;
31+
32+
/**
33+
* Test column names upon project creation as well as reconciled cells
34+
*/
35+
@Test
36+
public void testParse() throws Exception {
37+
38+
try (MockWebServer server = new MockWebServer()) {
39+
server.start();
40+
HttpUrl url = server.url("/w/api.php");
41+
String jsonResponse = "{\"batchcomplete\":\"\",\"query\":{\"categorymembers\":"
42+
+ "[{\"pageid\":127722,\"ns\":6,\"title\":\"File:3 Puppies.jpg\",\"type\":\"file\"}]}}";
43+
server.enqueue(new MockResponse().setBody(jsonResponse));
44+
servlet = new RefineServlet();
45+
ImportingManager.initialize(servlet);
46+
project = new Project();
47+
metadata = new ProjectMetadata();
48+
metadata.setName("Commons Import Test Project");
49+
job = Mockito.mock(ImportingJob.class);
50+
ObjectNode options = ParsingUtilities.evaluateJsonStringToObjectNode(
51+
"{\"categoryJsonValue\":[{\"category\":\"Category:Costa Rica\",\"depth\":\"0\"}],\"skipDataLines\":0,"
52+
+ "\"limit\":-1,\"disableAutoPreview\":false,\"categoriesColumn\":true,\"mIdsColumn\":true}");
53+
List<Exception> exceptions = new ArrayList<Exception>();
54+
CommonsImporter importer = new CommonsImporter();
55+
56+
importer.setApiUrl(url.toString());
57+
CommonsImporter.parse(project, metadata, job, 0, options, exceptions);
58+
project.update();
59+
Cell cell = project.rows.get(0).cells.get(0);
60+
61+
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "File");
62+
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "M-ids");
63+
Assert.assertEquals(project.columnModel.columns.get(2).getName(), "Categories");
64+
Assert.assertEquals(cell.recon.match.id, "M127722");
65+
Assert.assertEquals(cell.recon.match.name, "File:3 Puppies.jpg");
66+
67+
server.close();
68+
69+
}
70+
}
71+
}

0 commit comments

Comments
 (0)