001    package org.apache.tapestry.javascript;
002    
003    import java.util.Locale;
004    
005    import org.apache.tapestry.IAsset;
006    import org.apache.tapestry.TestBase;
007    import org.apache.tapestry.util.DescribedLocation;
008    import org.apache.tapestry.asset.AssetSource;
009    import org.apache.hivemind.Resource;
010    import org.testng.annotations.Test;
011    
012    import static org.easymock.EasyMock.*;
013    
014    @Test
015    public class TestJavascriptManagerImpl extends TestBase
016    {
017        public void test_null_manager()
018        {
019            JavascriptManagerImpl impl = createImpl();
020            replay();
021    
022            assertNullAndEmpty(impl);
023            
024            verify();
025        }
026    
027        public void test_empty_manager()
028        {
029            JavascriptManagerImpl impl = createImpl("", "", "", "", "", "");
030            replay();
031    
032            assertNullAndEmpty(impl);
033    
034            verify();
035        }
036    
037        public void test_several_files()
038        {
039            AssetSource source = newMock(AssetSource.class);
040            expectFile(source, "a.js");
041            expectFile(source, "b.js");
042            expectFile(source, "tap");
043    
044            replay();
045    
046            JavascriptManagerImpl impl = createImpl(source, "a.js, b.js", "", "", "", "tap", "");
047            assertEquals(impl.getAssets().size(), 2);
048            assertNotNull(impl.getFirstAsset());
049            assertNotNull(impl.getTapestryAsset());
050    
051            verify();
052        }
053    
054        private void expectFile(AssetSource source, String file) {
055            expect(source.findAsset((Resource) isNull(), eq(file),
056                    (Locale) isNull(), isA(DescribedLocation.class)))
057                    .andReturn(newMock(IAsset.class));
058        }
059    
060        private void assertNullAndEmpty(JavascriptManagerImpl impl) {
061            assertNull(impl.getPath());
062            assertNull(impl.getTapestryAsset());
063            assertNull(impl.getTapestryPath());
064            assertNull(impl.getFirstAsset());
065            assertNull(impl.getFirstFormAsset());
066            assertNull(impl.getFirstWidgetAsset());
067            assertTrue(impl.getAssets().isEmpty());
068            assertTrue(impl.getFormAssets().isEmpty());
069            assertTrue(impl.getWidgetAssets().isEmpty());
070        }
071    
072        private JavascriptManagerImpl createImpl(String...params) {
073            return createImpl(newMock(AssetSource.class), params);
074        }
075    
076        private JavascriptManagerImpl createImpl(AssetSource source, String... params) {
077            JavascriptManagerImpl impl = new JavascriptManagerImpl();
078            impl.setAssetSource(source);
079    
080            if (params.length>0)
081                impl.setFiles(params[0]);
082            if (params.length>1)
083                impl.setFormFiles(params[1]);
084            if (params.length>2)
085                impl.setWidgetFiles(params[2]);
086            if (params.length>3)
087                impl.setFolder(params[3]);
088            if (params.length>4)
089                impl.setTapestryFile(params[4]);
090            if (params.length>5)
091                impl.setTapestryFolder(params[5]);
092            return impl;
093        }
094    }