Package org.bladerunnerjs.spec.command

Source Code of org.bladerunnerjs.spec.command.ExportApplicationCommandTest

package org.bladerunnerjs.spec.command;

import org.bladerunnerjs.model.App;
import org.bladerunnerjs.model.Aspect;
import org.bladerunnerjs.model.Blade;
import org.bladerunnerjs.model.Bladeset;
import org.bladerunnerjs.model.exception.command.ArgumentParsingException;
import org.bladerunnerjs.model.exception.command.CommandArgumentsException;
import org.bladerunnerjs.plugin.plugins.commands.standard.ExportApplicationCommand;
import org.bladerunnerjs.testing.specutility.engine.SpecTest;
import org.junit.Before;
import org.junit.Test;

public class ExportApplicationCommandTest extends SpecTest {
  private App app;
  private Aspect aspect;
  private Bladeset bladeset;
  private Blade blade;
 
  @Before
  public void initTestObjects() throws Exception
  {
    given(brjs).hasCommandPlugins(new ExportApplicationCommand())
      .and(brjs).automaticallyFindsBundlerPlugins()
      .and(brjs).automaticallyFindsMinifierPlugins()
      .and(brjs).hasBeenCreated();
      app = brjs.app("app1");
      aspect = app.aspect("default");
      bladeset = app.bladeset("bs");
      blade = bladeset.blade("b1");
  }
 
  @Test
  public void exceptionIsThrownIfAppDoesNotExist() throws Exception {
    when(brjs).runCommand("export-app", "doesNotExist");
    then(exceptions).verifyException(CommandArgumentsException.class, unquoted("Could not find application 'doesNotExist'"))
      .whereTopLevelExceptionIs(CommandArgumentsException.class);
  }
 
  @Test
  public void exceptionIsThrownIfNoAppNameIsProvided() throws Exception {
    when(brjs).runCommand("export-app");
    then(exceptions).verifyException(ArgumentParsingException.class, unquoted("Parameter 'app-name' is required"))
      .whereTopLevelExceptionIs(CommandArgumentsException.class);
  }
 
  @Test
  public void exceptionIsThrownIfTooManyParametersAreProvidedd() throws Exception {
    given(app).hasBeenCreated();
    when(brjs).runCommand("export-app", "app1", "bla", "blabla");
    then(exceptions).verifyException(ArgumentParsingException.class, unquoted("Unexpected argument: blabla"))
      .whereTopLevelExceptionIs(CommandArgumentsException.class);
  }
 
  @Test
  public void appCanBeExportedWithABannerForAppLibraryJsClasses() throws Exception {
    given(app).hasBeenCreated()
    .and(aspect).classFileHasContent("appns.Class1", "default aspect src")
    .and(app).containsFileWithContents("libs/appLib/Class1.js", "library class")
    .and(app).containsFile("WEB-INF/lib/a.jar")
    .and(app).containsFile("WEB-INF/lib/b.jar")
    .and(app).containsFile("WEB-INF/lib/c.jar")
    .and(app).containsFile("WEB-INF/web.xml")
    .and(app).containsFile("WEB-INF/classes/hibernate.cfg.xml");     
  when(brjs).runCommand("export-app", "app1", "--banner", "DISCLAIMER!")
    .and(brjs).zipFileIsExtractedTo("generated/exported-apps/app1.zip", "generated/exported-apps/app1");
  then(brjs).fileHasContents("generated/exported-apps/app1/app1/default-aspect/src/appns/Class1.js", "default aspect src")
    .and(brjs).fileHasContents("generated/exported-apps/app1/app1/libs/appLib/Class1.js",
      "/*" + "\n" +
      "DISCLAIMER!" + "\n" +
      "*/" + "\n" +
      "\n" +
      "library class");
  }
 
  @Test
  public void bannerIsNotIncludedIfTheOptionIsNotSet() throws Exception {
    given(app).hasBeenCreated()
        .and(aspect).classFileHasContent("appns.Class1", "default aspect src")
        .and(app).containsFileWithContents("libs/appLib/Class1.js", "library class");
      when(brjs).runCommand("export-app", "app1")
        .and(brjs).zipFileIsExtractedTo("generated/exported-apps/app1.zip", "generated/exported-apps/app1");
      then(brjs).fileContentsDoesNotContain("generated/exported-apps/app1/app1/libs/appLib/Class1.js", "/*");
  }
 
