package com.google.sitebricks.rendering.control;
import com.google.inject.Injector;
import com.google.sitebricks.MvelEvaluator;
import com.google.sitebricks.Renderable;
import com.google.sitebricks.compiler.EvaluatorCompiler;
import com.google.sitebricks.compiler.ExpressionCompileException;
import com.google.sitebricks.routing.PageBook;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createNiceMock;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
* @author Dhanji R. Prasanna (dhanji@gmail.com)
*/
public class WidgetRegistryTest {
private static final String WIDGETS_AND_KEYS = "widgetsAndKeys";
@DataProvider(name = WIDGETS_AND_KEYS)
public Object[][] get() {
return new Object[][] {
{ "twidg", TextFieldWidget.class },
{ "teasdasxt", RepeatWidget.class },
{ "sastext", ShowIfWidget.class },
};
}
@Test(dataProvider = WIDGETS_AND_KEYS)
public final void storeRetrieveWidgets(final String key, final Class<Renderable> expected) throws ExpressionCompileException {
final WidgetRegistry registry = new DefaultWidgetRegistry(new MvelEvaluator(), createNiceMock(PageBook.class), createNiceMock(Injector.class));
registry.add(key, expected);
Renderable widget = registry.newWidget(key, "some=expression", new ProceedingWidgetChain(), createMock(EvaluatorCompiler.class));
assert expected.isInstance(widget) : "Wrong widget returned";
}
}