/******************************************************************************* * 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.capability.resources; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import java.util.Collection; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import com.openshift.internal.restclient.ResourceFactory; import com.openshift.restclient.IClient; import com.openshift.restclient.capability.resources.IProjectTemplateProcessing; import com.openshift.restclient.capability.server.ITemplateProcessing; import com.openshift.restclient.model.IList; import com.openshift.restclient.model.IProject; import com.openshift.restclient.model.IResource; import com.openshift.restclient.model.template.ITemplate; import com.openshift.restclient.utils.Samples; @RunWith(MockitoJUnitRunner.class) public class ProjectTemplateProcessingTest { private static final String NAMESPACE = "aProjectNamespace"; private IProjectTemplateProcessing capability; @Mock private ITemplate template; @Mock private IClient client; @Mock private ITemplateProcessing serverCapability; @Mock private IProject project; @Before public void setUp() throws Exception { when(project.getNamespace()).thenReturn(NAMESPACE); when(client.supports(eq(ITemplateProcessing.class))).thenReturn(true); when(client.getCapability(eq(ITemplateProcessing.class))).thenReturn(serverCapability); capability = new ProjectTemplateProcessing(project, client); } @Test public void isSupportedShouldBeFalseForNullClient() { capability = new ProjectTemplateProcessing(project, null); assertFalse(capability.isSupported()); } @Test public void isSupportedShouldBeFalseIfTheClientDoesntSupportTemplates() { when(client.supports(eq(ITemplateProcessing.class))).thenReturn(false); capability = new ProjectTemplateProcessing(project, client); assertFalse(capability.isSupported()); } @Test public void isSupportedShouldBeTrueIfTheClientSupportTemplates() { assertTrue(capability.isSupported()); } @Test public void processTemplateShouldUseTheClientsCapability() { when(serverCapability.process(any(ITemplate.class), anyString())).thenReturn(template); assertEquals(template, capability.process(template)); verify(serverCapability).process(eq(template), eq(NAMESPACE)); } @Test public void applyTemplateShouldUseTheClientToCreateTheResources() { @SuppressWarnings("unchecked") Collection<IResource> resources = mock(Collection.class); when(client.create(any(IList.class), anyString())).thenReturn(resources); when(client.getResourceFactory()).thenReturn(new ResourceFactory(client) {}); ITemplate template = new ResourceFactory(client) {}.create(Samples.V1_TEMPLATE.getContentAsString()); assertEquals(resources, capability.apply(template)); verify(client).create(any(IList.class), eq(NAMESPACE)); } }