Java tutorial
/** * This file is part of the ChillDev-Web. * * @license http://mit-license.org/ The MIT license * @copyright 2014 by Rafa Wrzeszcz - Wrzasq.pl. */ package test.pl.chilldev.web.core.page; import org.junit.Test; import static org.junit.Assert.*; import java.net.URI; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.commons.lang3.StringEscapeUtils; import pl.chilldev.web.core.markup.Generator; import pl.chilldev.web.core.page.PageMetaModel; import pl.chilldev.web.core.script.Element; public class PageMetaModelTest { @Test public void generateXmlnsAttributes() throws URISyntaxException { URI uri = new URI("http://chilldev.pl/"); PageMetaModel page = new PageMetaModel(); page.setXmlNamespace(uri, ""); assertEquals("PageMetaModel.generateXmlnsAttributes() should dump markup for xmlns=\"\" attributes.", " xmlns=\"http://chilldev.pl/\"", page.generateXmlnsAttributes()); } @Test public void generateTitleContent() { PageMetaModel page = new PageMetaModel(); page.addTitlePart("foo"); page.addTitlePart("&bar"); assertEquals("PageMetaModel.generateTitleContent() should dump page title.", "foo - &bar", page.generateTitleContent()); } @Test public void generateMetaElements() { PageMetaModel page = new PageMetaModel(); page.setHttpEquiv("foo", "bar"); page.setMetaName("baz", "quux"); page.setMetaProperty("qux", "corge"); assertEquals("PageMetaModel.generateMetaElements() should dump markup for all types of <meta> elements.", "<meta content=\"bar\" http-equiv=\"foo\"/><meta content=\"\" name=\"keywords\"/><meta content=\"quux\" name=\"baz\"/><meta content=\"corge\" property=\"qux\"/>", page.generateMetaElements()); } @Test public void generateScriptElements() { PageMetaModel page = new PageMetaModel(); page.addScript("foo"); assertEquals("PageMetaModel.generateScriptElements() should dump markup for <script> elements.", "<script src=\"foo\"/>", page.generateScriptElements()); } @Test public void generateLinkElements() { PageMetaModel page = new PageMetaModel(); page.addStylesheet("foo"); assertEquals("PageMetaModel.generateLinkElements() should dump markup for <link> elements.", "<link href=\"foo\" rel=\"stylesheet\"/>", page.generateLinkElements()); } @Test public void constructor() { Generator generator = new Generator(false); PageMetaModel page = new PageMetaModel(generator); assertEquals("PageMetaModel() constructor should initializa page model with given markup generator.", "<meta content=\"\" name=\"keywords\">", page.generateMetaElements()); } @Test public void constructorWithSeparator() { Generator generator = new Generator(true, StringEscapeUtils.ESCAPE_JSON); PageMetaModel page = new PageMetaModel(generator, " :: "); page.addTitlePart("foo"); page.addTitlePart("\""); assertEquals( "PageMetaModel() constructor should initializa page model with given markup generator and title separator.", "foo :: \\\"", page.generateTitleContent()); } @Test public void constructorWithSeparatorAndTitle() { Generator generator = new Generator(true, StringEscapeUtils.ESCAPE_JSON); PageMetaModel page = new PageMetaModel(generator, " :: ", "foo"); page.addTitlePart("\""); assertEquals( "PageMetaModel() constructor should initializa page model with given markup generator, title separator and initial part.", "foo :: \\\"", page.generateTitleContent()); } @Test public void defaultGeneratorWithSeparator() { PageMetaModel page = new PageMetaModel(" :: "); page.addTitlePart("foo"); page.addTitlePart("bar"); assertEquals("PageMetaModel() constructor should initializa page model with given title separator.", "foo :: bar", page.generateTitleContent()); } @Test public void defaultGeneratorWithSeparatorAndTitle() { PageMetaModel page = new PageMetaModel(" :: ", "foo"); page.addTitlePart("bar"); assertEquals( "PageMetaModel() constructor should initializa page model with given title separator and initial part.", "foo :: bar", page.generateTitleContent()); } @Test public void getXmlPrefix() throws URISyntaxException { URI uri = new URI("http://chilldev.pl"); String alias = "cdv"; PageMetaModel page = new PageMetaModel(); page.setXmlNamespace(uri, alias); assertEquals("PageMetaModel.getXmlPrefix() should return alias assigned to given URI.", ":" + alias, page.getXmlPrefix(uri)); } @Test public void getXmlPrefixDefaultNamespace() throws URISyntaxException { URI uri = new URI("http://chilldev.pl"); PageMetaModel page = new PageMetaModel(); page.setXmlNamespace(uri, ""); assertEquals("PageMetaModel.getXmlPrefix() should return empty string for default namespace.", "", page.getXmlPrefix(uri)); } @Test public void addTitlePart() { PageMetaModel page = new PageMetaModel(" :: "); page.addTitlePart("foo"); page.addTitlePart("bar"); assertEquals("PageMetaModel.addTitlePart() should append new part to page title.", "foo :: bar", page.generateTitleContent()); } @Test public void setTitleSeparator() { PageMetaModel page = new PageMetaModel(); page.setTitleSeparator(" :: "); page.addTitlePart("foo"); page.addTitlePart("bar"); assertEquals("PageMetaModel.setTitleSeparator() should change title elements separator.", "foo :: bar", page.generateTitleContent()); } @Test public void metaHttpEquiv() { String key = "foo"; String value = "bar"; PageMetaModel page = new PageMetaModel(); page.setHttpEquiv(key, value); assertEquals("PageMetaModel.setHttpEquiv() should set <meta> value for attribute http-equiv=\"\".", value, page.getHttpEquiv(key)); page.unsetHttpEquiv(key); assertNull("PageMetaModel.unsetHttpEquiv() should clear <meta> value for attribute http-equiv=\"\".", page.getHttpEquiv(key)); } @Test public void metaName() { String key = "foo"; String value = "bar"; PageMetaModel page = new PageMetaModel(); page.setMetaName(key, value); assertEquals("PageMetaModel.setMetaName() should set <meta> value for attribute name=\"\".", value, page.getMetaName(key)); page.unsetMetaName(key); assertNull("PageMetaModel.unsetMetaName() should clear <meta> value for attribute name=\"\".", page.getMetaName(key)); } @Test public void metaProperty() { String key = "foo"; String value = "bar"; PageMetaModel page = new PageMetaModel(); page.setMetaProperty(key, value); assertEquals("PageMetaModel.setMetaProperty() should set <meta> value for attribute property=\"\".", value, page.getMetaProperty(key)); page.unsetMetaProperty(key); assertNull("PageMetaModel.unsetMetaProperty() should clear <meta> value for attribute property=\"\".", page.getMetaProperty(key)); } @Test public void addKeywords() { PageMetaModel page = new PageMetaModel(); page.addKeywords("foo", "bar"); assertEquals("PageMetaModel.addKeywords() should add all arguments as keywords.", "<meta content=\"foo,bar\" name=\"keywords\"/>", page.generateMetaElements()); } @Test public void addKeywordsArray() { PageMetaModel page = new PageMetaModel(); page.addKeywords(new String[] { "foo", "bar" }); assertEquals("PageMetaModel.addKeywords() should add all keywords from the array.", "<meta content=\"foo,bar\" name=\"keywords\"/>", page.generateMetaElements()); } @Test public void addKeywordsList() { PageMetaModel page = new PageMetaModel(); List<String> keywords = new ArrayList<>(); keywords.add("foo"); keywords.add("bar"); page.addKeywords(keywords); assertEquals("PageMetaModel.addKeywords() should add all keywords from the list.", "<meta content=\"foo,bar\" name=\"keywords\"/>", page.generateMetaElements()); } @Test public void addScriptWithTypeFlowAndCharset() { PageMetaModel page = new PageMetaModel(); page.addScript("foo", "bar", Element.Flow.DEFER, StandardCharsets.UTF_8); assertEquals( "PageMetaModel.addScript() should add <script> element with specified MIME type, loading flow and charset.", "<script charset=\"utf-8\" defer=\"defer\" src=\"foo\" type=\"bar\"/>", page.generateScriptElements()); } @Test public void addScriptWithTypeAndFlow() { PageMetaModel page = new PageMetaModel(); page.addScript("foo", "bar", Element.Flow.DEFER); assertEquals( "PageMetaModel.addScript() should add <script> element with specified MIME type and loading flow.", "<script defer=\"defer\" src=\"foo\" type=\"bar\"/>", page.generateScriptElements()); } @Test public void addScriptWithType() { PageMetaModel page = new PageMetaModel(); page.addScript("foo", "bar"); assertEquals("PageMetaModel.addScript() should add <script> element with specified MIME type.", "<script src=\"foo\" type=\"bar\"/>", page.generateScriptElements()); } @Test public void addScript() { PageMetaModel page = new PageMetaModel(); page.addScript("foo"); assertEquals("PageMetaModel.addScript() should add <script> element.", "<script src=\"foo\"/>", page.generateScriptElements()); } @Test public void addLinkWithTypeAndMedia() { PageMetaModel page = new PageMetaModel(); Set<String> rels = new HashSet<>(); rels.add("bar"); page.addLink("foo", rels, "baz", "quux"); assertEquals( "PageMetaModel.addLink() should add <link> element with specified rel=\"\" attribute, MIME type and media query.", "<link href=\"foo\" media=\"quux\" rel=\"bar\" type=\"baz\"/>", page.generateLinkElements()); } @Test public void addLinkWithType() { PageMetaModel page = new PageMetaModel(); Set<String> rels = new HashSet<>(); rels.add("bar"); page.addLink("foo", rels, "baz"); assertEquals( "PageMetaModel.addLink() should add <link> element with specified rel=\"\" attribute and MIME type.", "<link href=\"foo\" rel=\"bar\" type=\"baz\"/>", page.generateLinkElements()); } @Test public void addLink() { PageMetaModel page = new PageMetaModel(); Set<String> rels = new HashSet<>(); rels.add("bar"); page.addLink("foo", rels); assertEquals("PageMetaModel.addLink() should add <link> element with specified rel=\"\" attribute.", "<link href=\"foo\" rel=\"bar\"/>", page.generateLinkElements()); } @Test public void addStylesheetWithTypeAndMedia() { PageMetaModel page = new PageMetaModel(); page.addStylesheet("foo", "bar", "baz"); assertEquals( "PageMetaModel.addStylesheet() should add <link> element with rel=\"\" attribute set to \"stylesheet\", specified MIME type and media query.", "<link href=\"foo\" media=\"baz\" rel=\"stylesheet\" type=\"bar\"/>", page.generateLinkElements()); } @Test public void addStylesheetWithType() { PageMetaModel page = new PageMetaModel(); page.addStylesheet("foo", "bar"); assertEquals( "PageMetaModel.addStylesheet() should add <link> element with rel=\"\" attribute set to \"stylesheet\" and specified MIME type.", "<link href=\"foo\" rel=\"stylesheet\" type=\"bar\"/>", page.generateLinkElements()); } @Test public void addStylesheet() { PageMetaModel page = new PageMetaModel(); page.addStylesheet("foo"); assertEquals( "PageMetaModel.addStylesheet() should add <link> element with rel=\"\" attribute set to \"stylesheet\".", "<link href=\"foo\" rel=\"stylesheet\"/>", page.generateLinkElements()); } }