package blade.cli.test; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import aQute.lib.io.IO; import blade.cli.blade; import java.io.File; import java.io.IOException; import java.util.regex.Pattern; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class CreateCommandTests { @BeforeClass public static void copyTemplates() throws IOException { IO.copy(new File("templates.zip"), new File("bin_test/templates.zip")); } @Test public void createGradleJSPPortletProject() throws Exception { String[] args = new String[] { "-t", "create", "-d", "generated/test", "jspportlet", "foo", }; new blade().run(args); assertTrue(IO.getFile("generated/test/foo").exists()); assertTrue(IO.getFile("generated/test/foo/bnd.bnd").exists()); File portletFile = IO.getFile("generated/test/foo/src/main/java/foo/FooPortlet.java"); assertTrue(portletFile.exists()); String portletFileContent = new String(IO.read(portletFile)); contains( portletFileContent, ".*^public class FooPortlet extends MVCPortlet.*$"); File gradleBuildFile = IO.getFile("generated/test/foo/build.gradle"); assertTrue(gradleBuildFile.exists()); String gradleBuildFileContent = new String(IO.read(gradleBuildFile)); contains( gradleBuildFileContent, ".*classpath 'com.liferay:com.liferay.ant.bnd:1.0.9'.*"); contains(gradleBuildFileContent, ".*apply plugin: 'biz.aQute.bnd.builder'.*"); File viewJSPFile = IO.getFile( "generated/test/foo/src/main/resources/META-INF/resources/view.jsp"); assertTrue(viewJSPFile.exists()); File initJSPFile = IO.getFile( "generated/test/foo/src/main/resources/META-INF/resources/init.jsp"); assertTrue(initJSPFile.exists()); } @Test public void createGradlePortletProject() throws Exception { String[] args = new String[] { "-t", "create", "-b", "gradle", "-d", "generated/test", "portlet", "-c", "Foo", "gradle.test", }; new blade().run(args); assertTrue( IO.getFile("generated/test/gradle.test/build.gradle").exists()); File portletFile = IO.getFile( "generated/test/gradle.test/src/main/java/gradle/test/FooPortlet.java"); assertTrue(portletFile.exists()); String portletFileContent = new String(IO.read(portletFile)); contains(portletFileContent, "^package gradle.test;.*"); contains(portletFileContent, ".*javax.portlet.display-name=Gradle.test.*"); contains(portletFileContent, ".*^public class FooPortlet .*"); contains(portletFileContent, ".*printWriter.print\\(\\\"Gradle.test Portlet.*"); File bndFile = IO.getFile("generated/test/gradle.test/bnd.bnd"); assertTrue(bndFile.exists()); String bndFileContent = new String(IO.read(bndFile)); contains(bndFileContent, ".*^Private-Package: gradle.test$.*"); } @Test public void createGradleServicePreAction() throws Exception { String[] args = new String[] { "-t", "create", "-b", "gradle", "-d", "generated/test", "service", "servicepreaction", "com.liferay.portal.kernel.events.LifecycleAction" }; new blade().run(args); File buildFile = IO.getFile("generated/test/servicepreaction/build.gradle"); assertTrue(buildFile.exists()); String buildFileContent = new String(IO.read(buildFile)); contains( buildFileContent, ".*compile 'com.liferay.portal:portal-service:7.0.0-SNAPSHOT'.*"); File serviceFile = IO.getFile( "generated/test/servicepreaction/src/main/java/servicepreaction/Servicepreaction.java"); assertTrue(serviceFile.exists()); String serviceFileContent = new String(IO.read(serviceFile)); contains(serviceFileContent, "^package servicepreaction;.*"); contains(serviceFileContent, ".*^import com.liferay.portal.kernel.events.LifecycleAction;$.*"); contains(serviceFileContent, ".*service = LifecycleAction.class.*"); contains(serviceFileContent, ".*^public class Servicepreaction implements LifecycleAction \\{.*"); File bndFile = IO.getFile("generated/test/servicepreaction/bnd.bnd"); assertTrue(bndFile.exists()); String bndFileContent = new String(IO.read(bndFile)); contains( bndFileContent, ".*com.liferay.portal.service;version=\"7.0.0\".*"); } @Test public void createGradleServiceWrapper() throws Exception { String[] args = new String[] { "-t", "create", "-b", "gradle", "-d", "generated/test", "servicewrapper", "serviceoverride", "com.liferay.portal.service.UserLocalServiceWrapper" }; new blade().run(args); File buildFile = IO.getFile("generated/test/serviceoverride/build.gradle"); assertTrue(buildFile.exists()); String buildFileContent = new String(IO.read(buildFile)); contains( buildFileContent, ".*compile 'com.liferay.portal:portal-service:7.0.0-SNAPSHOT'.*"); contains( buildFileContent, ".*classpath 'biz.aQute.bnd:biz.aQute.bnd.gradle:3.0.0'.*"); File serviceWrapperFile = IO.getFile( "generated/test/serviceoverride/src/main/java/serviceoverride/Serviceoverride.java"); assertTrue(serviceWrapperFile.exists()); String serviceWrapperFileContent = new String(IO.read(serviceWrapperFile)); contains(serviceWrapperFileContent, "^package serviceoverride;.*"); contains(serviceWrapperFileContent, ".*^import com.liferay.portal.service.UserLocalServiceWrapper;$.*"); contains(serviceWrapperFileContent, ".*service = ServiceWrapper.class.*"); contains(serviceWrapperFileContent, ".*^public class Serviceoverride extends UserLocalServiceWrapper \\{.*"); contains(serviceWrapperFileContent, ".*public Serviceoverride\\(\\) \\{.*"); File bndFile = IO.getFile("generated/test/serviceoverride/bnd.bnd"); assertTrue(bndFile.exists()); String bndFileContent = new String(IO.read(bndFile)); contains( bndFileContent, ".*Private-Package\\: serviceoverride.*"); contains( bndFileContent, ".*com.liferay.portal.service;version=\'\\[7.0\\,7.1\\)\'.*"); } @Test public void createBndtoolsServicePreAction() throws Exception { String[] args = new String[] { "-t", "create", "-b", "bndtools", "-d", "generated/test", "service", "-c", "ServicePreAction", "service.pre.action", "com.liferay.portal.kernel.events.LifecycleAction" }; new blade().run(args); File bndFile = IO.getFile("generated/test/service.pre.action/bnd.bnd"); assertTrue(bndFile.exists()); String bndFileContent = new String(IO.read(bndFile)); contains( bndFileContent, ".*com.liferay.portal:portal-service;version='\\[7\\.0,8\\)'.*"); File serviceFile = IO.getFile( "generated/test/service.pre.action/src/service/pre/action/ServicePreAction.java"); assertTrue(serviceFile.exists()); String serviceFileContent = new String(IO.read(serviceFile)); contains(serviceFileContent, "^package service.pre.action;.*"); contains(serviceFileContent, ".*^import com.liferay.portal.kernel.events.LifecycleAction;$.*"); contains(serviceFileContent, ".*service = LifecycleAction.class.*"); contains(serviceFileContent, ".*^public class ServicePreAction implements LifecycleAction \\{.*"); } @Test public void createMavenJSPPortletProject() throws Exception { String[] args = new String[] { "-t", "create", "-d", "generated/test", "-b", "maven", "jspportlet", "foo", }; new blade().run(args); assertTrue(IO.getFile("generated/test/foo").exists()); assertTrue(IO.getFile("generated/test/foo/bnd.bnd").exists()); assertTrue(IO.getFile("generated/test/foo/pom.xml").exists()); File portletFile = IO.getFile( "generated/test/foo/src/main/java/foo/FooPortlet.java"); assertTrue(portletFile.exists()); String portletFileContent = new String(IO.read(portletFile)); contains( portletFileContent, ".*^public class FooPortlet extends MVCPortlet.*$"); File pomFile = IO.getFile("generated/test/foo/pom.xml"); assertTrue(pomFile.exists()); String pomFileContent = new String(IO.read(pomFile)); contains(pomFileContent, ".*<groupId>foo</groupId>.*"); contains(pomFileContent, ".*<artifactId>foo</artifactId>.*"); contains(pomFileContent, ".*<name>Foo</name>.*"); File viewJSPFile = IO.getFile( "generated/test/foo/src/main/resources/META-INF/resources/view.jsp"); assertTrue(viewJSPFile.exists()); File initJSPFile = IO.getFile( "generated/test/foo/src/main/resources/META-INF/resources/init.jsp"); assertTrue(initJSPFile.exists()); } @Test public void createMavenPackagePath() throws Exception { String[] args = new String[] { "-t", "create", "-d", "generated/test", "-b", "maven", "service", "-c", "PackagePathTest", "blade.package.path.test", "com.liferay.portal.kernel.events.LifecycleAction" }; new blade().run(args); File serviceFile = IO.getFile( "generated/test/blade.package.path.test/src/main/java/blade/package/path/test/PackagePathTest.java"); assertTrue(serviceFile.exists()); String serviceFileContent = new String(IO.read(serviceFile)); contains(serviceFileContent, "^package blade.package.path.test;.*"); contains(serviceFileContent, ".*^public class PackagePathTest implements LifecycleAction \\{.*"); File pomFile = IO.getFile("generated/test/blade.package.path.test/pom.xml"); String pomFileContent = new String(IO.read(pomFile)); contains( pomFileContent, ".*<Private-Package>blade.package.path.test</Private-Package>.*"); } @Test public void createMavenPortletProject() throws Exception { String[] args = new String[] { "-t", "create", "-d", "generated/test", "-b", "maven", "portlet", "foo", }; new blade().run(args); assertTrue(IO.getFile("generated/test/foo").exists()); assertTrue(IO.getFile("generated/test/foo/pom.xml").exists()); File portletFile = IO.getFile( "generated/test/foo/src/main/java/foo/FooPortlet.java"); assertTrue(portletFile.exists()); String portletFileContent = new String(IO.read(portletFile)); contains(portletFileContent, "^package foo;.*"); contains(portletFileContent, ".*javax.portlet.display-name=foo.*"); contains(portletFileContent, ".*^public class Foo.*"); contains(portletFileContent, ".*printWriter.print\\(\\\"Foo Portlet.*"); File pomFile = IO.getFile("generated/test/foo/pom.xml"); assertTrue(pomFile.exists()); String pomFileContent = new String(IO.read(pomFile)); contains(pomFileContent, ".*<groupId>foo</groupId>.*"); contains(pomFileContent, ".*<artifactId>foo</artifactId>.*"); contains(pomFileContent, ".*<name>Foo</name>.*"); contains(pomFileContent, ".*<Private-Package>foo</Private-Package>.*"); } @Test public void createMavenServicePreAction() throws Exception { String[] args = new String[] { "-t", "create", "-d", "generated/test", "-b", "maven", "service", "servicepreaction", "com.liferay.portal.kernel.events.LifecycleAction" }; new blade().run(args); assertTrue(IO.getFile("generated/test/servicepreaction").exists()); assertTrue( IO.getFile("generated/test/servicepreaction/pom.xml").exists()); File serviceFile = IO.getFile( "generated/test/servicepreaction/src/main/java/servicepreaction/Servicepreaction.java"); assertTrue(serviceFile.exists()); String serviceFileContent = new String(IO.read(serviceFile)); contains(serviceFileContent, "^package servicepreaction;.*"); contains(serviceFileContent, ".*^import com.liferay.portal.kernel.events.LifecycleAction;$.*"); contains(serviceFileContent, ".*service = LifecycleAction.class.*"); contains(serviceFileContent, ".*^public class Servicepreaction implements LifecycleAction \\{.*"); } @Test public void createMavenServicePreActionClassname() throws Exception { String[] args = new String[] { "-t", "create", "-d", "generated/test", "service", "-c", "LoginPreAction", "loginpre", "com.liferay.portal.kernel.events.LifecycleAction" }; new blade().run(args); File serviceFile = IO.getFile( "generated/test/loginpre/src/main/java/loginpre/LoginPreAction.java"); assertTrue(serviceFile.exists()); String serviceFileContent = new String(IO.read(serviceFile)); contains( serviceFileContent, ".*^public class LoginPreAction implements LifecycleAction \\{.*"); } @Test public void createMavenServiceWrapper() throws Exception { String[] args = new String[] { "-t", "create", "-d", "generated/test", "-b", "maven", "servicewrapper", "serviceoverride", "com.liferay.portal.service.UserLocalServiceWrapper" }; new blade().run(args); assertTrue(IO.getFile("generated/test/serviceoverride").exists()); assertTrue( IO.getFile("generated/test/serviceoverride/pom.xml").exists()); File serviceWrapperFile = IO.getFile( "generated/test/serviceoverride/src/main/java/serviceoverride/Serviceoverride.java"); assertTrue(serviceWrapperFile.exists()); String serviceWrapperFileContent = new String(IO.read(serviceWrapperFile)); contains(serviceWrapperFileContent, "^package serviceoverride;.*"); contains(serviceWrapperFileContent, ".*^import com.liferay.portal.service.UserLocalServiceWrapper;$.*"); contains(serviceWrapperFileContent, ".*^public class Serviceoverride extends UserLocalServiceWrapper \\{.*"); contains(serviceWrapperFileContent, ".*public Serviceoverride\\(\\) \\{.*"); } @Test public void createMavenServiceWrapperClassname() throws Exception { String[] args = new String[] { "-t", "create", "-b", "maven", "-d", "generated/test", "servicewrapper", "-c", "UserLocalServiceOverride", "serviceoverride", "com.liferay.portal.service.UserLocalServiceWrapper" }; new blade().run(args); File serviceWrapperFile = IO.getFile( "generated/test/serviceoverride/src/main/java/serviceoverride/UserLocalServiceOverride.java"); assertTrue(serviceWrapperFile.exists()); String serviceWrapperFileContent = new String(IO.read(serviceWrapperFile)); contains( serviceWrapperFileContent, ".*^public class UserLocalServiceOverride extends UserLocalServiceWrapper \\{.*"); contains(serviceWrapperFileContent, ".*public UserLocalServiceOverride\\(\\) \\{.*"); } @Before public void setup() { File testdir = IO.getFile("generated/test"); if (testdir.exists()) { IO.delete(testdir); assertFalse(testdir.exists()); } } private void contains(String content, String pattern) { assertTrue( Pattern.compile( pattern, Pattern.MULTILINE | Pattern.DOTALL).matcher( content).matches()); } }