Package com.google.sitebricks.rendering.control

Source Code of com.google.sitebricks.rendering.control.RequireWidgetTest

package com.google.sitebricks.rendering.control;

import com.google.common.collect.Maps;
import com.google.sitebricks.Respond;
import com.google.sitebricks.RespondersForTesting;
import com.google.sitebricks.compiler.ExpressionCompileException;
import com.google.sitebricks.compiler.HtmlParser;
import com.google.sitebricks.compiler.HtmlTemplateCompiler;
import com.google.sitebricks.compiler.MvelEvaluatorCompiler;

import org.jsoup.nodes.Node;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.util.List;

/**
* @author Dhanji R. Prasanna (dhanji@gmail.com)
*/
public class RequireWidgetTest {
  private static final String REQUIRE_TAGS = "requireTags";

  @DataProvider(name = REQUIRE_TAGS)
  public Object[][] getRequires() {
    return new Object[][]{
        {"<link rel=\"thing.css\"/>"},
        {"<script type=\"text/javascript\"> @import 'thing.css' javascript dude bleod </script>"},
    };
  }

  @Test(dataProvider = REQUIRE_TAGS)
  public final void requireWidgetsRenderToHeadTag(final String requireString)
      throws ExpressionCompileException {
    final Respond respond = RespondersForTesting.newRespond();

    respond.require(requireString);
    respond.require(requireString);

    WidgetChain chain = new ProceedingWidgetChain();
    final MvelEvaluatorCompiler compiler = new MvelEvaluatorCompiler(Object.class);

    chain.addWidget(new HeaderWidget(new TerminalWidgetChain(),
        Maps.<String, String>newHashMap(), compiler));

    List<Node> nodes = HtmlParser.parse("<html>" + requireString + "</html>");
    Node node = nodes.get(0).childNode(0);

    WidgetChain inner = Chains.terminal();
    if (!node.childNodes().isEmpty())
      inner = Chains.singleton(new TextWidget(node.childNode(0).toString(), compiler));

    chain.addWidget(new RequireWidget(new XmlWidget(inner, node.nodeName(), compiler,
        HtmlTemplateCompiler.parseAttribs(node.attributes()))));
    chain.addWidget(new RequireWidget(new XmlWidget(inner, node.nodeName(), compiler,
        HtmlTemplateCompiler.parseAttribs(node.attributes()))));
    chain.addWidget(new RequireWidget(new XmlWidget(inner, node.nodeName(), compiler,
        HtmlTemplateCompiler.parseAttribs(node.attributes()))));

    //render
    chain.render(new Object(), respond);

    final String expected = "<head>" + requireString + "</head>";
    final String output = respond.toString();
    assert expected.equals(output) : "Header not correctly rendered. Was: \n" + output
        + "\n-- but expected: --\n" + expected;
  }
}
TOP

Related Classes of com.google.sitebricks.rendering.control.RequireWidgetTest

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.