// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.application; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.RegionName; import org.custommonkey.xmlunit.XMLUnit; import org.junit.Test; import org.w3c.dom.Document; import javax.xml.transform.TransformerException; import java.io.StringReader; /** * Demonstrates that only the most specific match is retained and that this can be overridden by using ids. * * @author bratseth */ public class MultiOverrideProcessorTest { static { XMLUnit.setIgnoreWhitespace(true); } private static final String input = "\n" + "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " comp-B-item-0\n" + " \n" + " \n" + " \n" + " comp-B-item-1\n" + " \n" + " \n" + " \n" + " comp-B-item-2\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n"; private static final String inputWithIds = "\n" + "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " comp-B-item-0\n" + " \n" + " \n" + " \n" + " comp-B-item-1\n" + " \n" + " \n" + " \n" + " comp-B-item-2\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n"; @Test public void testParsingDev() throws TransformerException { String expected = "\n" + "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " comp-B-item-1\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; assertOverride(Environment.dev, RegionName.from("us-east-3"), expected); } @Test public void testParsingDevWithIds() throws TransformerException { String expected = "\n" + "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " comp-B-item-0\n" + " \n" + " \n" + " \n" + " comp-B-item-1\n" + " \n" + " \n" + " \n" + " comp-B-item-2\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; assertOverrideWithIds(Environment.dev, RegionName.from("us-east-3"), expected); } private void assertOverride(Environment environment, RegionName region, String expected) throws TransformerException { Document inputDoc = Xml.getDocument(new StringReader(input)); Document newDoc = new OverrideProcessor(environment, region).process(inputDoc); TestBase.assertDocument(expected, newDoc); } private void assertOverrideWithIds(Environment environment, RegionName region, String expected) throws TransformerException { Document inputDoc = Xml.getDocument(new StringReader(inputWithIds)); Document newDoc = new OverrideProcessor(environment, region).process(inputDoc); TestBase.assertDocument(expected, newDoc); } }