Package org.openengsb.core.weaver.test.model

Source Code of org.openengsb.core.weaver.test.model.ManipulationUtilsTest

/**
* Licensed to the Austrian Association for Software Tool Integration (AASTI)
* under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright
* ownership. The AASTI licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.openengsb.core.weaver.test.model;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;

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

import org.junit.Test;
import org.openengsb.core.api.model.ModelWrapper;
import org.openengsb.core.api.model.OpenEngSBModel;
import org.openengsb.core.api.model.OpenEngSBModelEntry;
import org.openengsb.core.util.ModelUtils;
import org.osgi.framework.Version;

public class ManipulationUtilsTest {

    @Test
    public void testIfModelAgentIsSet_shouldWork() throws Exception {
        TestModel model = new TestModel();
        assertThat("TestModel isn't enhanced. Maybe you forgot to set the java agent?",
            model instanceof OpenEngSBModel, is(true));
    }

    @Test
    public void testIfToOpenEngSBModelEntriesWork_shouldWork() throws Exception {
        TestModel model = new TestModel();
        model.setId("testId");
        model.setName("testName");
        model.setTestBoolean(true);
        List<OpenEngSBModelEntry> entries = ModelWrapper.wrap(model).toOpenEngSBModelEntries();
        String id = null;
        String name = null;
        Boolean bool = null;
        for (OpenEngSBModelEntry entry : entries) {
            if (entry.getKey().equals("id")) {
                id = (String) entry.getValue();
            } else if (entry.getKey().equals("name")) {
                name = (String) entry.getValue();
            } else if (entry.getKey().equals("testBoolean")) {
                bool = (Boolean) entry.getValue();
            }
        }
        assertThat(id, is(model.getId()));
        assertThat(name, is(model.getName()));
        assertThat(bool, is(model.getTestBoolean()));
    }

    @Test
    public void testIfAddOpenEngSBModelEntryWork_shouldWork() throws Exception {
        ModelWrapper wrapper = ModelWrapper.wrap(new TestModel());
        wrapper.addOpenEngSBModelEntry(new OpenEngSBModelEntry("test", "test", String.class));
        List<OpenEngSBModelEntry> entries = wrapper.toOpenEngSBModelEntries();
        String test = null;
        for (OpenEngSBModelEntry entry : entries) {
            if (entry.getKey().equals("test")) {
                test = (String) entry.getValue();
            }
        }
        assertThat(test, is("test"));
    }
   
    @Test
    public void testIfToOpenEngSBModelValuesWork_shouldWork() throws Exception {
        ModelWrapper wrapper = ModelWrapper.wrap(new TestModel());
        int before = wrapper.toOpenEngSBModelValues().size();
        wrapper.addOpenEngSBModelEntry(new OpenEngSBModelEntry("test", "test", String.class));
        int after = wrapper.toOpenEngSBModelValues().size();
        assertThat(before, is(after));
    }

    @Test
    public void testIfRemoveOpenEngSBModelEntryWork_shouldWork() throws Exception {
        ModelWrapper wrapper = ModelWrapper.wrap(new TestModel());
        wrapper.addOpenEngSBModelEntry(new OpenEngSBModelEntry("test", "test", String.class));
        wrapper.removeOpenEngSBModelEntry("test");
        // the result has three elements even though the model has four properties,
        // since the third property is ignored
        assertThat(wrapper.toOpenEngSBModelEntries().size(), is(3));
    }

    @Test
    public void testIfModelIdInsertionWorks_shouldWork() throws Exception {
        TestModel model = new TestModel();
        model.setId("id");
        String id = (String) ModelWrapper.wrap(model).retrieveInternalModelId();
        assertThat(id, is(model.getId()));
    }

    @Test
    public void testIfModelTailRetrievingWorks_shouldWork() throws Exception {
        ModelWrapper wrapper = ModelWrapper.wrap(new TestModel());
        wrapper.addOpenEngSBModelEntry(new OpenEngSBModelEntry("test", "test", String.class));
        List<OpenEngSBModelEntry> tail = wrapper.getOpenEngSBModelTail();
        assertThat(tail.size(), is(1));
        assertThat(tail.get(0).getKey(), is("test"));
    }

    @Test
    public void testIfModelTailSettingWorks_shouldWork() throws Exception {
        ModelWrapper wrapper = ModelWrapper.wrap(new TestModel());
        List<OpenEngSBModelEntry> entries = new ArrayList<OpenEngSBModelEntry>();
        entries.add(new OpenEngSBModelEntry("test", "test", String.class));
        entries.add(new OpenEngSBModelEntry("test2", "test2", String.class));
        entries.add(new OpenEngSBModelEntry("test3", "test3", String.class));
        wrapper.setOpenEngSBModelTail(entries);
        assertThat(wrapper.getOpenEngSBModelTail().size(), is(3));
    }

    @Test
    public void testIfNullModelTailSettingWorks_shouldThrowNoException() throws Exception {
        ModelWrapper wrapper = ModelWrapper.wrap(new TestModel());
        wrapper.setOpenEngSBModelTail(null);
        assertThat(wrapper.getOpenEngSBModelTail().size(), is(0));
    }

    @Test
    public void testIfPrimitiveFieldsWork_shouldThrowNoException() throws Exception {
        PrimitiveModel model = new PrimitiveModel();
        model.setValue1(5);
        model.setValue2(42L);
        model.setValue3(true);
        List<OpenEngSBModelEntry> entries = ModelWrapper.wrap(model).toOpenEngSBModelEntries();
        assertThat((Integer) getEntryByName(entries, "value1"), is(5));
        assertThat((Long) getEntryByName(entries, "value2"), is(42L));
        assertThat((Boolean) getEntryByName(entries, "value3"), is(true));
    }
   
    @Test
    public void testIfPrimitiveModelCreationThroughEntriesWork_shouldWork() throws Exception {
        List<OpenEngSBModelEntry> entries = new ArrayList<OpenEngSBModelEntry>();
        entries.add(new OpenEngSBModelEntry("value1", 5, Integer.class));
        entries.add(new OpenEngSBModelEntry("value2", 42L, Long.class));
        entries.add(new OpenEngSBModelEntry("value3", true, Boolean.class));
        PrimitiveModel model = ModelUtils.createModel(PrimitiveModel.class, entries);
        assertThat(model.getValue1(), is(5));
        assertThat(model.getValue2(), is(42L));
        assertThat(model.isValue3(), is(true));
    }
   
    @Test
    public void testIfFieldWithNoGetterGetIgnored_shouldNotBePresentInTheEntries() throws Exception {
        PrimitiveModel model = new PrimitiveModel();
        model.setValue1(5);
        model.setValue2(42L);
        model.setValue3(true);
        List<OpenEngSBModelEntry> entries = ModelWrapper.wrap(model).toOpenEngSBModelEntries();
        assertThat(getEntryByName(entries, "ignoredField"), nullValue());
    }
   
    @Test
    public void testIfSuperModelsSupportWork_shouldWork() throws Exception {
        ChildModel model = new ChildModel();
        model.setId("testId");
        model.setName("testName");
        model.setChild("testChild");
        ModelWrapper wrapper = ModelWrapper.wrap(model);
        List<OpenEngSBModelEntry> entries = wrapper.toOpenEngSBModelEntries();
        assertThat((String) getEntryByName(entries, "id"), is("testId"));
        assertThat((String) getEntryByName(entries, "name"), is("testName"));
        assertThat((String) getEntryByName(entries, "child"), is("testChild"));
        assertThat((String) wrapper.retrieveInternalModelId(), is("testId"));
        assertThat((String) wrapper.retrieveInternalModelIdName(), is("id"));
    }
   
    @Test
    public void testIfRetrieveModelNameWork_shouldReturnModelName() throws Exception {
        ModelWrapper wrapper = ModelWrapper.wrap(new TestModel());
        assertThat(wrapper.retrieveModelName(), is(TestModel.class.getName()));
    }
   
    @Test
    public void testIfRetrieveModelVersionWork_shouldReturnModelVersion() throws Exception {
        ModelWrapper wrapper = ModelWrapper.wrap(new TestModel());
        assertThat(wrapper.retrieveModelVersion(), is(new Version("1.0.0").toString()));
    }

    private Object getEntryByName(List<OpenEngSBModelEntry> entries, String property) {
        for (OpenEngSBModelEntry entry : entries) {
            if (entry.getKey().equals(property)) {
                return entry.getValue();
            }
        }
        return null;
    }
}
TOP

Related Classes of org.openengsb.core.weaver.test.model.ManipulationUtilsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.