package lt.inventi.wicket.component.breadcrumb; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.wicket.Component; import org.apache.wicket.markup.IMarkupFragment; import org.apache.wicket.markup.Markup; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.util.tester.WicketTester; import org.junit.Before; import lt.inventi.wicket.component.breadcrumb.collapse.DisplayedBreadcrumb; import lt.inventi.wicket.test.FuzzyWicketTester; public class BreadcrumbsTests { protected WicketTester tester = new FuzzyWicketTester(); @Before public void setUp() { createSettings().install(tester.getApplication()); } protected BreadcrumbsSettings createSettings() { return new BreadcrumbsSettings() .withStatefulBreadcrumbLinks() .withDecoratedBookmarkableLinks(); } @SuppressWarnings("unchecked") protected Iterable<? extends String> breadcrumbTitles() { Component c = tester.getComponentFromLastRenderedPage("crumbs:crumbs"); ListView<DisplayedBreadcrumb> view = ((ListView<DisplayedBreadcrumb>) c); List<String> titles = new ArrayList<String>(); Iterator<Component> items = view.iterator(); while (items.hasNext()) { titles.add(((Label) items.next().get("crumb:link:title")).getDefaultModelObjectAsString()); } return titles; } protected abstract static class AbstractBreadcrumbTestsPage extends WebPage implements IBreadcrumbTitleModelProvider { protected AbstractBreadcrumbTestsPage() { super(); } protected AbstractBreadcrumbTestsPage(PageParameters parameters) { super(parameters); } @Override protected void onInitialize() { super.onInitialize(); add(new BreadcrumbsPanel("crumbs")); } @Override public IMarkupFragment getMarkup() { return Markup.of("<div wicket:id=\"crumbs\"></div>"); } @Override public IModel<String> getBreadcrumbTitleModel() { return Model.of(getClass().getSimpleName()); } } }