package com.sleekbyte.tailor.utils; import static org.junit.Assert.assertEquals; import com.sleekbyte.tailor.common.YamlConfiguration; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Writer; import java.nio.charset.Charset; import java.util.Arrays; import java.util.HashSet; import java.util.Optional; import java.util.Set; /** * Tests for {@link YamlConfigurationFileManager}. */ @RunWith(MockitoJUnitRunner.class) public final class YamlConfigurationFileManagerTest { @Rule public TemporaryFolder folder = new TemporaryFolder(); @Test(expected = IOException.class) public void testParseConfigurationFileEmptyFolder() throws IOException { YamlConfigurationFileManager.getConfiguration(Optional.of(folder.getRoot().getPath())); } @Test public void testParseConfigurationFileValidConfigFile() throws IOException { YamlConfiguration config = YamlConfigurationFileManager .getConfiguration(Optional.of(createConfigFile(".tailor.yml").toString())) .orElse(new YamlConfiguration()); Set<String> actualIncludeList = config.getInclude(); Set<String> actualExcludeList = config.getExclude(); Set<String> expectedIncludeList = new HashSet<>(Arrays.asList("Source")); Set<String> expectedExcludeList = new HashSet<>(Arrays.asList("Carthage", "Pods")); assertEquals(expectedIncludeList, actualIncludeList); assertEquals(expectedExcludeList, actualExcludeList); } private File createConfigFile(String fileName) throws IOException { File configFile = folder.newFile(fileName); Writer streamWriter = new OutputStreamWriter(new FileOutputStream(configFile), Charset.forName("UTF-8")); PrintWriter printWriter = new PrintWriter(streamWriter); printWriter.println("include:"); printWriter.println(" - Source"); printWriter.println("exclude:"); printWriter.println(" - Carthage"); printWriter.println(" - Pods"); streamWriter.close(); printWriter.close(); return configFile; } }