Package com.gistlabs.mechanize.document.json.hypermedia

Source Code of com.gistlabs.mechanize.document.json.hypermedia.BulkJsonLinksTest

/**
* Copyright (C) 2012-2014 Gist Labs, LLC. (http://gistlabs.com)
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package com.gistlabs.mechanize.document.json.hypermedia;

import static org.junit.Assert.assertEquals;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import com.gistlabs.mechanize.document.json.hypermedia.JsonLink;
import com.gistlabs.mechanize.document.json.node.JsonNode;
import com.gistlabs.mechanize.document.json.node.JsonNodeTestCase;
import com.gistlabs.mechanize.document.node.Node;
import com.gistlabs.mechanize.util.Util;

@RunWith(value = Parameterized.class)
public class BulkJsonLinksTest extends JsonNodeTestCase {
  JsonNode node;
  String name;
 
  public static JsonNode parseJson() {
    String jsonString = Util.getStringFromInputStream(BulkJsonLinksTest.class.getResourceAsStream("links.json"));
    return from(jsonString);
  }

  @Parameters(name="{index} {1}")
  public static Collection<Object[]> data() {
    List<Object[]> results = new ArrayList<Object[]>();
   
    List<? extends JsonNode> children = parseJson().getChildren();
    for (JsonNode jsonNode : children) {
      results.add(new Object[] {jsonNode, jsonNode.getName()});
    }
   
    return results;
  }
 
  public BulkJsonLinksTest(JsonNode node, String name) {
    this.node = node;
  }
   
  @Test
  public void testLinkResolution() {
    JsonLink link = link(find(node));
    assertExpectedUri(link);
  }

  static JsonNode find(JsonNode node) {
    Node nested = node.find("nested-query");
    if (nested==null) {
      return node;
    } else {
      return node.find(nested.getValue());
    }
  }
 
  static JsonLink link(JsonNode node) {
    String baseUrl = node.hasAttribute("baseUrl") ? node.getAttribute("baseUrl") : null; // optionally use data supplied for baseUrl
    String attrName = node.hasAttribute("use-attr") ? node.getAttribute("use-attr") : "href"; // optionally use data supplied to find link attribute
    JsonLink link = new JsonLink(baseUrl, node, attrName, null);
    return link;
  }
 
  static void assertExpectedUri(JsonLink link) {
    String name = link.node().getName();
    String expected = link.node().getAttribute("expected");
    String uri = link.uri();
    assertEquals(name, expected, uri);
  }
}
TOP

Related Classes of com.gistlabs.mechanize.document.json.hypermedia.BulkJsonLinksTest

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.