Package org.jbehave.examples.core.rest.steps

Source Code of org.jbehave.examples.core.rest.steps.RESTSteps

package org.jbehave.examples.core.rest.steps;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;

import java.util.Map;

import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;
import org.jbehave.core.io.ResourceLoader;
import org.jbehave.core.io.rest.RESTClient.Type;
import org.jbehave.core.io.rest.Resource;
import org.jbehave.core.io.rest.ResourceExporter;
import org.jbehave.core.io.rest.ResourceIndexer;
import org.jbehave.core.io.rest.ResourceUploader;
import org.jbehave.core.io.rest.filesystem.ExportFromFilesystem;
import org.jbehave.core.io.rest.redmine.IndexFromRedmine;
import org.jbehave.core.io.rest.redmine.LoadFromRedmine;
import org.jbehave.core.io.rest.redmine.UploadToRedmine;
import org.jbehave.core.io.rest.xwiki.IndexFromXWiki;
import org.jbehave.core.io.rest.xwiki.LoadFromXWiki;
import org.jbehave.core.io.rest.xwiki.UploadToXWiki;

public class RESTSteps {

  private String providerName;
  private Map<String, Resource> index;

  @Given("REST provider is $name")
  public void givenRESTProvider(String name) {
    this.providerName = name;
  }

  @When("index is retrieved from $uri")
  public void indexIsRetrieved(String uri) {
    ResourceIndexer indexer = resourceIndexer();
    index = indexer.indexResources(uri);
  }

  @Then("the index is not empty")
  public void indexIsNotEmpty() {
    assertThat(index.isEmpty(), is(false));
  }

  @When("story $name text contains '$text'")
  public void storyIsLoaded(String name, String text) {
    ResourceLoader loader = resourceLoader();
    Resource resource = index.get(name);
    String asText = loader.loadResourceAsText(resource.getURI());
    assertThat(asText, containsString(text));
  }

  @When("stories in $sourcePath are exported to $rootURI")
  public void whenStoriesAreExported(String sourcePath, String rootURI) {
    ResourceExporter exporter = new ExportFromFilesystem(resourceIndexer(), resourceupLoader(), sourcePath, ".story", "", "**/*.story");
    exporter.exportResources(rootURI);
  }

  @When("story $name is uploaded appending '$text'")
  public void storyIsUploaded(String name, String text) {
    ResourceUploader uploader = resourceupLoader();
    Resource resource = index.get(name);
    resource.setContent(resource.getContent()+" "+text);
    uploader.uploadResource(resource);
  }

  private ResourceIndexer resourceIndexer() {
    if (providerName.equals("Redmine")) {
      return new IndexFromRedmine();
    } else if (providerName.equals("XWiki")) {
      return new IndexFromXWiki();
    }
    throw new RuntimeException("Provider not supported: " + providerName);
  }

  private ResourceLoader resourceLoader() {
    if (providerName.equals("Redmine")) {
      return new LoadFromRedmine(Type.JSON);
    } else if (providerName.equals("XWiki")) {
      return new LoadFromXWiki(Type.JSON);
    }
    throw new RuntimeException("Provider not supported: " + providerName);
  }

  private ResourceUploader resourceupLoader() {
    if (providerName.equals("Redmine")) {
      return new UploadToRedmine(Type.JSON, "jbehave", "jbehave");
    } else if (providerName.equals("XWiki")) {
      return new UploadToXWiki(Type.XML, "jbehave", "jbehave");
    }
    throw new RuntimeException("Provider not supported: " + providerName);
  }

}
TOP

Related Classes of org.jbehave.examples.core.rest.steps.RESTSteps

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.