org.kitodo.data.elasticsearch.index.type.AuthorityTypeTest.java Source code

Java tutorial

Introduction

Here is the source code for org.kitodo.data.elasticsearch.index.type.AuthorityTypeTest.java

Source

/*
 * (c) Kitodo. Key to digital objects e. V. <contact@kitodo.org>
 *
 * This file is part of the Kitodo project.
 *
 * It is licensed under GNU General Public License version 3 or later.
 *
 * For the full copyright and license information, please read the
 * GPL3-License.txt file that was distributed with this source code.
 */

package org.kitodo.data.elasticsearch.index.type;

import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;

import org.apache.http.HttpEntity;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
import org.kitodo.data.database.beans.Authority;
import org.kitodo.data.database.beans.UserGroup;
import org.kitodo.data.elasticsearch.index.type.enums.AuthorityTypeField;
import org.kitodo.data.elasticsearch.index.type.enums.UserGroupTypeField;

import static org.junit.Assert.assertEquals;

public class AuthorityTypeTest {

    private static List<Authority> prepareData() {

        List<Authority> authorities = new ArrayList<>();
        List<UserGroup> userGroups = new ArrayList<>();

        UserGroup userGroup = new UserGroup();
        userGroup.setId(1);
        userGroup.setTitle("First");
        userGroups.add(userGroup);

        Authority firstAuthority = new Authority();
        firstAuthority.setId(1);
        firstAuthority.setTitle("First");
        firstAuthority.setUserGroups(userGroups);
        authorities.add(firstAuthority);

        Authority secondAuthority = new Authority();
        secondAuthority.setId(2);
        secondAuthority.setTitle("Second");
        authorities.add(secondAuthority);

        return authorities;
    }

    @Test
    public void shouldCreateFirstDocument() throws Exception {
        AuthorityType authorityType = new AuthorityType();

        Authority authority = prepareData().get(0);
        HttpEntity document = authorityType.createDocument(authority);

        JsonObject actual = Json.createReader(new StringReader(EntityUtils.toString(document))).readObject();

        assertEquals("Key title doesn't match to given value!", "First",
                AuthorityTypeField.TITLE.getStringValue(actual));

        JsonArray userGroups = actual.getJsonArray(AuthorityTypeField.USER_GROUPS.getKey());
        assertEquals("Size userGroups doesn't match to given value!", 1, userGroups.size());

        JsonObject userGroup = userGroups.getJsonObject(0);
        assertEquals("Key userGroups.id doesn't match to given value!", 1,
                UserGroupTypeField.ID.getIntValue(userGroup));
        assertEquals("Key userGroups.title doesn't match to given value!", "First",
                UserGroupTypeField.TITLE.getStringValue(userGroup));
    }

    @Test
    public void shouldCreateSecondDocument() throws Exception {
        AuthorityType authorityType = new AuthorityType();

        Authority authority = prepareData().get(1);
        HttpEntity document = authorityType.createDocument(authority);

        JsonObject actual = Json.createReader(new StringReader(EntityUtils.toString(document))).readObject();

        assertEquals("Key title doesn't match to given value!", "Second",
                AuthorityTypeField.TITLE.getStringValue(actual));

        JsonArray userGroups = AuthorityTypeField.USER_GROUPS.getJsonArray(actual);
        assertEquals("Size userGroups doesn't match to given value!", 0, userGroups.size());
    }

    @Test
    public void shouldCreateDocumentWithCorrectAmountOfKeys() throws Exception {
        AuthorityType authorityType = new AuthorityType();

        Authority authority = prepareData().get(0);
        HttpEntity document = authorityType.createDocument(authority);

        JsonObject actual = Json.createReader(new StringReader(EntityUtils.toString(document))).readObject();
        assertEquals("Amount of keys is incorrect!", 2, actual.keySet().size());

        JsonArray userGroups = AuthorityTypeField.USER_GROUPS.getJsonArray(actual);
        JsonObject userGroup = userGroups.getJsonObject(0);
        assertEquals("Amount of keys in userGroups is incorrect!", 2, userGroup.keySet().size());
    }

    @Test
    public void shouldCreateDocuments() {
        AuthorityType authorityType = new AuthorityType();

        List<Authority> authorities = prepareData();
        Map<Integer, HttpEntity> documents = authorityType.createDocuments(authorities);
        assertEquals("HashMap of documents doesn't contain given amount of elements!", 2, documents.size());
    }
}