com.seitenbau.jenkins.plugins.dynamicparameter.StringParameterDefinitionTest.java Source code

Java tutorial

Introduction

Here is the source code for com.seitenbau.jenkins.plugins.dynamicparameter.StringParameterDefinitionTest.java

Source

/*
 * Copyright 2012 Seitenbau
 *
 * 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 com.seitenbau.jenkins.plugins.dynamicparameter;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import hudson.model.ParameterValue;
import hudson.model.StringParameterValue;
import net.sf.json.JSONObject;

import org.apache.commons.lang.StringUtils;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.kohsuke.stapler.StaplerRequest;

/** Tests for {@link StringParameterDefinition}. */
public class StringParameterDefinitionTest {
    /** Script result. */
    private static final String SCRIPT_RESULT = "result";
    /** Groovy script which return a string. */
    private static final String SCRIPT = "return \"" + SCRIPT_RESULT + "\"";

    /** Test object. */
    private StringParameterDefinition stringParameterDefinition;

    /** Set-up method. */
    @Before
    public final void setUp() {
        stringParameterDefinition = new StringParameterDefinition("test", SCRIPT, "desc", null, false,
                StringUtils.EMPTY);
    }

    /** Test for {@link StringParameterDefinition#getDefaultValue()}. */
    @Test
    public final void testGetDefaultValue() {
        assertEquals(SCRIPT_RESULT, stringParameterDefinition.getDefaultValue());
    }

    /** Test for {@link StringParameterDefinition#createValue(StaplerRequest)}. */
    @Test
    public final void testCreateValue() {
        final StaplerRequest req = mock(StaplerRequest.class);
        when(req.getParameterValues(anyString())).thenReturn(new String[] { SCRIPT_RESULT });

        final ParameterValue paramValue = stringParameterDefinition.createValue(req);

        assertEquals(SCRIPT_RESULT, ((StringParameterValue) paramValue).value);
    }

    /** Test for {@link StringParameterDefinition#createValue(StaplerRequest)}. */
    @Test
    @Ignore
    public final void testCreateValueNull() {
        final StaplerRequest req = mock(StaplerRequest.class);
        when(req.getParameterValues(anyString())).thenReturn(null);

        assertNull(stringParameterDefinition.createValue(req));
    }

    /** Test for {@link StringParameterDefinition#createValue(StaplerRequest)}. */
    @Test
    public final void testDefaultValue() {
        final ParameterValue paramValue = stringParameterDefinition.getDefaultParameterValue();

        assertEquals(SCRIPT_RESULT, ((StringParameterValue) paramValue).value);
    }

    /** Test for {@link StringParameterDefinition#createValue(StaplerRequest)}. */
    @Test(expected = IllegalArgumentException.class)
    public final void testCreateValueWrongNumberOfParams() {
        final StaplerRequest req = mock(StaplerRequest.class);
        when(req.getParameterValues(anyString())).thenReturn(new String[2]);

        stringParameterDefinition.createValue(req);
    }

    /** Test for {@link StringParameterDefinition#createValue(StaplerRequest, JSONObject)}. */
    @Test
    public void testCreateValueJSON() {
        final StaplerRequest req = mock(StaplerRequest.class);
        // final JSONObject jo = mock(JSONObject.class);
        // so we genrate our own mock data:
        final JSONObject jo = new JSONObject(false);
        jo.put("name", "someName");
        jo.put("value", "1");

        final StringParameterValue value = new StringParameterValue("testName", "testValue");

        when(req.bindJSON(StringParameterValue.class, jo)).thenReturn(value);
        final ParameterValue result = stringParameterDefinition.createValue(req, jo);

        assertEquals(value, result);
        assertEquals(stringParameterDefinition.getDescription(), result.getDescription());
    }
}