package rhogenwizard.sdk.task; import java.io.File; import junit.framework.TestCase; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import rhogenwizard.ConsoleHelper; import rhogenwizard.OSHelper; import rhogenwizard.sdk.task.generate.GenerateRhodesAppTask; import rhogenwizard.sdk.task.generate.GenerateRhodesExtensionTask; import rhogenwizard.sdk.task.generate.GenerateRhodesModelTask; import rhogenwizard.sdk.task.generate.GenerateRhodesSpecTask; public class RhodesCreationTest extends TestCase { private static final String workspaceFolder = new File(System.getProperty("java.io.tmpdir"), "junitworkfiles").getPath(); private boolean checkCreateRhodesFile(String path) { return OSHelper.concat(path, "build.yml").isFile(); } @BeforeClass public static void setUpBeforeClass() throws Exception { ConsoleHelper.setupNullConsoles(); } @AfterClass public static void tearDownAfterClass() throws Exception { } @Before public void setUp() throws Exception { OSHelper.deleteFolder(workspaceFolder); File newWsFodler = new File(workspaceFolder); newWsFodler.mkdir(); } @After public void tearDown() throws Exception { OSHelper.deleteFolder(workspaceFolder); } @Test public void testCreateRhodesApp() throws Exception { String appName = "test001"; RunTask task = new GenerateRhodesAppTask(workspaceFolder, appName); task.run(); assertTrue(task.isOk()); assertTrue(checkCreateRhodesFile(workspaceFolder + File.separator + appName)); } @Test public void testCreateRhodesModel() throws Exception { String appName = "test002"; String modelName = "model002"; String projectLoc = workspaceFolder + File.separator + appName; // create application { RunTask task = new GenerateRhodesAppTask(workspaceFolder, appName); task.run(); assertTrue(task.isOk()); assertTrue(checkCreateRhodesFile(projectLoc)); } // create model { RunTask task = new GenerateRhodesModelTask(projectLoc, modelName, "a, b, c"); task.run(); assertTrue(task.isOk()); // TODO: why model directory is capitalized? assertTrue(OSHelper.concat(projectLoc, "app", "Model002").isDirectory()); assertTrue(OSHelper.concat(projectLoc, "app", "test", "model002_spec.rb").isFile()); } } @Test public void testCreateRhodesExtension() throws Exception { String appName = "test005"; String extensionName = "extension005"; String projectLoc = workspaceFolder + File.separator + appName; // create application { RunTask task = new GenerateRhodesAppTask(workspaceFolder, appName); task.run(); assertTrue(task.isOk()); assertTrue(checkCreateRhodesFile(projectLoc)); } // create extension { RunTask task = new GenerateRhodesExtensionTask(projectLoc, extensionName); task.run(); assertTrue(task.isOk()); // TODO: why extension directory is capitalized? assertTrue(OSHelper.concat(projectLoc, "app", "Extension005Test").isDirectory()); assertTrue(OSHelper.concat(projectLoc, "extensions", extensionName).isDirectory()); } } @Test public void testCreateRhodesSpec() throws Exception { String appName = "test006"; String projectLoc = workspaceFolder + File.separator + appName; // create application { RunTask task = new GenerateRhodesAppTask(workspaceFolder, appName); task.run(); assertTrue(task.isOk()); assertTrue(checkCreateRhodesFile(projectLoc)); } // create spec { RunTask task = new GenerateRhodesSpecTask(projectLoc); task.run(); assertTrue(task.isOk()); // TODO: why extension directory is capitalized? assertTrue(OSHelper.concat(projectLoc, "app", "mspec.rb").isFile()); assertTrue(OSHelper.concat(projectLoc, "app", "spec_runner.rb").isFile()); assertTrue(OSHelper.concat(projectLoc, "app", "SpecRunner").isDirectory()); } } }