Author: mthl
Date: Tue Feb 26 23:09:10 2019 New Revision: 1854434 URL: http://svn.apache.org/viewvc?rev=1854434&view=rev Log: Fixed: Add missing tests for ‘WebAppCache’ (OFBIZ-10606) This adds a test file which should have been added in revision 1854430 but was forgotten by accident. Added: ofbiz/ofbiz-framework/trunk/framework/webapp/src/test/java/org/apache/ofbiz/webapp/WebAppCacheTest.java (with props) Added: ofbiz/ofbiz-framework/trunk/framework/webapp/src/test/java/org/apache/ofbiz/webapp/WebAppCacheTest.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/webapp/src/test/java/org/apache/ofbiz/webapp/WebAppCacheTest.java?rev=1854434&view=auto ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/webapp/src/test/java/org/apache/ofbiz/webapp/WebAppCacheTest.java (added) +++ ofbiz/ofbiz-framework/trunk/framework/webapp/src/test/java/org/apache/ofbiz/webapp/WebAppCacheTest.java Tue Feb 26 23:09:10 2019 @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.ofbiz.webapp; + +import static org.junit.Assert.*; +import static org.hamcrest.Matchers.*; + +import java.util.ArrayList; + +import org.apache.ofbiz.base.component.ComponentConfig; +import org.apache.ofbiz.base.component.ComponentConfig.WebappInfo; +import org.junit.Before; +import org.junit.Test; + +public class WebAppCacheTest { + private ArrayList<ComponentConfig> ccSource; + private WebAppCache wac; + private ArrayList<WebappInfo> wInfos; + + @Before + public void setUp() { + ccSource = new ArrayList<>(); + wac = new WebAppCache(() -> ccSource); + wInfos = new ArrayList<>(); + ccSource.add(new ComponentConfig.Builder().webappInfos(wInfos).create()); + } + + // Checks that `getAppBarWebInfos` call retrieves the expected `WebappInfo` + // from the `ComponentConfig` source. + @Test + public void getAppBarWebInfosBasic() { + WebappInfo wInfo0 = new WebappInfo.Builder().server("foo").title("foo").create(); + wInfos.add(wInfo0); + WebappInfo wInfo1 = new WebappInfo.Builder().server("bar").title("bar").create(); + wInfos.add(wInfo1); + WebappInfo wInfo2 = new WebappInfo.Builder().server("baz").title("baz").create(); + wInfos.add(wInfo2); + + assertThat(wac.getAppBarWebInfos("foo"), contains(wInfo0)); + assertThat(wac.getAppBarWebInfos("bar"), contains(wInfo1)); + assertThat(wac.getAppBarWebInfos("baz"), contains(wInfo2)); + } + + // Checks that `getAppBarWebInfos` call retrieves the expected `WebappInfo` + // from the `ComponentConfig` source when `menuName` is specified. + @Test + public void getAppBarWebInfosBasicWithMenu() { + WebappInfo wInfo0 = new WebappInfo.Builder().server("foo").title("foo").menuName("a").create(); + wInfos.add(wInfo0); + WebappInfo wInfo1 = new WebappInfo.Builder().server("bar").title("bar").menuName("b").create(); + wInfos.add(wInfo1); + WebappInfo wInfo2 = new WebappInfo.Builder().server("baz").title("baz").menuName("c").create(); + wInfos.add(wInfo2); + + assertThat(wac.getAppBarWebInfos("foo", "a"), contains(wInfo0)); + assertThat(wac.getAppBarWebInfos("foo", "none"), is(empty())); + assertThat(wac.getAppBarWebInfos("bar", "b"), contains(wInfo1)); + assertThat(wac.getAppBarWebInfos("bar", "none"), is(empty())); + assertThat(wac.getAppBarWebInfos("baz", "c"), contains(wInfo2)); + assertThat(wac.getAppBarWebInfos("baz", "none"), is(empty())); + } + + // Checks that once a `getAppBarWebInfos` is called on a server name, + // modifying the `ComponentConfig` source doesn't impact further calls. + @Test + public void getAppBarWebInfosMemoization() { + assertThat(wac.getAppBarWebInfos("foo"), is(empty())); + + WebappInfo wInfo0 = new WebappInfo.Builder().server("foo").title("foo").create(); + wInfos.add(wInfo0); + + assertThat(wac.getAppBarWebInfos("foo"), is(empty())); + } + + // Checks that when a position is provided by the `WebappInfo` instance + // it is used instead of its title. + @Test + public void getAppBarWebInfosSameTitle() { + WebappInfo wInfo0 = new WebappInfo.Builder().server("foo").title("foo").create(); + wInfos.add(wInfo0); + WebappInfo wInfo1 = new WebappInfo.Builder().server("foo").title("foo").create(); + wInfos.add(wInfo1); + + // Ensure that there is a collision between `wInfo0` and `wInfo1` + // and only one of them are retrieved. + assertThat(wac.getAppBarWebInfos("foo").size(), is(1)); + } + + // Checks that when a position is provided by the `WebappInfo` instance + // it is used instead of its title. + @Test + public void getAppBarWebInfosPositionTitle() { + WebappInfo wInfo0 = new WebappInfo.Builder().server("foo").title("foo").create(); + wInfos.add(wInfo0); + WebappInfo wInfo1 = new WebappInfo.Builder().server("foo").title("foo").position("14").create(); + wInfos.add(wInfo1); + + // Ensure that there is no collision. + assertThat(wac.getAppBarWebInfos("foo"), containsInAnyOrder(wInfo0, wInfo1)); + } + + // Checks that when a `appBarDisplay` is false the corresponding `WebappInfo` instance is ignored + // only when the menu name argument is empty. + @Test + public void getAppBarWebInfosDisplayFalse() { + WebappInfo wInfo0 = + new WebappInfo.Builder().server("foo").title("bar").appBarDisplay(false).menuName("m").create(); + wInfos.add(wInfo0); + WebappInfo wInfo1 = new WebappInfo.Builder().server("foo").title("baz").menuName("m").create(); + wInfos.add(wInfo1); + + assertThat(wac.getAppBarWebInfos("foo", "m"), containsInAnyOrder(wInfo1)); + assertThat(wac.getAppBarWebInfos("foo"), containsInAnyOrder(wInfo0, wInfo1)); + } + + // Checks that `mountPoint` are properly handled. + @Test + public void getWebappInfoBasic() { + WebappInfo wInfo0 = new WebappInfo.Builder() + .server("foo").position("7").mountPoint("/bar/*").create(); + wInfos.add(wInfo0); + WebappInfo wInfo1 = new WebappInfo.Builder() + .server("foo").position("14").mountPoint("/bar/baz/*").create(); + wInfos.add(wInfo1); + + assertThat(wac.getWebappInfo("foo", "bar").get(), is(wInfo0)); + assertThat(wac.getWebappInfo("foo", "barbaz").get(), is(wInfo1)); + assertFalse(wac.getWebappInfo("foo", "bazbaz").isPresent()); + } +} Propchange: ofbiz/ofbiz-framework/trunk/framework/webapp/src/test/java/org/apache/ofbiz/webapp/WebAppCacheTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/ofbiz-framework/trunk/framework/webapp/src/test/java/org/apache/ofbiz/webapp/WebAppCacheTest.java ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/ofbiz-framework/trunk/framework/webapp/src/test/java/org/apache/ofbiz/webapp/WebAppCacheTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain |
Free forum by Nabble | Edit this page |