| /* |
| * Copyright 2015-present Open Networking Foundation |
| * |
| * 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()); |
| } |
| } |