/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* See LICENSE.txt included in this distribution for the specific
* language governing permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at LICENSE.txt.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
*/
package org.opensolaris.opengrok.web;
import java.util.Map.Entry;
import org.junit.Before;
import org.junit.Test;
import org.opensolaris.opengrok.web.Scripts.Script;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
*
* @author Krystof Tulinger
*/
public class ScriptsTest {
private Scripts scripts;
@Before
public void setUp() {
scripts = new Scripts();
}
@Test
public void testInstance() {
scripts.addScript(new Scripts.FileScript("http://example.com/main1.js", 0));
scripts.addScript(new Scripts.FileScript("http://example.com/main2.js", 0));
scripts.addScript(new Scripts.FileScript("http://example.com/main3.js", 0));
assertEquals(3, scripts.size());
assertEquals(scripts.get(0).getScriptData(), "http://example.com/main1.js");
assertEquals(scripts.get(0).getPriority(), 0);
assertEquals(scripts.get(1).getScriptData(), "http://example.com/main2.js");
assertEquals(scripts.get(1).getPriority(), 0);
assertEquals(scripts.get(2).getScriptData(), "http://example.com/main3.js");
assertEquals(scripts.get(2).getPriority(), 0);
}
@Test
public void testSorted() {
scripts.addScript(new Scripts.FileScript("http://example.com/main1.js", 3));
scripts.addScript(new Scripts.FileScript("http://example.com/main2.js", 1));
scripts.addScript(new Scripts.FileScript("http://example.com/main3.js", 2));
assertEquals(3, scripts.size());
assertEquals(scripts.get(0).getScriptData(), "http://example.com/main2.js");
assertEquals(scripts.get(0).getPriority(), 1);
assertEquals(scripts.get(1).getScriptData(), "http://example.com/main3.js");
assertEquals(scripts.get(1).getPriority(), 2);
assertEquals(scripts.get(2).getScriptData(), "http://example.com/main1.js");
assertEquals(scripts.get(2).getPriority(), 3);
}
@Test
public void testContent() {
scripts.addScript(new Scripts.FileScript("http://example.com/main1.js", 0));
scripts.addScript(new Scripts.FileScript("http://example.com/main2.js", 0));
scripts.addScript(new Scripts.FileScript("http://example.com/main3.js", 0));
assertEquals(3, scripts.size());
assertTrue(scripts.toHtml()
.contains("<script type=\"text/javascript\""
+ " src=\"http://example.com/main1.js\""
+ " data-priority=\"0\"></script>"));
assertTrue(scripts.toHtml()
.contains("<script type=\"text/javascript\""
+ " src=\"http://example.com/main2.js\""
+ " data-priority=\"0\"></script>"));
assertTrue(scripts.toHtml()
.contains("<script type=\"text/javascript\""
+ " src=\"http://example.com/main3.js\""
+ " data-priority=\"0\"></script>"));
}
@Test
public void testLookup() {
scripts.addScript("", "utils");
scripts.addScript("", "jquery");
scripts.addScript("", "diff");
scripts.addScript("", "jquery-tablesorter");
assertEquals(4, scripts.size());
int prev = -1;
for (Script s : scripts) {
if (prev > s.getPriority()) {
fail("The scripts must be sorted in ascending order by the priority, " + prev + " > " + s.getPriority());
}
prev = s.getPriority();
}
for (Entry<String, Script> s : Scripts.SCRIPTS.entrySet()) {
if (!s.getKey().equals("utils")
&& !s.getKey().equals("jquery")
&& !s.getKey().equals("jquery-tablesorter")
&& !s.getKey().equals("diff")) {
continue;
}
assertTrue(scripts.toHtml() + " must contain <script type=\"text/javascript\""
+ " src=\"" + s.getValue().getScriptData() + "\""
+ " data-priority=\"" + s.getValue().getPriority() + "\"></script>",
scripts.toHtml()
.contains("<script type=\"text/javascript\""
+ " src=\"" + s.getValue().getScriptData() + "\""
+ " data-priority=\"" + s.getValue().getPriority() + "\"></script>"));
}
}
@Test
public void testLookupWithContextPath() {
String contextPath = "/source";
scripts.addScript(contextPath, "utils");
scripts.addScript(contextPath, "jquery");
scripts.addScript(contextPath, "diff");
scripts.addScript(contextPath, "jquery-tablesorter");
assertEquals(4, scripts.size());
int prev = -1;
for (Script s : scripts) {
if (prev > s.getPriority()) {
fail("The scripts must be sorted in ascending order by the priority, " + prev + " > " + s.getPriority());
}
prev = s.getPriority();
}
for (Entry<String, Script> s : Scripts.SCRIPTS.entrySet()) {
if (!s.getKey().equals("utils")
&& !s.getKey().equals("jquery")
&& !s.getKey().equals("jquery-tablesorter")
&& !s.getKey().equals("diff")) {
continue;
}
assertTrue(scripts.toHtml() + " must contain <script type=\"text/javascript\""
+ " src=\"" + contextPath + '/' + s.getValue().getScriptData() + "\""
+ " data-priority=\"" + s.getValue().getPriority() + "\"></script>",
scripts.toHtml()
.contains("<script type=\"text/javascript\""
+ " src=\"" + contextPath + '/' + s.getValue().getScriptData() + "\""
+ " data-priority=\"" + s.getValue().getPriority() + "\"></script>"));
}
}
}