package lt.inventi.wicket.js;
import static org.apache.wicket.markup.head.JavaScriptHeaderItem.forReference;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.util.Arrays;
import org.apache.wicket.markup.head.HeaderItem;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.junit.Test;
import lt.inventi.wicket.js.JavaScriptSettingsBuilder.BootstrapJsVersions;
import lt.inventi.wicket.js.JavaScriptSettingsBuilder.JQueryUiVersions;
public class JavaScriptSettingsTest {
@Test
public void shouldSetResourcesForSeparateJQueryUiCoreFiles() {
JavaScriptResourceReference core = new JavaScriptResourceReference(getClass(), "core");
JavaScriptResourceReference mouse = new JavaScriptResourceReference(getClass(), "mouse");
JavaScriptResourceReference position = new JavaScriptResourceReference(getClass(), "position");
JavaScriptSettings settings = JavaScriptSettings.newBuilder().withJqueryUi(JQueryUiVersions.v1_9_2)
.withUiCore(core)
.withUiCoreMouse(mouse)
.withUiCorePosition(position)
.endUiCore().endJqueryUi().build();
assertThat(settings.jqueryUi.uiCoreCore, is(core));
assertThat(settings.jqueryUi.uiCorePosition, is(position));
assertThat(settings.jqueryUi.uiCoreMouse, is(mouse));
}
@Test
public void shouldCheckAutocompleteWidgetDependencies() {
final JavaScriptResourceReference core = new JavaScriptResourceReference(getClass(), "core");
final JavaScriptResourceReference widget = new JavaScriptResourceReference(getClass(), "widget") {
@Override
public Iterable<? extends HeaderItem> getDependencies() {
return Arrays.asList(forReference(core));
}
};
final JavaScriptResourceReference position = new JavaScriptResourceReference(getClass(), "position");
final JavaScriptResourceReference menu = new JavaScriptResourceReference(getClass(), "menu") {
@Override
public Iterable<? extends HeaderItem> getDependencies() {
return Arrays.asList(forReference(core), forReference(widget), forReference(position));
}
};
JavaScriptResourceReference autocomplete = new JavaScriptResourceReference(getClass(), "autocomplete") {
@Override
public Iterable<? extends HeaderItem> getDependencies() {
return Arrays.asList(forReference(core), forReference(widget), forReference(position), forReference(menu));
}
};
JavaScriptSettings settings = JavaScriptSettings.newBuilder().withJqueryUi(JQueryUiVersions.v1_9_2)
.withUiCore(core)
.withUiCoreWidget(widget)
.withUiCorePosition(position)
.endUiCore()
.withUiWidgets()
.withUiWidgetsMenu(menu)
.withUiWidgetsAutocomplete(autocomplete)
.endUiWidgets()
.endJqueryUi().build();
assertThat(settings.jqueryUi.uiWidgetMenu, is(menu));
assertThat(settings.jqueryUi.uiWidgetAutocomplete, is(autocomplete));
}
@Test
public void usesPackagedJQueryUiCoreInsteadOfSeparateComponents() {
JavaScriptResourceReference fullCore = new JavaScriptResourceReference(getClass(), "full-core");
JavaScriptSettings settings = JavaScriptSettings.newBuilder().withJqueryUi(JQueryUiVersions.v1_9_2)
.withAllUiCore(fullCore).endJqueryUi().build();
assertThat(settings.jqueryUi.uiCoreCore, is(fullCore));
assertThat(settings.jqueryUi.uiCorePosition, is(fullCore));
assertThat(settings.jqueryUi.uiCoreMouse, is(fullCore));
assertThat(settings.jqueryUi.uiCoreWidget, is(fullCore));
}
@Test
public void usesPackagedBootstrapJsInsteadOfSeparateComponents() {
JavaScriptResourceReference fullBootstrapJs = new JavaScriptResourceReference(getClass(), "full-bootstrap");
JavaScriptSettings settings = JavaScriptSettings.newBuilder()
.withBootstrapJs(BootstrapJsVersions.v2_x)
.withAllBootstrapJs(fullBootstrapJs)
.endBootstrapJs().build();
assertThat(settings.bootstrapJs.bsTransitions, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsModal, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsDropdown, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsScrollspy, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsTab, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsTooltip, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsPopover, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsAlert, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsButton, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsCollapse, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsCarousel, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsTypeahead, is(fullBootstrapJs));
assertThat(settings.bootstrapJs.bsAffix, is(fullBootstrapJs));
}
}