org.xlcloud.console.virtualClusters.controllers.wizard.SetupPropertiesBeanTest.java Source code

Java tutorial

Introduction

Here is the source code for org.xlcloud.console.virtualClusters.controllers.wizard.SetupPropertiesBeanTest.java

Source

/*
 * Copyright 2012 AMG.lab, a Bull Group Company
 * 
 * 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.xlcloud.console.virtualClusters.controllers.wizard;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.xlcloud.console.virtualClusters.controllers.wizard.SetupPropertiesBean;
import org.xlcloud.console.virtualClusters.controllers.wizard.transformers.EditableParameterToVirtualClusterParameterTransformer;
import org.xlcloud.console.virtualClusters.controllers.wizard.transformers.TemplateParameterToEditableParameterTransformer;
import org.xlcloud.console.virtualClusters.controllers.wizard.utils.EditableVirtualClusterParameter;

import org.xlcloud.service.VirtualCluster;
import org.xlcloud.service.VirtualClusterDefinition;
import org.xlcloud.service.api.VirtualClusterDefinitionsApi;
import org.xlcloud.service.heat.template.Parameter;
import org.xlcloud.service.heat.template.Parameters;
import org.xlcloud.service.heat.template.Template;

/**
 * @author "Konrad Krl", AMG.net
 */
@RunWith(PowerMockRunner.class)
@PrepareForTest({ CollectionUtils.class })
public class SetupPropertiesBeanTest {

    public static final String TEST_CASE_PARAMETER_NAME = "KeyName";

    private SetupPropertiesBean setupPropertiesBean = new SetupPropertiesBean();

    @Before
    public void initialize() {
        PowerMockito.mockStatic(CollectionUtils.class);

        VirtualClusterDefinitionsApi definitionsApiMock = mock(VirtualClusterDefinitionsApi.class);
        when(definitionsApiMock.get(anyLong())).thenReturn(new VirtualClusterDefinition());
        setupPropertiesBean.setDefinitionsApi(definitionsApiMock);
    }

    @Test
    public void testGetEditableParameters() {
        setupPropertiesBean.setVirtualClusterDefinition(getTestCaseVCDefinition());

        List<EditableVirtualClusterParameter> editableParameters = setupPropertiesBean.getEditableParameters();
        assertNotNull(editableParameters);

        // verify if editableParameters collection was filled in by
        // CollectionUtils.transform
        PowerMockito.verifyStatic();
        CollectionUtils.collect(anyCollectionOf(Parameter.class),
                any(TemplateParameterToEditableParameterTransformer.class),
                anyCollectionOf(EditableVirtualClusterParameter.class));
    }

    @Test
    public void testGetVirtualClusterParameters() {
        setupPropertiesBean.setEditableParameters(getTestCaseEditableParameters());

        VirtualCluster.Parameters parameters = setupPropertiesBean.getVirtualClusterParameters();
        assertNotNull(parameters);

        // verify if parameters collection was filled in by
        // CollectionUtils.transform
        PowerMockito.verifyStatic();
        CollectionUtils.collect(anyCollectionOf(EditableVirtualClusterParameter.class),
                any(EditableParameterToVirtualClusterParameterTransformer.class),
                anyCollectionOf(VirtualCluster.Parameters.Parameter.class));
    }

    private VirtualClusterDefinition getTestCaseVCDefinition() {
        VirtualClusterDefinition testCaseVCDefinition = mock(VirtualClusterDefinition.class);
        List<Parameter> vcDefinitionParameters = getTestCaseTemplateParametersList();

        Template templateMock = mock(Template.class);
        Parameters parametersMock = mock(Parameters.class);

        when(parametersMock.getParameter()).thenReturn(vcDefinitionParameters);
        when(templateMock.getParameters()).thenReturn(parametersMock);
        when(testCaseVCDefinition.getTemplate()).thenReturn(templateMock);

        return testCaseVCDefinition;
    }

    @SuppressWarnings("unchecked")
    private List<EditableVirtualClusterParameter> getTestCaseEditableParameters() {
        return mock(List.class);
    }

    @SuppressWarnings("unchecked")
    private List<Parameter> getTestCaseTemplateParametersList() {
        return mock(List.class);
    }
}