001    // Copyright 2005 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package org.apache.tapestry.pageload;
016    
017    import org.apache.tapestry.BaseComponentTestCase;
018    import org.apache.tapestry.INamespace;
019    import org.apache.tapestry.services.ClassFinder;
020    import org.apache.tapestry.spec.IComponentSpecification;
021    import static org.easymock.EasyMock.expect;
022    import org.testng.annotations.Test;
023    
024    /**
025     * Tests for {@link org.apache.tapestry.pageload.NamespaceClassSearchComponentClassProvider}.
026     *
027     * @author Howard M. Lewis Ship
028     * @since 4.0
029     */
030    @Test
031    public class TestNamespaceClassSearchComponentClassProvider extends BaseComponentTestCase
032    {
033        private INamespace newNamespace(String key, String prefixes)
034        {
035            INamespace namespace = newMock(INamespace.class);
036    
037            expect(namespace.getPropertyValue(key)).andReturn(prefixes);
038    
039            return namespace;
040        }
041    
042        private ClassFinder newClassFinder(String packageList, String className, Class resultClass)
043        {
044            ClassFinder finder = newMock(ClassFinder.class);
045    
046            expect(finder.findClass(packageList, className)).andReturn(resultClass);
047    
048            return finder;
049        }
050    
051        public void testFound()
052        {
053            INamespace namespace = newNamespace("zip", "org.apache.tapestry.pageload");
054            ClassFinder finder = newClassFinder(
055              "org.apache.tapestry.pageload",
056              "bar.Baz",
057              PageLoaderTest.class);
058    
059            IComponentSpecification spec = newSpec();
060    
061            replay();
062    
063            ComponentClassProviderContext context = new ComponentClassProviderContext("bar/Baz", spec,
064                                                                                      namespace);
065    
066            NamespaceClassSearchComponentClassProvider provider = new NamespaceClassSearchComponentClassProvider();
067            provider.setClassFinder(finder);
068            provider.setPackagesName("zip");
069    
070            assertEquals(PageLoaderTest.class.getName(), provider.provideComponentClassName(context));
071    
072            verify();
073        }
074    
075        public void testNotFound()
076        {
077            INamespace namespace = newNamespace("zap", "org.foo");
078            ClassFinder finder = newClassFinder("org.foo", "bar.Baz", null);
079    
080            IComponentSpecification spec = newSpec();
081    
082            replay();
083    
084            ComponentClassProviderContext context = new ComponentClassProviderContext("bar/Baz", spec,
085                                                                                      namespace);
086    
087            NamespaceClassSearchComponentClassProvider provider = new NamespaceClassSearchComponentClassProvider();
088            provider.setClassFinder(finder);
089            provider.setPackagesName("zap");
090    
091            assertNull(provider.provideComponentClassName(context));
092    
093            verify();
094        }
095    }