Package org.bladerunnerjs.testing.specutility

Source Code of org.bladerunnerjs.testing.specutility.BRJSCommander

package org.bladerunnerjs.testing.specutility;

import java.io.File;
import java.io.IOException;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;

import org.bladerunnerjs.model.BRJS;
import org.bladerunnerjs.model.engine.Node;
import org.bladerunnerjs.plugin.Event;
import org.bladerunnerjs.testing.specutility.engine.Command;
import org.bladerunnerjs.testing.specutility.engine.CommanderChainer;
import org.bladerunnerjs.testing.specutility.engine.NodeCommander;
import org.bladerunnerjs.testing.specutility.engine.SpecTest;
import org.bladerunnerjs.testing.specutility.engine.ValueCommand;
import org.bladerunnerjs.testing.specutility.logging.MockLogLevelAccessor;
import org.bladerunnerjs.utility.FileUtility;


public class BRJSCommander extends NodeCommander<BRJS> {
  private final BRJS brjs;
 
  public BRJSCommander(SpecTest modelTest, BRJS brjs) {
    super(modelTest, brjs);
    this.brjs = brjs;
  }
 
  public CommanderChainer populate() throws Exception {
    call(new Command() {
      public void call() throws Exception {
        brjs.populate();
      }
    });
   
    return commanderChainer;
  }
 
  public BRJSConfCommander bladerunnerConf() {
    BRJSConfCommander commander = call(new ValueCommand<BRJSConfCommander>() {
      public BRJSConfCommander call() throws Exception {
        return new BRJSConfCommander(brjs.bladerunnerConf());
      }
    });
   
    return commander;
  }
 
  public CommanderChainer runCommand(final String... args) throws Exception {
    call(new Command() {
      public void call() throws Exception {
        brjs.runCommand(args);
      }
    });
   
    return commanderChainer;
  }
 
  public CommanderChainer runUserCommand(final String... args) {
    call(new Command() {
      public void call() throws Exception {
        brjs.runUserCommand(new MockLogLevelAccessor(), args);
      }
    });
   
    return commanderChainer;
  }
 
  public CommanderChainer discoverApps()
  {
    call(new Command() {
      public void call() throws Exception {
        brjs.userApps();
      }
    });
   
    return commanderChainer;
  }

  public CommanderChainer discoverAllChildren() {
    call(new Command() {
      public void call() throws Exception {
        brjs.discoverAllChildren();
      }
    });
   
    return commanderChainer;
  }
 
  public CommanderChainer hasBeenCreated() {
    call(new Command() {
      public void call() throws Exception {
        specTest.brjs = specTest.createModel();
      }
    });
   
    return commanderChainer;
  }

  public void eventFires(Event event, Node node)
  {
    node.notifyObservers(event, node);
  }

  //TODO: find a better way to run tests that use the 'serve' command - its the only command that doesnt immediately return
  public void runThreadedCommand(final String... args)
  {
    Thread t = new Thread( new Runnable()
    {
      @Override
      public void run()
      {
        try
        {
          specTest.logging.storeLogsIfEnabled();
          runCommand(args);
          specTest.logging.stopStoringLogs();
        }
        catch (Exception e)
        {
          throw new RuntimeException(e);
        }
      }
    });
    t.start();
    try
    {
      Thread.sleep(2000);
    }
    catch (InterruptedException e)
    {
      throw new RuntimeException(e);
    }
  }

  public void zipFileIsExtractedTo(String pathToZip, String pathToExtractZip) throws ZipException, IOException
  {
    ZipFile zipFile = new ZipFile(new File(brjs.dir(), pathToZip));
    File unzippedContentFolder = new File(brjs.dir(), pathToExtractZip);
   
    unzippedContentFolder.mkdirs();
   
    FileUtility.unzip(zipFile, unzippedContentFolder);   
  }
}
TOP

Related Classes of org.bladerunnerjs.testing.specutility.BRJSCommander

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.