package org.appfuse.webapp.pages;
import org.apache.wicket.Page;
import org.apache.wicket.util.tester.WicketTester;
import org.appfuse.webapp.TestApplication;
import org.junit.Before;
import org.mockito.MockitoAnnotations;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.support.StaticWebApplicationContext;
import java.util.Locale;
/**
* Base class for Wicket integration tests with WicketTester..
*
* @author Marcin ZajÄ…czkowski, 2011-06-19
*/
public abstract class BasePageTest {
protected final Logger log = LoggerFactory.getLogger(getClass());
protected WicketTester tester;
@Before
public void initTester() {
StaticWebApplicationContext mockedContext = new StaticWebApplicationContext();
tester = new WicketTester(new TestApplication(mockedContext));
//ensure english locale regardless of local system locale
tester.getSession().setLocale(Locale.ENGLISH);
initSpringBeans(mockedContext);
}
protected void initSpringBeans(StaticWebApplicationContext context) {
MockitoAnnotations.initMocks(this);
//Subclasses should register (mocked) beans in context e.g.
// context.getBeanFactory().registerSingleton("myBean", myBean)
}
protected void goToPageAndAssertIfRendered(Class<? extends Page> pageClass) {
tester.startPage(pageClass);
tester.assertRenderedPage(pageClass);
}
protected String getRequiredErrorMessageByField(String field) {
return "'" + field + "' is required.";
}
protected void assertRenderedLoginPageWithErrorMessages(Class<? extends Page> pageClass, String... errorMessage) {
tester.assertRenderedPage(pageClass);
tester.assertErrorMessages(errorMessage);
}
}