org.ecipse.che.plugin.testing.testng.server.TestNGRunnerTest.java Source code

Java tutorial

Introduction

Here is the source code for org.ecipse.che.plugin.testing.testng.server.TestNGRunnerTest.java

Source

/*
 * Copyright (c) 2012-2017 Red Hat, Inc.
 * All rights reserved. This program and the accompanying materials
 * are 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 org.ecipse.che.plugin.testing.testng.server;

import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertEquals;

import org.eclipse.che.api.core.jsonrpc.commons.RequestTransmitter;
import org.eclipse.che.api.core.jsonrpc.commons.transmission.EndpointIdConfigurator;
import org.eclipse.che.api.core.jsonrpc.commons.transmission.MethodNameConfigurator;
import org.eclipse.che.api.core.jsonrpc.commons.transmission.ParamsConfigurator;
import org.eclipse.che.api.core.jsonrpc.commons.transmission.SendConfiguratorFromOne;
import org.eclipse.che.api.project.server.FolderEntry;
import org.eclipse.che.api.project.server.ProjectCreatedEvent;
import org.eclipse.che.api.testing.server.dto.DtoServerImpls;
import org.eclipse.che.api.testing.shared.TestExecutionContext;
import org.eclipse.che.jdt.core.launching.JREContainerInitializer;
import org.eclipse.che.jdt.core.resources.ResourceChangedEvent;
import org.eclipse.che.plugin.java.testing.ClasspathUtil;
import org.eclipse.che.plugin.java.testing.JavaTestFinder;
import org.eclipse.che.plugin.java.testing.ProjectClasspathProvider;
import org.eclipse.che.plugin.testing.testng.server.TestNGRunner;
import org.eclipse.che.plugin.testing.testng.server.TestNGSuiteUtil;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.internal.core.JavaModelManager;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class TestNGRunnerTest extends BaseTest {
    private EndpointIdConfigurator startEndpointIdConfigurator;
    private MethodNameConfigurator startMethodNameConfigurator;
    private ParamsConfigurator startParamsConfigurator;
    private SendConfiguratorFromOne startSendConfiguratorFromOne;
    private JavaTestFinder testNGTestFinder;
    private RequestTransmitter transmitter;

    private TestNGRunner runner;

    @BeforeMethod
    public void setUp() throws Exception {
        startEndpointIdConfigurator = mock(EndpointIdConfigurator.class);
        testNGTestFinder = mock(JavaTestFinder.class);
        startMethodNameConfigurator = mock(MethodNameConfigurator.class);
        startParamsConfigurator = mock(ParamsConfigurator.class);
        startSendConfiguratorFromOne = mock(SendConfiguratorFromOne.class);
        transmitter = mock(RequestTransmitter.class);

        runner = new TestNGRunner("", testNGTestFinder, new ProjectClasspathProvider(""), new TestNGSuiteUtil());
    }

    @Test()
    public void testName() throws Exception {
        String name = "Test";
        FolderEntry folder = pm.getProjectsRoot().createFolder(name);
        FolderEntry testsFolder = folder.createFolder("src/tests");
        StringBuilder b = new StringBuilder("package tests;\n");
        b.append("public class TestNGTest {}");
        testsFolder.createFile("TestNGTest.java", b.toString().getBytes());
        projectRegistry.setProjectType(folder.getPath().toString(), "java", false);

        //inform DeltaProcessingStat about new project
        JavaModelManager.getJavaModelManager().deltaState
                .resourceChanged(new ResourceChangedEvent(root, new ProjectCreatedEvent("", "/Test")));

        IJavaProject javaProject = JavaModelManager.getJavaModelManager().getJavaModel().getJavaProject("/Test");
        IClasspathEntry testNg = JavaCore.newLibraryEntry(new Path(ClasspathUtil.getJarPathForClass(Test.class)),
                null, null);
        IClasspathEntry source = JavaCore.newSourceEntry(new Path("/Test/src"), null,
                new Path(ClasspathUtil.getJarPathForClass(TestNGRunnerTest.class)));
        IClasspathEntry jre = JavaCore.newContainerEntry(new Path(JREContainerInitializer.JRE_CONTAINER));

        javaProject.setRawClasspath(new IClasspathEntry[] { testNg, source, jre }, null);

        DtoServerImpls.TestExecutionContextImpl context = new DtoServerImpls.TestExecutionContextImpl();
        context.setDebugModeEnable(false);
        context.setContextType(TestExecutionContext.ContextType.FILE);
        context.setProjectPath("/Test");
        context.setFilePath("/Test/src/tests/TestNGTest.java");
        assertEquals("testng", runner.getName());
    }

    private void prepareTransmitting(RequestTransmitter transmitter) {
        when(transmitter.newRequest()).thenReturn(startEndpointIdConfigurator);
        when(startEndpointIdConfigurator.endpointId(anyString())).thenReturn(startMethodNameConfigurator);
        when(startMethodNameConfigurator.methodName(anyString())).thenReturn(startParamsConfigurator);
        when(startParamsConfigurator.paramsAsString(anyString())).thenReturn(startSendConfiguratorFromOne);
    }
}