Package sortpom.processinstruction

Source Code of sortpom.processinstruction.IgnoredSectionsStoreTest

package sortpom.processinstruction;

import org.junit.Before;
import org.junit.Test;
import refutils.ReflectionHelper;

import java.util.ArrayList;

import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

/**
* @author bjorn
* @since 2013-12-28
*/
public class IgnoredSectionsStoreTest {

    private IgnoredSectionsStore ignoredSectionsStore;
    private ArrayList<String> ignoredSections;

    @Before
    public void setUp() throws Exception {
        ignoredSectionsStore = new IgnoredSectionsStore();
        ignoredSections = new ReflectionHelper(ignoredSectionsStore).getField(ArrayList.class);
    }

    @Test
    public void replaceNoSectionShouldReturnSameXml() throws Exception {
        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n" +
                "  <artifactId>sortpom</artifactId>\n" +
                "  <description name=\"pelle\" id=\"id\" other=\"övrigt\">Här använder vi åäö</description>\n" +
                "  <groupId>sortpom</groupId>\n" +
                "  <modelVersion>4.0.0</modelVersion>\n" +
                "  <name>SortPom</name>\n" +
                "  <!-- Egenskaper för projektet -->\n" +
                "  <properties>\n" +
                "    <compileSource>1.6</compileSource>\n" +
                "    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n" +
                "  </properties>\n" +
                "  <reporting />\n" +
                "  <version>1.0.0-SNAPSHOT</version>\n" +
                "</project>";
        String replaced = ignoredSectionsStore.replaceIgnoredSections(xml);

        assertThat(replaced, is(xml));
        assertThat(ignoredSections.size(), is(0));
    }

    @Test
    public void replaceOneSectionShouldCreateOneToken() throws Exception {
        String xml = "abc<?sortpom ignore?>def<?sortpom resume?>cba";
        String replaced = ignoredSectionsStore.replaceIgnoredSections(xml);

        assertThat(replaced, is("abc<?sortpom token='0'?>cba"));
        assertThat(ignoredSections.size(), is(1));
        assertThat(ignoredSections.get(0), is("<?sortpom ignore?>def<?sortpom resume?>"));
    }

    @Test
    public void replaceMultipleSectionShouldCreateManyTokens() throws Exception {
        String xml = "abc<?sortpom ignore?>def1<?sortpom resume?>cbaabc<?SORTPOM Ignore?>def2<?sortPom reSUME?>cba";
        String replaced = ignoredSectionsStore.replaceIgnoredSections(xml);

        assertThat(replaced, is("abc<?sortpom token='0'?>cbaabc<?sortpom token='1'?>cba"));
        assertThat(ignoredSections.size(), is(2));
        assertThat(ignoredSections.get(0), is("<?sortpom ignore?>def1<?sortpom resume?>"));
        assertThat(ignoredSections.get(1), is("<?SORTPOM Ignore?>def2<?sortPom reSUME?>"));
    }

    @Test
    public void replaceMultipleLineXmlShouldCreateManyTokens() throws Exception {
        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n" +
                "\n" +
                "  <modelVersion>4.0.0</modelVersion>\n" +
                "\n" +
                "  <!-- Basics -->\n" +
                "    <groupId>something</groupId>\n" +
                "  <artifactId>maven-sortpom-sorter</artifactId>\n" +
                "    <version>1.0</version>\n" +
                "  <packaging>jar</packaging>\n" +
                "  <name>SortPom Sorter</name>\n" +
                "  <description>The sorting functionality</description>\n" +
                "\n" +
                "  <dependencies>\n" +
                "    <dependency>\n" +
                "      <groupId>org.jdom</groupId>\n" +
                "      <artifactId>jdom</artifactId>\n" +
                "      <version>1.1.3</version>\n" +
                "    </dependency>\n" +
                "    <dependency>\n" +
                "      <groupId>junit</groupId>\n" +
                "      <artifactId>junit</artifactId>\n" +
                "        <?sortpom ignore?>\n" +
                "      <version>4.11</version><!--$NO-MVN-MAN-VER$ -->\n" +
                "        <?sortpom resume?>\n" +
                "      <scope>test</scope>\n" +
                "    </dependency>\n" +
                "    <dependency>\n" +
                "      <groupId>commons-io</groupId>\n" +
                "      <artifactId>commons-io</artifactId>\n" +
                "        <?sortpom ignore?>\n" +
                "      <version>2.1</version><!--$NO-MVN-MAN-VER$ -->\n" +
                "        <?sortpom resume?>\n" +
                "    </dependency>\n" +
                "\n" +
                "    <!-- Test dependencies -->\n" +
                "    <dependency>\n" +
                "      <groupId>com.google.code.reflection-utils</groupId>\n" +
                "      <artifactId>reflection-utils</artifactId>\n" +
                "      <version>0.0.1</version>\n" +
                "      <scope>test</scope>\n" +
                "    </dependency>\n" +
                "  </dependencies>\n" +
                "\n" +
                "</project>\n";
        ignoredSectionsStore.replaceIgnoredSections(xml);

        assertThat(ignoredSections.size(), is(2));
        assertThat(ignoredSections.get(0), is("<?sortpom ignore?>\n" +
                "      <version>4.11</version><!--$NO-MVN-MAN-VER$ -->\n" +
                "        <?sortpom resume?>"));
        assertThat(ignoredSections.get(1), is("<?sortpom ignore?>\n" +
                "      <version>2.1</version><!--$NO-MVN-MAN-VER$ -->\n" +
                "        <?sortpom resume?>"));
    }

