test.pl.chilldev.web.core.page.PageMetaModelTest.java Source code

Java tutorial

Introduction

Here is the source code for test.pl.chilldev.web.core.page.PageMetaModelTest.java

Source

/**
 * 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());
    }
}