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