    @Test
    public void revertTokensInOrderShouldWork() throws Exception {
        String xml = "abc<?sortpom token='0'?>cbaabc<?sortpom token='1'?>cba";
        ignoredSections.add("<?sortpom ignore?>def1<?sortpom resume?>");
        ignoredSections.add("<?SORTPOM Ignore?>def2<?sortPom reSUME?>");

        String replaced = ignoredSectionsStore.revertIgnoredSections(xml);
        assertThat(replaced, is("abc<?sortpom ignore?>def1<?sortpom resume?>cbaabc<?SORTPOM Ignore?>def2<?sortPom reSUME?>cba"));
    }

    @Test
    public void revertTokensInRearrangedOrderShouldPlaceTextInRightOrder() throws Exception {
        String xml = "abc<?sortpom token='1'?>cbaabc<?sortpom token='0'?>cba";
        ignoredSections.add("<?sortpom ignore?>def0<?sortpom resume?>");
        ignoredSections.add("<?SORTPOM Ignore?>def1<?sortPom reSUME?>");

        String replaced = ignoredSectionsStore.revertIgnoredSections(xml);
        assertThat(replaced, is("abc<?SORTPOM Ignore?>def1<?sortPom reSUME?>cbaabc<?sortpom ignore?>def0<?sortpom resume?>cba"));
    }

    @Test
    public void revertTokensInMultipleLinesShouldPlaceTextInRightOrder() throws Exception {
        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n" +
                "\n" +
                "  <modelVersion>4.0.0</modelVersion>\n" +
                "\n" +
                "  <!-- Basics -->\n" +
                "  <groupId>something</groupId>\n" +
                "  <artifactId>maven-sortpom-sorter</artifactId>\n" +
                "  <version>1.0</version>\n" +
                "  <packaging>jar</packaging>\n" +
                "\n" +
                "  <dependencies>\n" +
                "    <dependency>\n" +
                "      <groupId>commons-io</groupId>\n" +
                "      <artifactId>commons-io</artifactId>\n" +
                "      <?sortpom token='1'?>\n" +
                "    </dependency>\n" +
                "    <dependency>\n" +
                "      <groupId>org.jdom</groupId>\n" +
                "      <artifactId>jdom</artifactId>\n" +
                "      <version>1.1.3</version>\n" +
                "    </dependency>\n" +
                "\n" +
                "    <!-- Test dependencies -->\n" +
                "    <dependency>\n" +
                "      <groupId>com.google.code.reflection-utils</groupId>\n" +
                "      <artifactId>reflection-utils</artifactId>\n" +
                "      <version>0.0.1</version>\n" +
                "      <scope>test</scope>\n" +
                "    </dependency>\n" +
                "    <dependency>\n" +
                "      <groupId>junit</groupId>\n" +
                "      <artifactId>junit</artifactId>\n" +
                "      <?sortpom token='0'?>\n" +
                "      <scope>test</scope>\n" +
                "    </dependency>\n" +
                "  </dependencies>\n" +
                "  <name>SortPom Sorter</name>\n" +
                "  <description>The sorting functionality</description>\n" +
                "\n" +
                "</project>\n";
        ignoredSections.add("<?sortpom ignore?>\n" +
                "      <version>4.11</version><!--$NO-MVN-MAN-VER$ -->\n" +
                "        <?sortpom resume?>");
        ignoredSections.add("<?sortpom ignore?>\n" +
                "      <version>2.1</version><!--$NO-MVN-MAN-VER$ -->\n" +
                "        <?sortpom resume?>");

        String replaced = ignoredSectionsStore.revertIgnoredSections(xml);
        assertThat(replaced, is("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n" +
                "\n" +
                "  <modelVersion>4.0.0</modelVersion>\n" +
                "\n" +
                "  <!-- Basics -->\n" +
                "  <groupId>something</groupId>\n" +
                "  <artifactId>maven-sortpom-sorter</artifactId>\n" +
                "  <version>1.0</version>\n" +
                "  <packaging>jar</packaging>\n" +
                "\n" +
                "  <dependencies>\n" +
                "    <dependency>\n" +
                "      <groupId>commons-io</groupId>\n" +
                "      <artifactId>commons-io</artifactId>\n" +
                "      <?sortpom ignore?>\n" +
                "      <version>2.1</version><!--$NO-MVN-MAN-VER$ -->\n" +
                "        <?sortpom resume?>\n" +
                "    </dependency>\n" +
                "    <dependency>\n" +
                "      <groupId>org.jdom</groupId>\n" +
                "      <artifactId>jdom</artifactId>\n" +
                "      <version>1.1.3</version>\n" +
                "    </dependency>\n" +
                "\n" +
                "    <!-- Test dependencies -->\n" +
                "    <dependency>\n" +
                "      <groupId>com.google.code.reflection-utils</groupId>\n" +
                "      <artifactId>reflection-utils</artifactId>\n" +
                "      <version>0.0.1</version>\n" +
                "      <scope>test</scope>\n" +
                "    </dependency>\n" +
                "    <dependency>\n" +
                "      <groupId>junit</groupId>\n" +
                "      <artifactId>junit</artifactId>\n" +
                "      <?sortpom ignore?>\n" +
                "      <version>4.11</version><!--$NO-MVN-MAN-VER$ -->\n" +
                "        <?sortpom resume?>\n" +
                "      <scope>test</scope>\n" +
                "    </dependency>\n" +
                "  </dependencies>\n" +
                "  <name>SortPom Sorter</name>\n" +
                "  <description>The sorting functionality</description>\n" +
                "\n" +
                "</project>\n"));
    }

}
TOP

Related Classes of sortpom.processinstruction.IgnoredSectionsStoreTest

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.