package com.pablissimo.sonar; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import java.io.File; import org.junit.Test; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.internal.SensorContextTester; import org.sonar.api.config.Settings; public class TsLintExecutorConfigTest { private TsLintExecutorConfig getNewConfig() { return new TsLintExecutorConfig(); } @Test public void canGetSetPathToTsLint() { TsLintExecutorConfig config = getNewConfig(); config.setPathToTsLint("My path"); assertEquals("My path", config.getPathToTsLint()); } @Test public void canGetSetPathToTsLintConfig() { TsLintExecutorConfig config = getNewConfig(); config.setConfigFile("My path"); assertEquals("My path", config.getConfigFile()); } @Test public void canGetSetRulesDir() { TsLintExecutorConfig config = getNewConfig(); config.setRulesDir("My path"); assertEquals("My path", config.getRulesDir()); } @Test public void canGetSetTimeout() { TsLintExecutorConfig config = getNewConfig(); config.setTimeoutMs(12); assertEquals((Integer) 12, config.getTimeoutMs()); } @Test public void canGetSetTsConfigPath() { TsLintExecutorConfig config = getNewConfig(); config.setPathToTsConfig("My path"); assertEquals("My path", config.getPathToTsConfig()); } @Test public void canGetSetTypeCheck() { TsLintExecutorConfig config = getNewConfig(); config.setShouldPerformTypeCheck(true); assertTrue(config.shouldPerformTypeCheck()); } @Test public void useTsConfigInsteadOfFileList_returnsTrue_ifPathToTsConfigSet() { TsLintExecutorConfig config = getNewConfig(); config.setPathToTsConfig("My path"); assertTrue(config.useTsConfigInsteadOfFileList()); } @Test public void useTsConfigInsteadOfFileList_returnsFalse_ifPathToTsConfigNotSet() { TsLintExecutorConfig config = getNewConfig(); config.setPathToTsConfig(""); assertFalse(config.useTsConfigInsteadOfFileList()); } @Test public void useExistingTsLintOutput_returnsTrueIfPathSet() { TsLintExecutorConfig config = getNewConfig(); config.setPathToTsLintOutput("/path/to/tslint/json/output"); assertTrue(config.useExistingTsLintOutput()); } @Test public void useExistingTsLintOutput_returnsFalseIfPathNotSet() { TsLintExecutorConfig config = getNewConfig(); config.setPathToTsLintOutput(""); assertFalse(config.useExistingTsLintOutput()); } @Test public void fromSettings_initialisesFromSettingsAndResolver() { Settings settings = new Settings(); settings.setProperty(TypeScriptPlugin.SETTING_TS_LINT_TIMEOUT, 12000); settings.setProperty(TypeScriptPlugin.SETTING_TS_LINT_TYPECHECK, true); PathResolver resolver = mock(PathResolver.class); when(resolver.getPath(any(SensorContext.class), eq(TypeScriptPlugin.SETTING_TS_LINT_PATH), eq(TsLintExecutorConfig.TSLINT_FALLBACK_PATH)) ).thenReturn("tslint"); when(resolver.getPath(any(SensorContext.class), eq(TypeScriptPlugin.SETTING_TS_LINT_CONFIG_PATH), eq(TsLintExecutorConfig.CONFIG_FILENAME)) ).thenReturn("tslint.json"); when(resolver.getPath(any(SensorContext.class), eq(TypeScriptPlugin.SETTING_TS_LINT_RULES_DIR), eq((String) null)) ).thenReturn("rulesdir"); when(resolver.getPath(any(SensorContext.class), eq(TypeScriptPlugin.SETTING_TS_LINT_PROJECT_PATH), eq((String) null)) ).thenReturn("tsconfig.json"); when(resolver.getPath(any(SensorContext.class), eq(TypeScriptPlugin.SETTING_TS_LINT_OUTPUT_PATH), eq((String) null)) ).thenReturn("out.json"); TsLintExecutorConfig config = TsLintExecutorConfig.fromSettings(settings, SensorContextTester.create(new File("")), resolver); assertEquals("tslint", config.getPathToTsLint()); assertEquals("tslint.json", config.getConfigFile()); assertEquals("rulesdir", config.getRulesDir()); assertEquals("tsconfig.json", config.getPathToTsConfig()); assertEquals("out.json", config.getPathToTsLintOutput()); assertTrue(config.shouldPerformTypeCheck()); assertEquals((Integer) 12000, config.getTimeoutMs()); } @Test public void fromSettings_setsTimeoutTo5000msMinimum_ifSetToLess() { Settings settings = new Settings(); settings.setProperty(TypeScriptPlugin.SETTING_TS_LINT_TIMEOUT, 1000); PathResolver resolver = mock(PathResolver.class); TsLintExecutorConfig config = TsLintExecutorConfig.fromSettings(settings, SensorContextTester.create(new File("")), resolver); assertEquals((Integer) 5000, config.getTimeoutMs()); } }