/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * 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: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.plugin.java.plain.server.generator; import org.eclipse.che.api.project.server.type.AttributeValue; import org.eclipse.che.api.vfs.Path; import org.eclipse.che.api.vfs.VirtualFile; import org.eclipse.che.ide.ext.java.shared.Constants; import org.eclipse.che.plugin.java.plain.server.BaseTest; import org.eclipse.che.plugin.java.plain.server.projecttype.ClasspathBuilder; import org.eclipse.che.plugin.java.plain.shared.PlainJavaProjectConstants; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.internal.core.JavaModelManager; import org.mockito.Mock; import org.mockito.testng.MockitoTestNGListener; import org.testng.annotations.AfterMethod; import org.testng.annotations.Listeners; import org.testng.annotations.Test; import java.util.HashMap; import java.util.Map; import static java.util.Collections.singletonList; import static org.eclipse.che.plugin.java.plain.shared.PlainJavaProjectConstants.DEFAULT_LIBRARY_FOLDER_VALUE; import static org.eclipse.che.plugin.java.plain.shared.PlainJavaProjectConstants.DEFAULT_SOURCE_FOLDER_VALUE; import static org.mockito.Mockito.verify; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; /** * @author Valeriy Svydenko */ @Listeners(value = {MockitoTestNGListener.class}) public class PlainJavaProjectGeneratorTest extends BaseTest { @Mock private ClasspathBuilder classpathBuilder; private Map<String, AttributeValue> attributes; private Map<String, String> options; @Test public void checkProjectTypeId() throws Exception { PlainJavaProjectGenerator generator = new PlainJavaProjectGenerator(vfsProvider, classpathBuilder); assertEquals(PlainJavaProjectConstants.JAVAC_PROJECT_ID, generator.getProjectType()); } @AfterMethod public void clearProject() throws Exception { VirtualFile project = vfsProvider.getVirtualFileSystem().getRoot().getChild(Path.of("project")); if (project != null) { project.delete(); } } @Test public void projectShouldBeCreatedWithDefaultContent() throws Exception { attributes = new HashMap<>(); options = new HashMap<>(); PlainJavaProjectGenerator generator = new PlainJavaProjectGenerator(vfsProvider, classpathBuilder); generator.onCreateProject(Path.of("project"), attributes, options); IJavaProject project = JavaModelManager.getJavaModelManager().getJavaModel().getJavaProject("project"); assertTrue(project.exists()); verify(classpathBuilder).generateClasspath(project, singletonList(DEFAULT_SOURCE_FOLDER_VALUE), singletonList(DEFAULT_LIBRARY_FOLDER_VALUE)); } @Test public void projectShouldBeCreatedWithCustomSourceFolders() throws Exception { attributes = new HashMap<>(); options = new HashMap<>(); attributes.put(Constants.SOURCE_FOLDER, new AttributeValue("src2")); PlainJavaProjectGenerator generator = new PlainJavaProjectGenerator(vfsProvider, classpathBuilder); generator.onCreateProject(Path.of("project"), attributes, options); VirtualFile project1 = vfsProvider.getVirtualFileSystem().getRoot().getChild(Path.of("project")); IJavaProject project = JavaModelManager.getJavaModelManager().getJavaModel().getJavaProject("project"); VirtualFile mainClass = project1.getChild(Path.of("/src2/Main.java")); assertNotNull(mainClass); assertTrue(project.exists()); verify(classpathBuilder).generateClasspath(project, singletonList("src2"), singletonList(DEFAULT_LIBRARY_FOLDER_VALUE)); } }