Package org.thechiselgroup.choosel.core.client.visualization.model.initialization

Source Code of org.thechiselgroup.choosel.core.client.visualization.model.initialization.DefaultVisualizationModelInitialValuesTest

/*******************************************************************************
* Copyright (C) 2011 Lars Grammel
*
* Licensed 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.thechiselgroup.choosel.core.client.visualization.model.initialization;

import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import java.util.Date;
import java.util.List;

import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.thechiselgroup.choosel.core.client.resources.Resource;
import org.thechiselgroup.choosel.core.client.util.DataType;
import org.thechiselgroup.choosel.core.client.util.collections.LightweightList;
import org.thechiselgroup.choosel.core.client.visualization.model.Slot;
import org.thechiselgroup.choosel.core.client.visualization.model.VisualItem;
import org.thechiselgroup.choosel.core.client.visualization.model.VisualItemResolutionErrorModel;
import org.thechiselgroup.choosel.core.client.visualization.model.implementation.DefaultVisualizationModel;
import org.thechiselgroup.choosel.core.client.visualization.model.implementation.DefaultVisualizationModelTestHelper;
import org.thechiselgroup.choosel.core.client.visualization.model.managed.DefaultManagedSlotMappingConfiguration;
import org.thechiselgroup.choosel.core.client.visualization.model.managed.DefaultSlotMappingInitializer;
import org.thechiselgroup.choosel.core.client.visualization.model.managed.DefaultVisualItemResolverFactoryProvider;
import org.thechiselgroup.choosel.core.client.visualization.resolvers.FixedValueResolver;
import org.thechiselgroup.choosel.core.client.visualization.resolvers.managed.AbstractVisualItemValueResolverFactory;
import org.thechiselgroup.choosel.core.client.visualization.resolvers.managed.FixedVisualItemResolverFactory;
import org.thechiselgroup.choosel.core.client.visualization.resolvers.managed.ManagedVisualItemValueResolverDecorator;
import org.thechiselgroup.choosel.core.client.visualization.resolvers.managed.PropertyDependantVisualItemValueResolverFactory;

// TODO migrate to change default slot mapping initializer
public class DefaultVisualizationModelInitialValuesTest {

    private DefaultVisualizationModel underTest;

    private DefaultVisualizationModelTestHelper helper;

    @Mock
    private VisualItemResolutionErrorModel errorModel;

    private Slot[] slots;

    private DefaultSlotMappingInitializer initializer;

    private DefaultVisualItemResolverFactoryProvider resolverProvider;

    private Date datePropertyReturnValue;

    private Double numberPropertyReturnValue;

    private String textPropertyReturnValue;

    private Double fixedNumberReturnValue;

    @Test
    public void initialSlotValueForDateSlot() {
        Resource resource = new Resource("test:1");
        resource.putValue("date1", new Date(100, 1, 1, 0, 0, 0));

        helper.getContainedResources().add(resource);

        assertEquals(true, underTest.isConfigured(slots[2]));

        List<VisualItem> visualItems = underTest.getFullVisualItemContainer()
                .getVisualItems().toList();
        assertEquals(1, visualItems.size());
        VisualItem visualItem = visualItems.get(0);

        assertEquals(datePropertyReturnValue, visualItem.getValue(slots[2]));
    }

    @Test
    public void initialSlotValueForNumberSlotIfNoNumberIsAvailableInData() {
        Resource resource = new Resource("test:1");
        resource.putValue("text1", "xt1");
        resource.putValue("text2", "xt2");

        helper.getContainedResources().add(resource);

        assertEquals(true, underTest.isConfigured(slots[1]));

        List<VisualItem> visualItems = underTest.getFullVisualItemContainer()
                .getVisualItems().toList();
        assertEquals(1, visualItems.size());
        VisualItem visualItem = visualItems.get(0);

        assertEquals(fixedNumberReturnValue, visualItem.getValue(slots[1]));
    }

    @Test
    public void initialSlotValueForTextSlot() {
        Resource resource = new Resource("test:1");
        resource.putValue("text1", "t1x");
        resource.putValue("text2", "t2x");

        helper.getContainedResources().add(resource);

        assertEquals(true, underTest.isConfigured(slots[0]));

        List<VisualItem> visualItems = underTest.getFullVisualItemContainer()
                .getVisualItems().toList();
        assertEquals(1, visualItems.size());
        VisualItem visualItem = visualItems.get(0);

        assertEquals(textPropertyReturnValue, visualItem.getValue(slots[0]));
    }

    private void registerDefaultResolverFactory(DataType dataType, String id,
            Object value) {

        ManagedVisualItemValueResolverDecorator resolver = new ManagedVisualItemValueResolverDecorator(
                id, new FixedValueResolver(value, dataType));

        FixedVisualItemResolverFactory resolverFactory = mock(FixedVisualItemResolverFactory.class);
        setUpResolverFactory(resolverFactory, id, dataType);
        when(resolverFactory.create()).thenReturn(resolver);

        resolverProvider.register(resolverFactory);

        initializer.configureFixedResolver(resolverFactory);
    }

    private void registerPropertyResolver(DataType dataType, String id,
            Object value) {

        ManagedVisualItemValueResolverDecorator resolver = new ManagedVisualItemValueResolverDecorator(
                id, new FixedValueResolver(value, dataType));

        PropertyDependantVisualItemValueResolverFactory resolverFactory = mock(PropertyDependantVisualItemValueResolverFactory.class);
        setUpResolverFactory(resolverFactory, id, dataType);
        when(resolverFactory.create(any(String.class))).thenReturn(resolver);

        resolverProvider.register(resolverFactory);

        initializer.configurePropertyResolver(resolverFactory);
    }

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);

        numberPropertyReturnValue = new Double(0);
        textPropertyReturnValue = "t1";
        datePropertyReturnValue = new Date(100, 1, 1, 0, 0, 1);

        helper = new DefaultVisualizationModelTestHelper();
        slots = helper.createSlots(DataType.TEXT, DataType.NUMBER,
                DataType.DATE, DataType.LOCATION);

        underTest = helper.createTestVisualizationModel();

        resolverProvider = new DefaultVisualItemResolverFactoryProvider();

        initializer = spy(new DefaultSlotMappingInitializer());

        registerPropertyResolver(DataType.NUMBER, "property-number",
                numberPropertyReturnValue);
        registerPropertyResolver(DataType.TEXT, "property-text",
                textPropertyReturnValue);
        registerPropertyResolver(DataType.DATE, "property-date",
                datePropertyReturnValue);

        fixedNumberReturnValue = new Double(1);

        registerDefaultResolverFactory(DataType.NUMBER, "fixed-number",
                fixedNumberReturnValue);
        registerDefaultResolverFactory(DataType.TEXT, "fixed-text", "fixed");
        registerDefaultResolverFactory(DataType.DATE, "fixed-date", new Date());
        registerDefaultResolverFactory(DataType.LOCATION, "fixed-location",
                new Resource("location:0"));

        new DefaultManagedSlotMappingConfiguration(resolverProvider,
                initializer, underTest, errorModel);
    }

    private void setUpResolverFactory(
            AbstractVisualItemValueResolverFactory resolverFactory, String id,
            DataType dataType) {

        when(resolverFactory.getId()).thenReturn(id);
        when(resolverFactory.getDataType()).thenReturn(dataType);
        when(
                resolverFactory.canCreateApplicableResolver(any(Slot.class),
                        any(LightweightList.class))).thenReturn(true);
    }
}
TOP

Related Classes of org.thechiselgroup.choosel.core.client.visualization.model.initialization.DefaultVisualizationModelInitialValuesTest

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.