KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > uitags > js > JsFilesTest


1 package net.sf.uitags.js;
2
3 import java.io.File JavaDoc;
4 import java.io.IOException JavaDoc;
5 import java.util.Date JavaDoc;
6
7 import junit.framework.TestCase;
8
9 import org.springframework.core.io.ClassPathResource;
10 import org.springframework.core.io.FileSystemResource;
11 import org.springframework.core.io.FileSystemResourceLoader;
12 import org.springframework.core.io.Resource;
13 import org.springframework.core.io.ResourceLoader;
14 import org.springframework.mock.web.MockServletContext;
15
16 public class JsFilesTest extends TestCase {
17   private JsFiles jsFiles;
18
19   protected void tearDown() throws Exception JavaDoc {
20     super.tearDown();
21     this.jsFiles = null;
22   }
23
24   private void setUpJsFilesWithClasspathBasedFileFinder() {
25     Suites suites = Suites.getInstance("core");
26
27     ResourceLoader classpathResourceLoader = new ResourceLoader() {
28       public Resource getResource(String JavaDoc location) {
29         return new ClassPathResource(location);
30       }
31     };
32     FileFinder fileFinder = FileFinder.getInstance(
33         new MockServletContext(classpathResourceLoader), null);
34
35     this.jsFiles = new JsFiles(suites, fileFinder);
36   }
37
38   private void setUpJsFilesWithFileSystemBasedFileFinder() {
39     Suites suites = Suites.getInstance("core");
40
41     ResourceLoader fileSystemResourceLoader = new ResourceLoader() {
42       public Resource getResource(String JavaDoc location) {
43         return new FileSystemResource("." + location);
44       }
45     };
46     FileFinder fileFinder = FileFinder.getInstance(
47         new MockServletContext(fileSystemResourceLoader), "src/main/js");
48
49     this.jsFiles = new JsFiles(suites, fileFinder);
50   }
51
52
53
54   ////////////////////////////////////////////////////////////
55
////////// The following test a JsFiles that uses //////////
56
////////// ClasspathBasedFileFinder //////////
57
////////////////////////////////////////////////////////////
58

59   public void testDebugJsIsNotIncludedInDebugModeIfUsingClasspathBasedFileFinder()
60       throws IOException JavaDoc {
61     setUpJsFilesWithClasspathBasedFileFinder();
62
63     this.jsFiles.setInDebugMode(true);
64     String JavaDoc contents = this.jsFiles.getContents();
65     assertTrue(contents.indexOf("uiGlobal_defaultLevel =") == -1);
66   }
67
68   public void testDebugJsIsNotIncludedInNonDebugModeIfUsingClasspathBasedFileFinder()
69       throws IOException JavaDoc {
70     setUpJsFilesWithClasspathBasedFileFinder();
71
72     String JavaDoc contents = this.jsFiles.getContents();
73     assertTrue(contents.indexOf("uiGlobal_defaultLevel =") == -1);
74   }
75
76
77
78   //////////////////////////////////////////////////////////
79
////////// The following test a JsFiles that uses //////////
80
////////// FileSystemBasedFileFinder //////////
81
////////////////////////////////////////////////////////////
82

83   public void testDebugJsIsIncludedInDebugModeIfUsingFileSystemBasedFileFinder()
84       throws IOException JavaDoc {
85     setUpJsFilesWithFileSystemBasedFileFinder();
86
87     this.jsFiles.setInDebugMode(true);
88     String JavaDoc contents = this.jsFiles.getContents();
89     assertTrue(contents.indexOf("uiGlobal_defaultLevel =") > -1);
90   }
91
92   public void testDebugJsIsNotIncludedInNonDebugModeIfUsingFileSystemBasedFileFinder()
93       throws IOException JavaDoc {
94     setUpJsFilesWithFileSystemBasedFileFinder();
95
96     String JavaDoc contents = this.jsFiles.getContents();
97     assertTrue(contents.indexOf("uiGlobal_defaultLevel =") == -1);
98   }
99
100
101
102   /////////////////////////////////
103
////////// Other tests //////////
104
/////////////////////////////////
105

106   public void testUsesLatestLastModifiedOfAllFiles() throws IOException JavaDoc {
107     Resource resource = new FileSystemResourceLoader().getResource(
108         "./src/main/js/html/Element.js");
109     File JavaDoc fileToTouch = resource.getFile();
110     long latestTimestamp = new Date JavaDoc().getTime();
111     assertTrue(fileToTouch.setLastModified(latestTimestamp));
112
113     // We can only use FileSystemBasedFileFinder for testing the timestamp.
114
setUpJsFilesWithFileSystemBasedFileFinder();
115
116     // The file system may not go as far as the milliseconds so allow for up
117
// to one second difference.
118
long delta = 1000;
119     assertEquals(latestTimestamp, this.jsFiles.getLastModified(), delta);
120   }
121 }
122
Popular Tags