blob: 6b6bee7d597394c710b99be0d2ea7d44edeb38e1 [file] [log] [blame]
/*
* Copyright 2015-present Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.ui;
import com.google.common.collect.ImmutableList;
import org.junit.Test;
import java.io.IOException;
import java.util.List;
import static com.google.common.io.ByteStreams.toByteArray;
import static org.junit.Assert.*;
import static org.onosproject.ui.UiView.Category.OTHER;
/**
* Tests the default user interface extension descriptor.
*/
public class UiExtensionTest {
private static final String FOO_ID = "foo";
private static final String FOO_LABEL = "Foo View";
private static final String BAR_ID = "bar";
private static final String BAR_LABEL = "Bar View";
private static final String CUSTOM = "custom";
private static final UiView FOO_VIEW = new UiView(OTHER, FOO_ID, FOO_LABEL);
private static final UiView BAR_VIEW = new UiView(OTHER, BAR_ID, BAR_LABEL);
private static final UiView HIDDEN_VIEW = new UiViewHidden(FOO_ID);
private static final UiMessageHandlerFactory MH_FACTORY = () -> null;
private static final UiTopoOverlayFactory TO_FACTORY = () -> null;
private final ClassLoader cl = getClass().getClassLoader();
private List<UiView> viewList;
private UiExtension ext;
private String css;
private String js;
private UiView view;
@Test
public void basics() throws IOException {
viewList = ImmutableList.of(FOO_VIEW);
ext = new UiExtension.Builder(cl, viewList).build();
css = new String(toByteArray(ext.css()));
assertTrue("incorrect css stream", css.contains("foo-css"));
js = new String(toByteArray(ext.js()));
assertTrue("incorrect js stream", js.contains("foo-js"));
assertEquals("expected 1 view", 1, ext.views().size());
view = ext.views().get(0);
assertEquals("wrong view category", OTHER, view.category());
assertEquals("wrong view id", FOO_ID, view.id());
assertEquals("wrong view label", FOO_LABEL, view.label());
assertNull("unexpected message handler factory", ext.messageHandlerFactory());
assertNull("unexpected topo overlay factory", ext.topoOverlayFactory());
}
@Test
public void withPath() throws IOException {
viewList = ImmutableList.of(FOO_VIEW);
ext = new UiExtension.Builder(cl, viewList)
.resourcePath(CUSTOM)
.build();
css = new String(toByteArray(ext.css()));
assertTrue("incorrect css stream", css.contains("custom-css"));
js = new String(toByteArray(ext.js()));
assertTrue("incorrect js stream", js.contains("custom-js"));
assertEquals("expected 1 view", 1, ext.views().size());
view = ext.views().get(0);
assertEquals("wrong view category", OTHER, view.category());
assertEquals("wrong view id", FOO_ID, view.id());
assertEquals("wrong view label", FOO_LABEL, view.label());
assertNull("unexpected message handler factory", ext.messageHandlerFactory());
assertNull("unexpected topo overlay factory", ext.topoOverlayFactory());
}
@Test
public void messageHandlerFactory() {
viewList = ImmutableList.of(FOO_VIEW);
ext = new UiExtension.Builder(cl, viewList)
.messageHandlerFactory(MH_FACTORY)
.build();
assertEquals("wrong message handler factory", MH_FACTORY,
ext.messageHandlerFactory());
assertNull("unexpected topo overlay factory", ext.topoOverlayFactory());
}
@Test
public void topoOverlayFactory() {
viewList = ImmutableList.of(HIDDEN_VIEW);
ext = new UiExtension.Builder(cl, viewList)
.topoOverlayFactory(TO_FACTORY)
.build();
assertNull("unexpected message handler factory", ext.messageHandlerFactory());
assertEquals("wrong topo overlay factory", TO_FACTORY,
ext.topoOverlayFactory());
}
@Test
public void twoViews() {
viewList = ImmutableList.of(FOO_VIEW, BAR_VIEW);
ext = new UiExtension.Builder(cl, viewList).build();
assertEquals("expected 2 views", 2, ext.views().size());
view = ext.views().get(0);
assertEquals("wrong view category", OTHER, view.category());
assertEquals("wrong view id", FOO_ID, view.id());
assertEquals("wrong view label", FOO_LABEL, view.label());
view = ext.views().get(1);
assertEquals("wrong view category", OTHER, view.category());
assertEquals("wrong view id", BAR_ID, view.id());
assertEquals("wrong view label", BAR_LABEL, view.label());
}
}