Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,18 @@

public class CommonsImporter {

static String apiUrl = "https://commons.wikimedia.org/w/api.php";


/**
* Utility method for testing with mock api calls
*
* @param limit
*/
public void setApiUrl(String apiUrlTest) {
apiUrl = apiUrlTest;
}

static public void parsePreview(
Project project,
ProjectMetadata metadata,
Expand Down Expand Up @@ -60,7 +72,6 @@ static public void parse(
categoriesWithDepth.add(new CategoryWithDepth(category.get("category").asText(),
category.get("depth").asInt()));
}
String apiUrl = "https://commons.wikimedia.org/w/api.php";//FIXME
String service = "https://commonsreconcile.toolforge.org/en/api";

// initializes progress reporting with the name of the first category
Expand Down Expand Up @@ -97,6 +108,15 @@ static public void parse(
1);
col.setReconStats(ReconStats.create(project, 0));
col.setReconConfig(cfg);
col.setName("File");
if (mIdsColumn) {
project.columnModel.columns.get(1).setName("M-ids");
if (categoriesColumn) {
project.columnModel.columns.get(2).setName("Categories");
}
} else if (categoriesColumn) {
project.columnModel.columns.get(1).setName("Categories");
}

setProgress(job, categoriesWithDepth.get(categoriesWithDepth.size()-1).categoryName, 100);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package org.openrefine.extensions.commons.importer;

import java.util.ArrayList;
import java.util.List;

import org.mockito.Mockito;
import org.testng.Assert;
import org.testng.annotations.Test;

import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.refine.ProjectMetadata;
import com.google.refine.RefineServlet;
import com.google.refine.importing.ImportingJob;
import com.google.refine.importing.ImportingManager;
import com.google.refine.model.Cell;
import com.google.refine.model.Project;
import com.google.refine.util.ParsingUtilities;

import okhttp3.HttpUrl;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;

public class CommonsImporterTest {

protected RefineServlet servlet;

// dependencies
private Project project;
private ProjectMetadata metadata;
private ImportingJob job;

/**
* Test column names upon project creation as well as reconciled cells
*/
@Test
public void testParse() throws Exception {

try (MockWebServer server = new MockWebServer()) {
server.start();
HttpUrl url = server.url("/w/api.php");
String jsonResponse = "{\"batchcomplete\":\"\",\"query\":{\"categorymembers\":"
+ "[{\"pageid\":127722,\"ns\":6,\"title\":\"File:3 Puppies.jpg\",\"type\":\"file\"}]}}";
server.enqueue(new MockResponse().setBody(jsonResponse));
servlet = new RefineServlet();
ImportingManager.initialize(servlet);
project = new Project();
metadata = new ProjectMetadata();
metadata.setName("Commons Import Test Project");
job = Mockito.mock(ImportingJob.class);
ObjectNode options = ParsingUtilities.evaluateJsonStringToObjectNode(
"{\"categoryJsonValue\":[{\"category\":\"Category:Costa Rica\",\"depth\":\"0\"}],\"skipDataLines\":0,"
+ "\"limit\":-1,\"disableAutoPreview\":false,\"categoriesColumn\":true,\"mIdsColumn\":true}");
List<Exception> exceptions = new ArrayList<Exception>();
CommonsImporter importer = new CommonsImporter();

importer.setApiUrl(url.toString());
CommonsImporter.parse(project, metadata, job, 0, options, exceptions);
project.update();
Cell cell = project.rows.get(0).cells.get(0);

Assert.assertEquals(project.columnModel.columns.get(0).getName(), "File");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "M-ids");
Assert.assertEquals(project.columnModel.columns.get(2).getName(), "Categories");
Assert.assertEquals(cell.recon.match.id, "M127722");
Assert.assertEquals(cell.recon.match.name, "File:3 Puppies.jpg");

server.close();

}
}
}