/*******************************************************************************
* Copyright (c) 2012 VMWare, 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:
* VMWare, Inc. - initial API and implementation
*******************************************************************************/
package org.grails.ide.eclipse.commands.test;
import java.io.File;
import org.grails.ide.eclipse.commands.GrailsCommand;
import org.grails.ide.eclipse.commands.GrailsCommandFactory;
import org.grails.ide.eclipse.core.GrailsCoreActivator;
import org.grails.ide.eclipse.core.internal.classpath.GrailsClasspathUtils;
import org.grails.ide.eclipse.core.model.GrailsVersion;
import org.springsource.ide.eclipse.commons.frameworks.core.internal.plugins.BasePluginData;
import org.springsource.ide.eclipse.commons.frameworks.core.internal.plugins.PluginVersion;
/**
* Quick tests for the GrailsCommandFactory's static factory methods.
*
* @author Kris De Volder
*
* @since 2.9
*/
public class GrailsCommandFactoryTest extends AbstractCommandTest {
private static final char QUOTE = '"';
@Override
protected void setUp() throws Exception {
super.setUp();
ensureDefaultGrailsVersion(GrailsVersion.MOST_RECENT);
}
public void testCreateApp() throws Exception {
assertEquals("create-app foo", GrailsCommandFactory.createApp("foo").getCommand());
}
public void testCreatePlugin() throws Exception {
assertEquals("create-plugin foo", GrailsCommandFactory.createPlugin("foo").getCommand());
}
public void testCreatePlugin2() throws Exception {
GrailsCommand cmd = GrailsCommandFactory.createPlugin(GrailsCoreActivator.getDefault().getInstallManager().getDefaultGrailsInstall(),"foo");
assertEquals("create-plugin foo", cmd.getCommand());
}
public void testCreateDomainClass() throws Exception {
project = ensureProject("bork");
assertEquals("create-domain-class MyDomain", GrailsCommandFactory.createDomainClass(project, "MyDomain").getCommand());
}
public void testRefreshDependencyFile() throws Exception {
project = ensureProject("bork");
GrailsCommand cmd = GrailsCommandFactory.refreshDependencyFile(project);
String expect = "compile --non-interactive";
if (GrailsVersion.MOST_RECENT.compareTo(GrailsVersion.V_2_0_0) >= 0) {
expect = expect + " --refresh-dependencies";
}
assertEquals(expect, cmd.getCommand());
}
public void testDownloadSourceJars() throws Exception {
project = ensureProject("bork");
String sourceFileLocation = GrailsClasspathUtils.getDependencySourcesDescriptorName(project);
if (sourceFileLocation.contains(" ")) {
sourceFileLocation = QUOTE+sourceFileLocation+QUOTE;
}
GrailsCommand cmd = GrailsCommandFactory.downloadSourceJars(project);
assertEquals("refresh-dependencies --include-source "+sourceFileLocation, cmd.getCommand());
}
public void testWar() throws Exception {
project = ensureProject("bork");
GrailsCommand cmd = GrailsCommandFactory.war(project, null, null);
assertEquals("prod war", cmd.getCommand());
}
public void testDevWar() throws Exception {
project = ensureProject("bork");
GrailsCommand cmd = GrailsCommandFactory.war(project, "dev", null);
assertEquals("dev war", cmd.getCommand());
}
public void testDevWarWithFile() throws Exception {
project = ensureProject("bork");
GrailsCommand cmd = GrailsCommandFactory.war(project, "dev", new File("/tmp/crud123.war"));
assertEquals("dev war /tmp/crud123.war", cmd.getCommand());
}
public void testDevWarWithCustomEnv() throws Exception {
project = ensureProject("bork");
GrailsCommand cmd = GrailsCommandFactory.war(project, "somethingSpecial", new File("/tmp/crud123.war"));
assertEquals("war /tmp/crud123.war", cmd.getCommand());
assertEquals("somethingSpecial", cmd.getSystemProperties().get("grails.env"));
}
public void testWarWithSpaces() throws Exception {
project = ensureProject("bork");
GrailsCommand cmd = GrailsCommandFactory.war(project, null, new File("/tmp/has space.war"));
assertEquals("prod war "+QUOTE+"/tmp/has space.war"+QUOTE, cmd.getCommand());
}
public void testUpgrade() throws Exception {
project = ensureProject("bork");
GrailsCommand cmd = GrailsCommandFactory.upgrade(project, GrailsCoreActivator.getDefault().getInstallManager().getGrailsInstall(project));
assertEquals("upgrade --non-interactive", cmd.getCommand());
}
public void testUninstallPlugin() throws Exception {
project = ensureProject("bork");
BasePluginData data = new BasePluginData();
data.setName("plugThat");
data.setVersion("1.2.3");
PluginVersion pluginVersion = new PluginVersion(data);
GrailsCommand cmd = GrailsCommandFactory.uninstallPlugin(project, pluginVersion);
assertEquals("uninstall-plugin --non-interactive plugThat", cmd.getCommand());
}
public void testInstallPlugin() throws Exception {
project = ensureProject("bork");
BasePluginData data = new BasePluginData();
data.setName("plugThat");
data.setVersion("1.2.3");
PluginVersion pluginVersion = new PluginVersion(data);
GrailsCommand cmd = GrailsCommandFactory.installPlugin(project, pluginVersion);
assertEquals("install-plugin --non-interactive plugThat 1.2.3", cmd.getCommand());
}
public void testInstallPlugin2() throws Exception {
project = ensureProject("bork");
GrailsCommand cmd = GrailsCommandFactory.installPlugin(project, "plugger");
assertEquals("install-plugin --non-interactive plugger", cmd.getCommand());
}
public void testClean() throws Exception {
project = ensureProject("bork");
GrailsCommand cmd = GrailsCommandFactory.clean(project);
assertEquals("clean", cmd.getCommand());
}
public void testListPlugins() throws Exception {
project = ensureProject("bork");
GrailsCommand cmd = GrailsCommandFactory.listPlugins(project);
assertEquals("list-plugins", cmd.getCommand());
}
}