blob: 499208fcf6963e3fcf151063e2e110c74511c099 [file] [log] [blame]
package de.ids_mannheim.korap.user;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.databind.node.ArrayNode;
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.utils.JsonUtils;
import de.ids_mannheim.korap.validator.ApacheValidator;
/**
* @author hanl, margaretha
* @date 27/01/2016
*/
public class UserdataTest {
// EM: added
@Test
public void testReadEmptyMap () throws KustvaktException {
Userdata userData = new UserSettingProcessor();
userData.read(new HashMap<>(), false);
String jsonSettings = userData.serialize();
assertEquals(jsonSettings, "{}");
}
@Test
public void testReadNullMap () throws KustvaktException {
Userdata userData = new UserSettingProcessor();
userData.read(null, false);
String jsonSettings = userData.serialize();
assertEquals(jsonSettings, "{}");
}
// EM: based on MH code, supposedly to validate entries like email
// and date. See ApacheValidator
//
// It has inconsistent behaviors:
// throws exceptions when there are invalid entries in a list,
// otherwise skips invalid entries and returns a valid map
// Moreover, Userdata.validate(ValidatorIface) does not return a
// valid map.
//
// At the moment, validation is not needed for default settings.
@Test
public void testValidateMap () throws IOException, KustvaktException {
Map<String, Object> map = new HashMap<>();
map.put("k1", Arrays.asList(new String[] { "a", "b", "c" }));
map.put("k2", Arrays.asList(new Integer[] { 1, 2, 3 }));
Userdata data = new UserSettingProcessor();
data.read(map, false);
data.validate(new ApacheValidator());
}
// EM: below are tests from MH
@Test
public void testDataValidation () {
Userdata data = new UserDetails(1);
data.setField(Attributes.COUNTRY, "Germany");
String[] req = data.requiredFields();
String[] r = data.findMissingFields();
assertNotEquals(0, r.length);
assertEquals(req.length, r.length);
assertFalse(data.isValid());
}
@Test
public void testSettingsValidation () {
Userdata data = new UserSettingProcessor();
data.setField(Attributes.FILE_FORMAT_FOR_EXPORT, "export");
String[] req = data.requiredFields();
String[] r = data.findMissingFields();
assertEquals(0, r.length);
assertEquals(req.length, r.length);
assertTrue(data.isValid());
}
@Test
public void testUserdataRequiredFields () throws KustvaktException {
UserDetails details = new UserDetails(-1);
Map<String, Object> m = new HashMap<>();
m.put(Attributes.FIRSTNAME, "first");
m.put(Attributes.LASTNAME, "last");
m.put(Attributes.ADDRESS, "address");
m.put(Attributes.EMAIL, "email");
details.setData(JsonUtils.toJSON(m));
details.setData(JsonUtils.toJSON(m));
String[] missing = details.findMissingFields();
assertEquals(0, missing.length);
}
@Test
public void testUserdataDefaultFields () throws KustvaktException {
UserSettingProcessor settings = new UserSettingProcessor();
Map<String, Object> m = new HashMap<>();
m.put(Attributes.DEFAULT_FOUNDRY_RELATION, "rel_1");
m.put(Attributes.DEFAULT_FOUNDRY_CONSTITUENT, "const_1");
m.put(Attributes.DEFAULT_FOUNDRY_POS, "pos_1");
m.put(Attributes.DEFAULT_FOUNDRY_LEMMA, "lemma_1");
m.put(Attributes.PAGE_LENGTH, 10);
m.put(Attributes.QUERY_LANGUAGE, "poliqarp");
m.put(Attributes.METADATA_QUERY_EXPERT_MODUS, false);
settings.read(m, true);
assertNotEquals(m.size(), settings.size());
assertEquals(settings.defaultFields().length, settings.size());
assertEquals(settings.get(Attributes.DEFAULT_FOUNDRY_RELATION),
"rel_1");
assertEquals(settings.get(Attributes.DEFAULT_FOUNDRY_POS), "pos_1");
assertEquals(settings.get(Attributes.DEFAULT_FOUNDRY_LEMMA), "lemma_1");
assertEquals(settings.get(Attributes.DEFAULT_FOUNDRY_CONSTITUENT),
"const_1");
assertEquals(10, settings.get(Attributes.PAGE_LENGTH));
}
@Test
public void testUserDataRequiredFieldsException () {
assertThrows(KustvaktException.class, () -> {
UserDetails details = new UserDetails(-1);
Map<String, Object> m = new HashMap<>();
m.put(Attributes.FIRSTNAME, "first");
m.put(Attributes.LASTNAME, "last");
m.put(Attributes.ADDRESS, "address");
details.setData(JsonUtils.toJSON(m));
String[] missing = details.findMissingFields();
assertEquals(1, missing.length);
assertEquals(missing[0], "email");
details.checkRequired();
});
}
@Test
public void testUserDataPointerFunction () throws KustvaktException {
UserDetails details = new UserDetails(-1);
Map<String, Object> m = new HashMap<>();
m.put(Attributes.FIRSTNAME, "first");
m.put(Attributes.LASTNAME, "last");
m.put(Attributes.ADDRESS, "address");
m.put(Attributes.EMAIL, "email");
details.setData(JsonUtils.toJSON(m));
ArrayNode array = JsonUtils.createArrayNode();
array.add(100);
array.add("message");
details.setField("errors", array);
assertEquals(100, details.get("/errors/0"));
assertEquals(details.get("/errors/1"), "message");
}
@Test
public void testUserDataUpdate () {
UserDetails details = new UserDetails(-1);
details.setField(Attributes.FIRSTNAME, "first");
details.setField(Attributes.LASTNAME, "last");
details.setField(Attributes.ADDRESS, "address");
details.setField(Attributes.EMAIL, "email");
UserDetails details2 = new UserDetails(-1);
details2.setField(Attributes.COUNTRY, "Germany");
details.update(details2);
assertEquals(details.get(Attributes.FIRSTNAME), "first");
assertEquals(details.get(Attributes.COUNTRY), "Germany");
}
}