/*******************************************************************************
* Copyright (c) 2015 Red Hat, Inc. Distributed under license by Red Hat, Inc.
* All rights reserved. This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: Red Hat, Inc. - initial API and implementation
******************************************************************************/
package com.openshift.internal.restclient.model.template;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.jboss.dmr.ModelNode;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import com.openshift.restclient.IClient;
import com.openshift.restclient.model.template.IParameter;
import com.openshift.restclient.model.template.ITemplate;
public class TemplateTest {
@Mock private IClient client;
private ITemplate template;
private ModelNode node = new ModelNode();
@Before
public void setUp() throws Exception {
ModelNode params = node.get("parameters");
params.add(param("foo","bar"));
params.add(param("abc","xyz"));
params.add(param("123","456"));
template = new Template(node, client, null);
}
@Test
public void testGetParametersWhenNotDefined() {
template = new Template(new ModelNode(), client, null);
assertNotNull(template.getParameters());
}
@Test
public void addObjectLabel() {
final String key = "objectLabelKey";
final String value = "objectLabelValue";
template.addObjectLabel(key, value);
Map<String, String> labels = template.getObjectLabels();
assertEquals(value, labels.get(key));
}
@Test
public void updateParameter() {
template.updateParameter("foo", "newbar");
List<String> updatedParams = new ArrayList<String>();
for (IParameter param : template.getParameters().values()) {
updatedParams.add(String.format("%s:%s", param.getName(), param.getValue()));
}
String [] exp = new String [] {"foo:newbar","abc:xyz","123:456"};
String [] act = updatedParams.toArray(new String [] {});
Arrays.sort(exp);
Arrays.sort(act);
assertArrayEquals(exp, act);
}
@Test
public void updateParameters() {
Collection<IParameter> parameters = new ArrayList<IParameter>();
parameters.add(new Parameter(param("foo", "newbar")));
parameters.add(new Parameter(param("123", "anewvalue")));
template.updateParameterValues(parameters);
List<String> updatedParams = new ArrayList<String>();
for (IParameter param : template.getParameters().values()) {
updatedParams.add(String.format("%s:%s", param.getName(), param.getValue()));
}
String [] exp = new String [] {"foo:newbar", "123:anewvalue","abc:xyz"};
String [] act = updatedParams.toArray(new String [] {});
Arrays.sort(exp);
Arrays.sort(act);
assertArrayEquals(exp, act);
}
private ModelNode param(String name, String value) {
ModelNode node = new ModelNode();
node.get("name").set(name);
node.get("value").set(value);
return node;
}
}