    001    package org.apache.turbine.services.pull.tools;
    002
    003    /*
    004     * Licensed to the Apache Software Foundation (ASF) under one
    005     * or more contributor license agreements.  See the NOTICE file
    006     * distributed with this work for additional information
    007     * regarding copyright ownership.  The ASF licenses this file
    008     * to you under the Apache License, Version 2.0 (the
    009     * "License"); you may not use this file except in compliance
    010     * with the License.  You may obtain a copy of the License at
    011     *
    012     *   http://www.apache.org/licenses/LICENSE-2.0
    013     *
    014     * Unless required by applicable law or agreed to in writing,
    015     * software distributed under the License is distributed on an
    016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    017     * KIND, either express or implied.  See the License for the
    018     * specific language governing permissions and limitations
    019     * under the License.
    020     */
    021
    022    import junit.framework.Test;
    023    import junit.framework.TestSuite;
    024
    025    import org.apache.commons.lang.ArrayUtils;
    026    import org.apache.turbine.services.pull.PullService;
    027    import org.apache.turbine.services.pull.TurbinePull;
    028    import org.apache.turbine.test.BaseTurbineTest;
    029    import org.apache.velocity.context.Context;
    030
    031
    032    public class UIToolTest
    033            extends BaseTurbineTest
    034    {
    035        public UIToolTest(String name)
    036                throws Exception
    037        {
    038            super(name, "conf/test/CompleteTurbineResources.properties");
    039        }
    040
    041        public static Test suite()
    042        {
    043            return new TestSuite(UIToolTest.class);
    044        }
    045
    046        private UITool getTool()
    047        {
    048            PullService pullService = TurbinePull.getService();
    049            assertNotNull(pullService);
    050
    051            Context globalContext = pullService.getGlobalContext();
    052            assertNotNull(globalContext);
    053
    054            return (UITool) globalContext.get("ui");
    055        }
    056
    057        public void testTool()
    058        {
    059            UITool ui = getTool();
    060            assertNotNull(ui);
    061        }
    062
    063        public void testCssSlashes()
    064        {
    065            UITool ui = getTool();
    066
    067            String cssUrl = ui.getStylecss();
    068            assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/skins.css", cssUrl);
    069        }
    070
    071        public void testImageSlashes()
    072        {
    073            UITool ui = getTool();
    074
    075            String img = "myimage.gif";
    076
    077            String imgUrl = ui.image(img);
    078            assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/" + img, imgUrl);
    079
    080            String img2 = "foo/myimage.gif";
    081
    082            String imgUrl2 = ui.image(img2);
    083            assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/" + img2, imgUrl2);
    084
    085            String img3 = "/foo/myimage.gif";
    086
    087            String imgUrl3 = ui.image(img3);
    088            assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images" + img3, imgUrl3);
    089        }
    090
    091        public void testPathologicalCases()
    092        {
    093            UITool ui = getTool();
    094
    095            String img = "";
    096            String imgUrl = ui.image(img);
    097            assertEquals("Could not strip empty String", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/", imgUrl);
    098
    099            img = "/";
    100            imgUrl = ui.image(img);
    101            assertEquals("Could not strip single Slash", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/", imgUrl);
    102
    103            img = "//";
    104            imgUrl = ui.image(img);
    105            assertEquals("Could not strip double Slash", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/", imgUrl);
    106        }
    107
    108        public void testGetSkinNames()
    109        {
    110            UITool ui = getTool();
    111
    112            String[] skinNames = ui.getSkinNames();
    113            // Remove the ".svn" dir that may be present.
    114            skinNames = (String[]) ArrayUtils.removeElement(skinNames, ".svn");
    115            assertEquals(2, skinNames.length);
    116
    117            assertTrue(ArrayUtils.contains(skinNames, "myotherskin"));
    118            assertTrue(ArrayUtils.contains(skinNames, "myskin"));
    119        }
    120
    121        public void testSkinValues()
    122        {
    123            UITool ui = getTool();
    124
    125            // Default skin
    126            //skin_property_1 = skin_property_1_my_skin
    127            assertEquals("skin_property_1_my_skin", ui.get("skin_property_1"));
    128
    129            ui.setSkin("myotherskin");
    130            //skin_property_1 = skin_property_1_my_other_skin
    131            assertEquals("skin_property_1_my_other_skin", ui.get("skin_property_1"));
    132        }
    133    }