blob: 5584fb79f1e484a08b52ca3c10856d032120ed1f [file] [log] [blame]
package de.ids_mannheim.korap.user;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.utils.JsonUtils;
/**
* Taken from UserdataTest
*
* @author hanl
* @date 27/01/2016
*/
public class DataFactoryTest {
@Test
public void testDataFactoryAdd () throws KustvaktException {
String data = "{}";
Object node = JsonUtils.readTree(data);
DataFactory factory = DataFactory.getFactory();
assertTrue(factory.addValue(node, "field_1", "value_1"));
assertTrue(factory.addValue(node, "field_2", 20));
assertTrue(factory.addValue(node, "field_3", true));
data = "[]";
node = JsonUtils.readTree(data);
factory = DataFactory.getFactory();
assertTrue(factory.addValue(node, "field_1", "value_1"));
assertTrue(factory.addValue(node, "field_2", 20));
assertTrue(factory.addValue(node, "field_3", true));
}
@Test
public void testDataFactoryGet () throws KustvaktException {
String data = "{}";
Object node = JsonUtils.readTree(data);
DataFactory factory = DataFactory.getFactory();
assertTrue(factory.addValue(node, "field_1", "value_1"));
assertTrue(factory.addValue(node, "field_2", 20));
assertTrue(factory.addValue(node, "field_3", true));
Object value = factory.getValue(node, "field_1");
assertEquals(value, "value_1");
value = factory.getValue(node, "field_2");
assertEquals(20, value);
value = factory.getValue(node, "field_3");
assertEquals(true, value);
data = "[]";
node = JsonUtils.readTree(data);
assertTrue(factory.addValue(node, "", "value_2"));
assertTrue(factory.addValue(node, "", 10));
assertTrue(factory.addValue(node, "", false));
value = factory.getValue(node, "/0");
assertEquals(value, "value_2");
value = factory.getValue(node, "/1");
assertEquals(10, value);
value = factory.getValue(node, "/2");
assertEquals(false, value);
}
@Test
public void testDataFactoryMerge () throws KustvaktException {
String data = "{}";
Object node = JsonUtils.readTree(data);
DataFactory factory = DataFactory.getFactory();
assertTrue(factory.addValue(node, "field_1", "value_1"));
assertTrue(factory.addValue(node, "field_2", 20));
assertTrue(factory.addValue(node, "field_3", true));
data = "{}";
Object node2 = JsonUtils.readTree(data);
assertTrue(factory.addValue(node2, "field_1", "value_new"));
assertTrue(factory.addValue(node2, "field_2", "value_next"));
assertTrue(factory.addValue(node2, "field_4", "value_2"));
assertTrue(factory.addValue(node2, "field_7", "value_3"));
JsonNode node_new = (JsonNode) factory.merge(node, node2);
assertEquals(node_new.path("field_1").asText(), "value_new");
assertEquals(node_new.path("field_2").asText(), "value_next");
assertEquals(true, node_new.path("field_3").asBoolean());
assertEquals(node_new.path("field_4").asText(), "value_2");
assertEquals(node_new.path("field_7").asText(), "value_3");
}
@Test
public void testDataFactoryKeys () throws KustvaktException {
String data = "{}";
Object node = JsonUtils.readTree(data);
DataFactory factory = DataFactory.getFactory();
assertTrue(factory.addValue(node, "field_1", "value_1"));
assertTrue(factory.addValue(node, "field_2", 20));
assertTrue(factory.addValue(node, "field_3", true));
assertEquals(3, factory.size(node));
assertEquals(3, factory.keys(node).size());
}
@Test
@Disabled
public void testDataFactoryRemove () throws KustvaktException {
String data = "{}";
Object node = JsonUtils.readTree(data);
DataFactory factory = DataFactory.getFactory();
assertTrue(factory.addValue(node, "field_1", "value_1"));
assertTrue(factory.addValue(node, "field_2", 20));
assertTrue(factory.addValue(node, "field_3", true));
Object value = factory.getValue(node, "field_1");
assertEquals(value, "value_1");
value = factory.getValue(node, "field_2");
assertEquals(20, value);
value = factory.getValue(node, "field_3");
assertEquals(true, value);
assertTrue(factory.removeValue(node, "field_1"));
assertTrue(factory.removeValue(node, "field_2"));
assertTrue(factory.removeValue(node, "field_3"));
assertNotNull(node);
assertEquals(node.toString(), "{}");
data = "[]";
node = JsonUtils.readTree(data);
assertTrue(factory.addValue(node, "", "value_2"));
assertTrue(factory.addValue(node, "", 10));
assertTrue(factory.addValue(node, "", false));
value = factory.getValue(node, "/0");
assertEquals(value, "value_2");
value = factory.getValue(node, "/1");
assertEquals(10, value);
value = factory.getValue(node, "/2");
assertEquals(false, value);
// fixme: cannot be removed
assertTrue(factory.removeValue(node, "0"));
assertTrue(factory.removeValue(node, "1"));
assertTrue(factory.removeValue(node, "2"));
assertNotNull(node);
assertEquals(node.toString(), "[]");
}
@Test
public void testDataFactoryEmbeddedProperty () throws KustvaktException {
String data = "{}";
JsonNode node = JsonUtils.readTree(data);
DataFactory factory = DataFactory.getFactory();
assertTrue(factory.addValue(node, "field_1", "value_1"));
assertTrue(factory.addValue(node, "field_2", 20));
assertTrue(factory.addValue(node, "field_3", true));
ArrayNode array = JsonUtils.createArrayNode();
array.add(10);
array.add("v1");
array.add("v2");
factory.addValue(node, "field_3", array);
assertNotNull(node);
assertEquals(10, node.at("/field_3/0").asInt());
assertEquals(node.at("/field_3/1").asText(), "v1");
assertEquals(node.at("/field_3/2").asText(), "v2");
}
}