/*******************************************************************************
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
*******************************************************************************/
package com.liferay.ide.project.core.tests.modules;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import com.liferay.ide.core.util.CoreUtil;
import com.liferay.ide.core.util.FileUtil;
import com.liferay.ide.project.core.ProjectCore;
import com.liferay.ide.project.core.modules.BladeCLI;
import com.liferay.ide.project.core.modules.NewLiferayComponentOp;
import com.liferay.ide.project.core.modules.NewLiferayComponentOpMethods;
import com.liferay.ide.project.core.modules.NewLiferayModuleProjectOp;
import com.liferay.ide.project.core.modules.NewLiferayModuleProjectOpMethods;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.sapphire.modeling.Status;
import org.eclipse.sapphire.platform.ProgressMonitorBridge;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* @author Gregory Amerson
* @author Simon Jiang
*/
public class NewLiferayComponentOpTests
{
@Test
public void testNewLiferayComponentDefaultValueServiceDashes() throws Exception
{
NewLiferayComponentOp op = NewLiferayComponentOp.TYPE.instantiate();
op.setProjectName( "my-test-project" );
op.setComponentClassTemplateName( "PortletActionCommand" );
assertEquals( "MyTestProjectPortletActionCommand", op.getComponentClassName().content( true ) );
}
@Test
public void testNewLiferayComponentDefaultValueServiceUnderscores() throws Exception
{
NewLiferayComponentOp op = NewLiferayComponentOp.TYPE.instantiate();
op.setProjectName( "my_test_project" );
op.setComponentClassTemplateName( "PortletActionCommand" );
assertEquals( "MyTestProjectPortletActionCommand", op.getComponentClassName().content( true ) );
}
@Test
public void testNewLiferayComponentDefaultValueServiceDots() throws Exception
{
NewLiferayComponentOp op = NewLiferayComponentOp.TYPE.instantiate();
op.setProjectName( "my.test.project" );
op.setComponentClassTemplateName( "PortletActionCommand" );
assertEquals( "MyTestProjectPortletActionCommand", op.getComponentClassName().content( true ) );
}
@Test
public void testNewLiferayComponentDefaultValueServiceIsListeningToProjectName() throws Exception
{
NewLiferayComponentOp op = NewLiferayComponentOp.TYPE.instantiate();
op.setProjectName( "my.test.project" );
op.setComponentClassTemplateName( "PortletActionCommand" );
assertEquals( "MyTestProjectPortletActionCommand", op.getComponentClassName().content( true ) );
op.setProjectName( "my_abc-test" );
assertEquals( "MyAbcTestPortletActionCommand", op.getComponentClassName().content( true ) );
}
@Test
public void testNewLiferayComponentDefaultValueServiceIsListeningToComponentClassTemplateName() throws Exception
{
NewLiferayComponentOp op = NewLiferayComponentOp.TYPE.instantiate();
op.setProjectName( "my.test.project" );
op.setComponentClassTemplateName( "PortletActionCommand" );
assertEquals( "MyTestProjectPortletActionCommand", op.getComponentClassName().content( true ) );
op.setComponentClassTemplateName( "FriendlyUrlMapper" );
assertEquals( "MyTestProjectFriendlyUrlMapper", op.getComponentClassName().content( true ) );
}
@BeforeClass
public static void setupBladeCLIRepoUrl() throws Exception
{
IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode( ProjectCore.PLUGIN_ID );
prefs.put( BladeCLI.BLADE_CLI_REPO_URL, "https://liferay-test-01.ci.cloudbees.com/job/liferay-blade-cli/lastSuccessfulBuild/artifact/build/generated/p2/" );
prefs.flush();
}
@Test
public void testNewLiferayComponentBndAndGradleForPortleActionCommandAndRest() throws Exception
{
NewLiferayModuleProjectOp pop = NewLiferayModuleProjectOp.TYPE.instantiate();
pop.setProjectName( "testGradleModuleComponentBnd" );
pop.setProjectTemplateName( "portlet" );
pop.setProjectProvider( "gradle-module" );
Status modulePorjectStatus = NewLiferayModuleProjectOpMethods.execute( pop, ProgressMonitorBridge.create( new NullProgressMonitor() ) );
assertTrue( modulePorjectStatus.ok() );
IProject modPorject = CoreUtil.getProject( pop.getProjectName().content() );
modPorject.open( new NullProgressMonitor() );
NewLiferayComponentOp cop = NewLiferayComponentOp.TYPE.instantiate();
cop.setProjectName( pop.getProjectName().content() );
cop.setComponentClassTemplateName( "PortletActionCommand" );
NewLiferayComponentOpMethods.execute( cop, ProgressMonitorBridge.create( new NullProgressMonitor() ) );
IFile bgd = modPorject.getFile( "bnd.bnd" );
String bndcontent = FileUtil.readContents( bgd.getLocation().toFile(), true );
String bndConfig = "-includeresource: \\" + System.getProperty( "line.separator" ) +
"\t" + "@com.liferay.util.bridges-2.0.0.jar!/com/liferay/util/bridges/freemarker/FreeMarkerPortlet.class,\\" + System.getProperty( "line.separator" ) +
"\t" + "@com.liferay.util.taglib-2.0.0.jar!/META-INF/*.tld" + System.getProperty( "line.separator" );
assertTrue( bndcontent.contains( bndConfig ) );
IFile buildgrade = modPorject.getFile( "build.gradle" );
String buildgradeContent = FileUtil.readContents( buildgrade.getLocation().toFile(),true );
assertTrue( buildgradeContent.contains( "compile group: \"com.liferay.portal\", name:\"com.liferay.util.bridges\", version:\"2.0.0\"" ) );
assertTrue( buildgradeContent.contains( "compile group: \"org.osgi\", name:\"org.osgi.service.component.annotations\", version:\"1.3.0\"" ) );
NewLiferayComponentOp copRest = NewLiferayComponentOp.TYPE.instantiate();
copRest.setProjectName( pop.getProjectName().content() );
copRest.setComponentClassTemplateName( "RestService" );
NewLiferayComponentOpMethods.execute( copRest, ProgressMonitorBridge.create( new NullProgressMonitor() ) );
bgd = modPorject.getFile( "bnd.bnd" );
bndcontent = FileUtil.readContents( bgd.getLocation().toFile(), true );
assertTrue( bndcontent.contains( bndConfig ) );
final String restConfig = "Require-Capability: osgi.contract; filter:=\"(&(osgi.contract=JavaJAXRS)(version=2))\"";
assertTrue( bndcontent.contains( restConfig ) );
buildgrade = modPorject.getFile( "build.gradle" );
buildgradeContent = FileUtil.readContents( buildgrade.getLocation().toFile(),true );
assertTrue( buildgradeContent.contains( "compile group: \"javax.ws.rs\", name:\"javax.ws.rs-api\", version:\"2.0.1\"" ) );
NewLiferayComponentOp copAuth = NewLiferayComponentOp.TYPE.instantiate();
copAuth.setProjectName( pop.getProjectName().content() );
copAuth.setComponentClassTemplateName( "Authenticator" );
NewLiferayComponentOpMethods.execute( copAuth, ProgressMonitorBridge.create( new NullProgressMonitor() ) );
bgd = modPorject.getFile( "bnd.bnd" );
bndcontent = FileUtil.readContents( bgd.getLocation().toFile(), true );
bndConfig = "-includeresource: \\" + System.getProperty( "line.separator" ) +
"\t" + "@com.liferay.util.bridges-2.0.0.jar!/com/liferay/util/bridges/freemarker/FreeMarkerPortlet.class,\\" + System.getProperty( "line.separator" ) +
"\t" + "@com.liferay.util.taglib-2.0.0.jar!/META-INF/*.tld,\\" + System.getProperty( "line.separator" ) +
"\t" + "@shiro-core-1.1.0.jar";
assertTrue( bndcontent.contains( bndConfig ) );
buildgrade = modPorject.getFile( "build.gradle" );
buildgradeContent = FileUtil.readContents( buildgrade.getLocation().toFile() ,true);
assertTrue( buildgradeContent.contains( "compile group: \"org.apache.shiro\", name:\"shiro-core\", version:\"1.1.0\"" ) );
}
}