Serialization tests for model classes

This commit is contained in:
Antonin Delpeuch 2018-08-09 14:25:09 +01:00
parent c6d2b003b1
commit fac8936411
6 changed files with 230 additions and 2 deletions

View File

@ -0,0 +1,79 @@
package com.google.refine.tests.model;
import org.testng.annotations.Test;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import java.util.Properties;
import com.google.refine.model.Cell;
import com.google.refine.model.Recon;
import com.google.refine.tests.util.TestUtils;
import com.google.refine.util.Pool;
public class CellTests {
String reconJson = "{\"id\":1533649346002675326,"
+ "\"judgmentHistoryEntry\":1530278634724,"
+ "\"service\":\"https://tools.wmflabs.org/openrefine-wikidata/en/api\","
+ "\"identifierSpace\":\"http://www.wikidata.org/entity/\","
+ "\"schemaSpace\":\"http://www.wikidata.org/prop/direct/\","
+ "\"j\":\"matched\","
+ "\"m\":{\"id\":\"Q551479\",\"name\":\"La Monnaie\",\"score\":100,\"types\":[\"Q153562\"]},"
+ "\"c\":[{\"id\":\"Q551479\",\"name\":\"La Monnaie\",\"score\":100,\"types\":[\"Q153562\"]}],"
+ "\"f\":[false,false,34,0],\"judgmentAction\":\"auto\",\"judgmentBatchSize\":1,\"matchRank\":0}";
Pool pool = mock(Pool.class);
Recon recon = null;
@Test
public void serializeCellWithRecon() throws Exception {
recon = Recon.loadStreaming(reconJson, pool);
when(pool.getRecon("1533649346002675326")).thenReturn(recon);
String json = "{\"v\":\"http://www.wikidata.org/entity/Q41522540\",\"r\":\"1533649346002675326\"}";
Properties options = mock(Properties.class);
when(options.get("pool")).thenReturn(pool);
Cell c = Cell.loadStreaming(json, pool);
TestUtils.isSerializedTo(c, json, options);
verify(pool, times(1)).pool(recon);
}
@Test
public void serializeCellWithString() throws Exception {
String json = "{\"v\":\"0000-0002-5022-0488\"}";
Cell c = Cell.loadStreaming(json, pool);
TestUtils.isSerializedTo(c, json);
}
@Test
public void serializeNullCell() throws Exception {
String json = "null";
Cell c = Cell.loadStreaming(json, pool);
assertNull(c);
}
@Test
public void serializeEmptyStringCell() throws Exception {
String json = "{\"v\":\"\"}";
Cell c = Cell.loadStreaming(json, pool);
TestUtils.isSerializedTo(c, json);
}
@Test
public void serializeErrorCell() throws Exception {
String json = "{\"e\":\"HTTP 403\"}";
Cell c = Cell.loadStreaming(json, pool);
TestUtils.isSerializedTo(c, json);
}
@Test
public void serializeDateCell() throws Exception {
String json = "{\"v\":\"2018-03-04T08:09:10Z\",\"t\":\"date\"}";
TestUtils.isSerializedTo(Cell.loadStreaming(json, pool), json);
}
}

View File

@ -0,0 +1,42 @@
package com.google.refine.tests.model;
import java.util.Properties;
import org.testng.annotations.Test;
import com.google.refine.model.ColumnGroup;
import com.google.refine.tests.util.TestUtils;
public class ColumnGroupTests {
String json = "{"
+ "\"startColumnIndex\":2,"
+ "\"columnSpan\":3,"
+ "\"keyColumnIndex\":1"
+ "}";
@Test
public void serializeColumnGroup() throws Exception {
TestUtils.isSerializedTo(ColumnGroup.load(json), json);
}
@Test
public void serializeColumnGroupWithSubgroups() throws Exception {
ColumnGroup cg = new ColumnGroup(2,3,1);
ColumnGroup subCg = new ColumnGroup(2,2,1);
cg.subgroups.add(subCg);
String fullJson = "{"
+ "\"startColumnIndex\":2,"
+ "\"columnSpan\":3,"
+ "\"keyColumnIndex\":1,"
+ "\"subgroups\":[{"
+ " \"startColumnIndex\":2,"
+ " \"columnSpan\":2,"
+ " \"keyColumnIndex\":1"
+ "}]"
+ "}";
Properties options = new Properties();
options.setProperty("mode", "save");
TestUtils.isSerializedTo(cg, json, options);
TestUtils.isSerializedTo(cg, fullJson);
}
}

View File

@ -0,0 +1,10 @@
package com.google.refine.tests.model;
import org.testng.annotations.Test;
public class ColumnModelTests {
@Test
public void serializeColumnModel() {
String json = "";
}
}

View File

