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.EvaluatorCompiler; import com.google.sitebricks.compiler.ExpressionCompileException; import com.google.sitebricks.compiler.MvelEvaluatorCompiler; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * @author Dhanji R. Prasanna (dhanji@gmail.com) */ public class HeaderWidgetTest { private static final String EXPRESSIONS_AND_EVALS = "expressionsAndEvals"; @DataProvider(name = EXPRESSIONS_AND_EVALS) public Object[][] getExprs() { return new Object[][]{ {"visible", true}, {"!visible", false}, {"true", true}, {"false", false}, }; } @Test public final void renderHeader() throws ExpressionCompileException { Respond respond = RespondersForTesting.newRespond(); MvelEvaluatorCompiler compiler = new MvelEvaluatorCompiler(Object.class); new HeaderWidget(new ProceedingWidgetChain(), Maps.<String, String>newHashMap(), compiler) .render(new Object(), respond); respond.writeToHead("<title>bs</title>"); final String response = respond.toString(); assert "<head><title>bs</title></head>".equals(response) : "instead printed: " + response; } @Test public final void renderHeaderWithContent() throws ExpressionCompileException { Respond respond = RespondersForTesting.newRespond(); final WidgetChain widgetChain = new ProceedingWidgetChain(); final EvaluatorCompiler mock = new MvelEvaluatorCompiler(Object.class); widgetChain.addWidget(new TextWidget("<meta name=\"thing\"/>", mock)); MvelEvaluatorCompiler compiler = new MvelEvaluatorCompiler(Object.class); new HeaderWidget(widgetChain, Maps.<String, String>newHashMap(), compiler) .render(new Object(), respond); respond.writeToHead("<title>bs</title>"); final String response = respond.toString(); assert "<head><meta name=\"thing\"/><title>bs</title></head>".equals(response) : "instead printed: " + response; } }