  @Test
  public void appCanBeExportedAndZipContentsAreCorrect() throws Exception {
    given(app).hasBeenCreated()
      .and(aspect).classFileHasContent("appns.Class1", "default aspect src")
      .and(app).containsFile("WEB-INF/lib/include1.jar")
      .and(app).containsFile("WEB-INF/lib/include2.jar")
      .and(app).containsFile("WEB-INF/lib/brjs-core.jar")
      .and(app).containsFile("WEB-INF/web.xml")
      .and(app).containsFile("WEB-INF/classes/hibernate.cfg.xml");     
    when(brjs).runCommand("export-app", "app1")
      .and(brjs).zipFileIsExtractedTo("generated/exported-apps/app1.zip", "generated/exported-apps/app1");
    then(brjs).hasFile("generated/exported-apps/app1.zip")
      .and(brjs).hasFile("generated/exported-apps/app1/app1/default-aspect/src/appns/Class1.js")
      .and(brjs).hasFile("generated/exported-apps/app1/app1/WEB-INF/lib/include1.jar")
      .and(brjs).hasFile("generated/exported-apps/app1/app1/WEB-INF/lib/include2.jar")
      .and(brjs).hasFile("generated/exported-apps/app1/app1/WEB-INF/web.xml")
      .and(brjs).hasFile("generated/exported-apps/app1/app1/WEB-INF/classes/hibernate.cfg.xml")
      .and(brjs).doesNotHaveFile("generated/exported-apps/app1/app1/WEB-INF/lib/brjs-core.jar");
  }
 
  @Test
  public void maintainsJsStyleFileWhenAppIsExported() throws Exception {
    given(app).hasBeenCreated()
      .and(aspect).hasBeenPopulated()
      .and(aspect).classFileHasContent("appns.Class1", "default aspect src")
      .and(aspect).containsFile("src/.js-style")
      .and(bladeset).hasBeenPopulated()
      .and(bladeset).containsFile("src/.js-style")
      .and(blade).hasBeenPopulated()
      .and(blade).containsFile("src/.js-style");
    when(brjs).runCommand("export-app", "app1")
      .and(brjs).zipFileIsExtractedTo("generated/exported-apps/app1.zip", "generated/exported-apps/app1");
    then(brjs).hasFile("generated/exported-apps/app1/app1/default-aspect/src/.js-style")
      .and(brjs).hasFile("generated/exported-apps/app1/app1/bs-bladeset/src/.js-style")
      .and(brjs).hasFile("generated/exported-apps/app1/app1/bs-bladeset/blades/b1/src/.js-style");
  }
 
  @Test
  public void dotSvnDirsNotExported() throws Exception {
    given(app).hasBeenCreated()
      .and(aspect).hasBeenPopulated()
      .and(aspect).classFileHasContent("appns.Class1", "default aspect src")
      .and(aspect).containsFile("src/.svn/some-file");
    when(brjs).runCommand("export-app", "app1")
      .and(brjs).zipFileIsExtractedTo("generated/exported-apps/app1.zip", "generated/exported-apps/app1");
    then(brjs).hasFile("generated/exported-apps/app1/app1/default-aspect/src/appns/Class1.js")
      .and(brjs).doesNotHaveDir("generated/exported-apps/app1/app1/default-aspect/src/.svn");
  }
 
  @Test
  public void anOptionalExportPathCanBeProvided() throws Exception {
    given(app).hasBeenCreated()
      .and(aspect).classFileHasContent("appns.Class1", "default aspect src");     
    when(brjs).runCommand("export-app", "app1", "target")
      .and(brjs).zipFileIsExtractedTo("sdk/target/app1.zip", "sdk/target/app1");
    then(brjs).hasFile("sdk/target/app1.zip")
    .and(brjs).hasFile("sdk/target/app1/app1/default-aspect/src/appns/Class1.js");
  }
 
  @Test
  public void anOptionalAbsoluteExportPathCanBeProvided() throws Exception {
    given(app).hasBeenCreated()
      .and(aspect).classFileHasContent("appns.Class1", "default aspect src")
      .and(brjs).hasDir("target");
    when(brjs).runCommand("export-app", "app1", brjs.file("target").getAbsolutePath())
      .and(brjs).zipFileIsExtractedTo("target/app1.zip", "target/app1");
    then(brjs).hasFile("target/app1.zip")
      .and(brjs).hasFile("target/app1/app1/default-aspect/src/appns/Class1.js");
  }
 
  @Test
  public void defaultAspectsAreCorrectlyExported() throws Exception {
    given(app).hasBeenCreated()
      .and(app.defaultAspect()).indexPageHasContent("default aspect index");
    when(brjs).runCommand("export-app", "app1")
      .and(brjs).zipFileIsExtractedTo("generated/exported-apps/app1.zip", "generated/exported-apps/app1");
    then(brjs).fileContentsContains("generated/exported-apps/app1/app1/index.html", "default aspect index");
  }
 
  @Test
  public void defaultBladesetsAreCorrectlyExported() throws Exception {
    given(app).hasBeenCreated()
      .and(app.defaultBladeset().blade("b1")).classFileHasContent("Class1", "default-bladeset/b1/Class");
    when(brjs).runCommand("export-app", "app1")
      .and(brjs).zipFileIsExtractedTo("generated/exported-apps/app1.zip", "generated/exported-apps/app1");
    then(brjs).fileContentsContains("generated/exported-apps/app1/app1/blades/b1/src/Class1.js", "default-bladeset/b1/Class");
  }

}
TOP

Related Classes of org.bladerunnerjs.spec.command.ExportApplicationCommandTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.