Package com.googlecode.jslint4java.formatter

Source Code of com.googlecode.jslint4java.formatter.JSLintXmlFormatterTest

package com.googlecode.jslint4java.formatter;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import java.io.StringReader;
import java.net.URL;

import org.custommonkey.xmlunit.Validator;
import org.custommonkey.xmlunit.XMLAssert;
import org.custommonkey.xmlunit.XMLUnit;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import com.google.common.io.Resources;
import com.googlecode.jslint4java.Issue;
import com.googlecode.jslint4java.JSLintResult;

public class JSLintXmlFormatterTest {
    public static final String DTD_RESOURCE = "com/googlecode/jslint4java/jslint4java.dtd";

    private final JSLintResultFormatter form = new JSLintXmlFormatter();

    private Validator getValidatorFor(String xml) throws SAXException {
        URL dtd = Resources.getResource(DTD_RESOURCE);
        // Specify a validator as the documents don't have <!DOCTYPE file> in them.
        // NB: We produce a subset of the full DTD (no root jslint element), but it's enough to
        // validate.
        return new Validator(new InputSource(new StringReader(xml)), dtd.toString(), "file");
    }

    @Before
    public void setUp() {
        // This is why you need a proper testing library…
        XMLUnit.setIgnoreWhitespace(true);
    }

    @Test
    public void shouldHaveJslintFooter() {
        assertThat(form.footer(), is("</jslint>"));
    }

    @Test
    public void shouldHaveJslintHeader() {
        assertThat(form.header(), is("<jslint>"));
    }

    @Test
    public void testNoOutput() throws Exception {
        JSLintResult result = new JSLintResult.ResultBuilder("good.js").build();
        String expected = "<file name='good.js'/>";
        String actual = form.format(result);
        XMLAssert.assertXMLEqual(expected, actual);
        XMLAssert.assertXMLValid(getValidatorFor(actual));
    }

    @Test
    public void testOneIssue() throws Exception {
        String name = "bad.js";
        Issue issue = new Issue.IssueBuilder(name, 1, 1, "too many goats teleported").build();
        JSLintResult result = new JSLintResult.ResultBuilder(name).addIssue(issue).build();
        String expected = "<file name='bad.js'>"
                + "<issue line='1' char='1' reason='too many goats teleported' evidence='' />"
                + "</file>";
        String actual = form.format(result);
        XMLAssert.assertXMLEqual(expected, actual);
        XMLAssert.assertXMLValid(getValidatorFor(actual));
    }
}
TOP

Related Classes of com.googlecode.jslint4java.formatter.JSLintXmlFormatterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.