1 package searls.jasmine.runner;
2
3 import java.io.File;
4 import java.util.ArrayList;
5 import java.util.List;
6
7 import org.apache.maven.artifact.Artifact;
8 import org.junit.Test;
9 import org.junit.runner.RunWith;
10 import org.mockito.InjectMocks;
11 import org.mockito.Mock;
12 import org.mockito.runners.MockitoJUnitRunner;
13
14 import searls.jasmine.io.FileUtilsWrapper;
15 import searls.jasmine.runner.SpecRunnerHtmlGenerator.ReporterType;
16
17 import static org.hamcrest.Matchers.containsString;
18 import static org.junit.Assert.assertThat;
19 import static org.mockito.Mockito.mock;
20 import static org.mockito.Mockito.when;
21
22 @RunWith(MockitoJUnitRunner.class)
23 public class SpecRunnerHtmlGeneratorTest {
24
25 @InjectMocks private SpecRunnerHtmlGenerator specRunnerHtmlGenerator = new SpecRunnerHtmlGenerator(null,null,null,null,null);
26 @Mock private FileUtilsWrapper fileUtilsWrapper;
27
28 @Test
29 public void shouldBuildBasicHtmlWhenNoDependenciesAreProvided() {
30 List<Artifact> deps = new ArrayList<Artifact>();
31 String html = specRunnerHtmlGenerator.generate(deps, ReporterType.TrivialReporter);
32 assertThat(html,containsString("<html>"));
33 assertThat(html,containsString("</html>"));
34 }
35
36 @Test
37 public void shouldPopulateJasmineSourceIntoHtmlWhenProvided() throws Exception {
38 String expectedContents = "javascript()";
39 List<Artifact> deps = new ArrayList<Artifact>();
40 deps.add(mockDependency("com.pivotallabs", "jasmine", "1.0.1", "js", expectedContents));
41
42 String html = specRunnerHtmlGenerator.generate(deps, ReporterType.TrivialReporter);
43
44 assertThat(html,containsString("<script type=\"text/javascript\">"+expectedContents+"</script>"));
45 }
46
47 @Test
48 public void shouldPopulateMultipleJavascriptSourcesIntoHtmlWhenProvided() throws Exception {
49 String jasmineString = "javascript_jasmine()";
50 String jasmineHtmlString = "javascript_jasmine_html()";
51 List<Artifact> deps = new ArrayList<Artifact>();
52 deps.add(mockDependency("com.pivotallabs", "jasmine", "1.0.1", "js", jasmineString));
53 deps.add(mockDependency("com.pivotallabs", "jasmine-html", "1.0.1", "js", jasmineHtmlString));
54
55 String html = specRunnerHtmlGenerator.generate(deps, ReporterType.TrivialReporter);
56
57 assertThat(html,containsString("<script type=\"text/javascript\">"+jasmineString+"</script>"));
58 assertThat(html,containsString("<script type=\"text/javascript\">"+jasmineHtmlString+"</script>"));
59 }
60
61 @Test
62 public void shouldPopulateCSSIntoHtmlWhenProvided() throws Exception {
63 String css = "h1 { background-color: awesome}";
64
65 List<Artifact> deps = new ArrayList<Artifact>();
66 deps.add(mockDependency("com.pivotallabs", "jasmine-css", "1.0.1", "css", css));
67
68 String html = specRunnerHtmlGenerator.generate(deps, ReporterType.TrivialReporter);
69
70 assertThat(html,containsString("<style type=\"text/css\">\n"+css+"\n</style>"));
71 }
72
73 private Artifact mockDependency(String groupId, String artifactId, String version, String type,String fileContents) throws Exception {
74 Artifact dep = mock(Artifact.class);
75 when(dep.getGroupId()).thenReturn(groupId);
76 when(dep.getArtifactId()).thenReturn(artifactId);
77 when(dep.getVersion()).thenReturn(version);
78 when(dep.getType()).thenReturn(type);
79
80 File f = mock(File.class);
81 when(fileUtilsWrapper.readFileToString(f)).thenReturn(fileContents);
82 when(dep.getFile()).thenReturn(f);
83
84 return dep;
85 }
86
87 }