@ -0,0 +1,47 @@
package com.google.refine.tests.model;
import org.testng.annotations.Test;
import com.google.refine.model.Column;
import com.google.refine.model.recon.ReconConfig;
import com.google.refine.model.recon.StandardReconConfig;
import com.google.refine.tests.util.TestUtils;
import edu.mit.simile.butterfly.ButterflyModule;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class ColumnTests {
@Test
public void serializeColumn() throws Exception {
ButterflyModule core = mock(ButterflyModule.class);
when(core.getName()).thenReturn("core");
ReconConfig.registerReconConfig(core, "standard-service", StandardReconConfig.class);
String json = "{\"cellIndex\":4,"
+ "\"originalName\":\"name\","
+ "\"name\":\"organization_name\","
+ "\"type\":\"\","
+ "\"format\":\"default\","
+ "\"title\":\"\","
+ "\"description\":\"\","
+ "\"constraints\":\"{}\","
+ "\"reconConfig\":{"
+ " \"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\":\"Q43229\",\"name\":\"organization\"},"
+ " \"autoMatch\":true,"
+ " \"columnDetails\":["
+ " {\"column\":\"organization_country\",\"propertyName\":\"SPARQL: P17/P297\",\"propertyID\":\"P17/P297\"},"
+ " {\"column\":\"organization_id\",\"propertyName\":\"SPARQL: P3500|P2427\",\"propertyID\":\"P3500|P2427\"}"
+ " ],"
+ " \"limit\":0},"
+ "\"reconStats\":{"
+ " \"nonBlanks\":299,"
+ " \"newTopics\":0,"
+ " \"matchedTopics\":222"
+ "}}";
TestUtils.isSerializedTo(Column.load(json), json);
}
}

View File

@ -0,0 +1,18 @@
package com.google.refine.tests.model;
import org.testng.annotations.Test;
import com.google.refine.model.Project;
import com.google.refine.tests.RefineTest;
import com.google.refine.tests.util.TestUtils;
public class RecordModelTests extends RefineTest {
@Test
public void serializeRecordModel() {
Project proj = createCSVProject("key,val\n"
+ "34,first\n"
+ ",second"
);
TestUtils.isSerializedTo(proj.recordModel, "{\"hasRecords\":true}");
}
}

View File

@ -48,8 +48,11 @@ import org.testng.annotations.Test;
import com.google.refine.model.Cell;
import com.google.refine.model.Project;
import com.google.refine.model.Recon;
import com.google.refine.model.Row;
import com.google.refine.tests.RefineTest;
import com.google.refine.tests.util.TestUtils;
import com.google.refine.util.Pool;
public class RowTests extends RefineTest {
@ -104,7 +107,7 @@ public class RowTests extends RefineTest {
Row row = new Row(5);
row.setCell(0, new Cell("I'm not empty", null));
row.save(writer, options);
Assert.assertEquals(writer.getBuffer().toString(),
TestUtils.equalAsJson(writer.getBuffer().toString(),
"{\"flagged\":false,\"starred\":false,\"cells\":[{\"v\":\"I'm not empty\"}]}");
}
@ -117,11 +120,40 @@ public class RowTests extends RefineTest {
when(options.containsKey("recordIndex")).thenReturn(true);
when(options.get("recordIndex")).thenReturn(1);
row.save(writer, options);
Assert.assertEquals(
TestUtils.equalAsJson(
writer.getBuffer().toString(),
"{\"flagged\":false,\"starred\":false,\"cells\":[{\"v\":\"I'm not empty\"}],\"i\":0,\"j\":1}");
}
@Test
public void serializeRowTest() throws Exception {
String reconJson = "{\"id\":1533649346002675326,"
+ "\"judgmentHistoryEntry\":1530278634724,"
+ "\"service\":\"https://tools.wmflabs.org/openrefine-wikidata/en/api\","
+ "\"identifierSpace\":\"http://www.wikidata.org/entity/\","
+ "\"schemaSpace\":\"http://www.wikidata.org/prop/direct/\","
+ "\"j\":\"matched\","
+ "\"m\":{\"id\":\"Q551479\",\"name\":\"La Monnaie\",\"score\":100,\"types\":[\"Q153562\"]},"
+ "\"c\":[{\"id\":\"Q551479\",\"name\":\"La Monnaie\",\"score\":100,\"types\":[\"Q153562\"]}],"
+ "\"f\":[false,false,34,0],\"judgmentAction\":\"auto\",\"judgmentBatchSize\":1,\"matchRank\":0}";
Pool pool = mock(Pool.class);
Recon recon = Recon.loadStreaming(reconJson, pool);
when(pool.getRecon("1533649346002675326")).thenReturn(recon);
String json = "{\"flagged\":false,"
+ "\"starred\":false,"
+ "\"cells\":["
+ " {\"v\":\"http://www.wikidata.org/entity/Q41522540\",\"r\":\"1533649346002675326\"},"
+ " {\"v\":\"0000-0002-5022-0488\"},"
+ " null,"
+ " {\"v\":\"\"}"
+ "]}";
Row row = Row.load(json, pool);
when(options.get("pool")).thenReturn(pool);
TestUtils.isSerializedTo(row, json, options);
}
@Test
public void toStringTest() {
Row row = new Row(5);