View Javadoc

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  }