public void ValidateFormatSettingsParsedFromJson() { const string settingsJson = @" { ""params"": { ""mssql"": { ""format"": { useBracketForIdentifiers: true, placeCommasBeforeNextStatement: true, placeSelectStatementReferencesOnNewLine: true, keywordCasing: ""uppercase"", datatypeCasing: ""lowercase"", alignColumnDefinitionsInColumns: true } } } }"; JObject message = JObject.Parse(settingsJson); JToken messageParams = null; message.TryGetValue("params", out messageParams); SqlToolsSettings sqlToolsSettings = messageParams.ToObject <SqlToolsSettings>(); Assert.True(sqlToolsSettings.SqlTools.Format.AlignColumnDefinitionsInColumns); Assert.Equal(CasingOptions.Lowercase, sqlToolsSettings.SqlTools.Format.DatatypeCasing); Assert.Equal(CasingOptions.Uppercase, sqlToolsSettings.SqlTools.Format.KeywordCasing); Assert.True(sqlToolsSettings.SqlTools.Format.PlaceCommasBeforeNextStatement); Assert.True(sqlToolsSettings.SqlTools.Format.PlaceSelectStatementReferencesOnNewLine); Assert.True(sqlToolsSettings.SqlTools.Format.UseBracketForIdentifiers); }
public async Task ChangeConfigurationTest() { using (SelfCleaningTempFile queryTempFile = new SelfCleaningTempFile()) using (TestHelper testHelper = new TestHelper()) { bool connected = await testHelper.Connect(queryTempFile.FilePath, ConnectionTestUtils.LocalhostConnection); Assert.True(connected, "Connection was not successful"); Thread.Sleep(500); var settings = new SqlToolsSettings(); settings.SqlTools.IntelliSense.EnableIntellisense = false; DidChangeConfigurationParams <SqlToolsSettings> configParams = new DidChangeConfigurationParams <SqlToolsSettings>() { Settings = settings }; await testHelper.RequestChangeConfigurationNotification(configParams); Thread.Sleep(2000); await testHelper.Disconnect(queryTempFile.FilePath); } }
public Task HandleDidChangeConfigurationNotification( SqlToolsSettings newSettings, SqlToolsSettings oldSettings, EventContext eventContext) { return(Task.FromResult(true)); }
public void ValidateSettingsObjectUpdates() { // If: I update a settings object with a new settings object var qes = new QueryExecutionService(null, null); SqlToolsSettings settings = new SqlToolsSettings() { SqlTools = new SqlToolsSettingsValues { QueryExecutionSettings = new QueryExecutionSettings { DisplayBitAsNumber = false, MaxXmlCharsToStore = 1, MaxCharsToStore = 1, ExecutionPlanOptions = new ExecutionPlanOptions { IncludeActualExecutionPlanXml = true, IncludeEstimatedExecutionPlanXml = true }, BatchSeparator = "YO" } } }; qes.UpdateSettings(settings, null, new EventContext()); // Then: The settings object should match what it was updated to Assert.False(qes.Settings.QueryExecutionSettings.DisplayBitAsNumber); Assert.True(qes.Settings.QueryExecutionSettings.ExecutionPlanOptions.IncludeActualExecutionPlanXml); Assert.True(qes.Settings.QueryExecutionSettings.ExecutionPlanOptions.IncludeEstimatedExecutionPlanXml); Assert.Equal(1, qes.Settings.QueryExecutionSettings.MaxCharsToStore); Assert.Equal(1, qes.Settings.QueryExecutionSettings.MaxXmlCharsToStore); Assert.Equal("YO", qes.Settings.QueryExecutionSettings.BatchSeparator); }
/// <summary> /// Handle the file configuration change notification /// </summary> /// <param name="newSettings"></param> /// <param name="oldSettings"></param> /// <param name="eventContext"></param> public async Task HandleDidChangeConfigurationNotification( SqlToolsSettings newSettings, SqlToolsSettings oldSettings, EventContext eventContext) { bool oldEnableIntelliSense = oldSettings.SqlTools.IntelliSense.EnableIntellisense; bool?oldEnableDiagnostics = oldSettings.SqlTools.IntelliSense.EnableErrorChecking; // update the current settings to reflect any changes CurrentSettings.Update(newSettings); // if script analysis settings have changed we need to clear the current diagnostic markers if (oldEnableIntelliSense != newSettings.SqlTools.IntelliSense.EnableIntellisense || oldEnableDiagnostics != newSettings.SqlTools.IntelliSense.EnableErrorChecking) { // if the user just turned off diagnostics then send an event to clear the error markers if (!newSettings.IsDiagnositicsEnabled) { ScriptFileMarker[] emptyAnalysisDiagnostics = new ScriptFileMarker[0]; foreach (var scriptFile in WorkspaceService <SqlToolsSettings> .Instance.Workspace.GetOpenedFiles()) { await DiagnosticsHelper.PublishScriptDiagnostics(scriptFile, emptyAnalysisDiagnostics, eventContext); } } // otherwise rerun diagnostic analysis on all opened SQL files else { await this.RunScriptDiagnostics(CurrentWorkspace.GetOpenedFiles(), eventContext); } } }
public void CanCopyDefaultFormatSettingsToOptions() { var sqlToolsSettings = new SqlToolsSettings(); FormatOptions options = new FormatOptions(); TSqlFormatterService.UpdateFormatOptionsFromSettings(options, sqlToolsSettings.SqlTools.Format); AssertOptionsHaveDefaultValues(options); }
/// <summary> /// Ensure formatter settings are always up to date /// </summary> public Task HandleDidChangeConfigurationNotification( SqlToolsSettings newSettings, SqlToolsSettings oldSettings, EventContext eventContext) { // update the current settings to reflect any changes (assuming formatter settings exist) settings = newSettings.SqlTools.Format ?? settings; return(Task.FromResult(true)); }
public void CanCopyAlteredFormatSettingsToOptions() { SqlToolsSettings sqlToolsSettings = CreateNonDefaultFormatSettings(); FormatOptions options = new FormatOptions(); TSqlFormatterService.UpdateFormatOptionsFromSettings(options, sqlToolsSettings.SqlTools.Format); AssertOptionsHaveExpectedNonDefaultValues(options); }
public void ValidateFormatterServiceDefaults() { var sqlToolsSettings = new SqlToolsSettings(); Assert.Null(sqlToolsSettings.SqlTools.Format.AlignColumnDefinitionsInColumns); Assert.Equal(CasingOptions.None, sqlToolsSettings.SqlTools.Format.DatatypeCasing); Assert.Equal(CasingOptions.None, sqlToolsSettings.SqlTools.Format.KeywordCasing); Assert.Null(sqlToolsSettings.SqlTools.Format.PlaceCommasBeforeNextStatement); Assert.Null(sqlToolsSettings.SqlTools.Format.PlaceSelectStatementReferencesOnNewLine); Assert.Null(sqlToolsSettings.SqlTools.Format.UseBracketForIdentifiers); }
public void ValidateLanguageServiceDefaults() { var sqlToolsSettings = new SqlToolsSettings(); Assert.True(sqlToolsSettings.IsDiagnositicsEnabled); Assert.True(sqlToolsSettings.IsSuggestionsEnabled); Assert.True(sqlToolsSettings.SqlTools.IntelliSense.EnableIntellisense); Assert.True(sqlToolsSettings.SqlTools.IntelliSense.EnableErrorChecking); Assert.True(sqlToolsSettings.SqlTools.IntelliSense.EnableSuggestions); Assert.True(sqlToolsSettings.SqlTools.IntelliSense.EnableQuickInfo); Assert.False(sqlToolsSettings.SqlTools.IntelliSense.LowerCaseSuggestions); }
private static SqlToolsSettings CreateNonDefaultFormatSettings() { var sqlToolsSettings = new SqlToolsSettings(); sqlToolsSettings.SqlTools.Format.AlignColumnDefinitionsInColumns = true; sqlToolsSettings.SqlTools.Format.DatatypeCasing = CasingOptions.Lowercase; sqlToolsSettings.SqlTools.Format.KeywordCasing = CasingOptions.Uppercase; sqlToolsSettings.SqlTools.Format.PlaceCommasBeforeNextStatement = true; sqlToolsSettings.SqlTools.Format.PlaceSelectStatementReferencesOnNewLine = true; sqlToolsSettings.SqlTools.Format.UseBracketForIdentifiers = true; return(sqlToolsSettings); }
public void ValidateQueryExecuteDefaults() { // If: I create a new settings object var sqlToolsSettings = new SqlToolsSettings(); // Then: The default values should be as expected Assert.Equal("GO", sqlToolsSettings.QueryExecutionSettings.BatchSeparator); Assert.Equal(ushort.MaxValue, sqlToolsSettings.QueryExecutionSettings.MaxCharsToStore); Assert.Equal(2 * 1024 * 1024, sqlToolsSettings.QueryExecutionSettings.MaxXmlCharsToStore); Assert.False(sqlToolsSettings.QueryExecutionSettings.ExecutionPlanOptions.IncludeActualExecutionPlanXml); Assert.False(sqlToolsSettings.QueryExecutionSettings.ExecutionPlanOptions.IncludeEstimatedExecutionPlanXml); Assert.True(sqlToolsSettings.QueryExecutionSettings.DisplayBitAsNumber); }
public void ValidateIsDiagnosticsEnabled() { var sqlToolsSettings = new SqlToolsSettings(); // diagnostics is enabled if IntelliSense and Diagnostics flags are set sqlToolsSettings.SqlTools.IntelliSense.EnableIntellisense = true; sqlToolsSettings.SqlTools.IntelliSense.EnableErrorChecking = true; Assert.True(sqlToolsSettings.IsDiagnositicsEnabled); // diagnostics is disabled if either IntelliSense and Diagnostics flags is not set sqlToolsSettings.SqlTools.IntelliSense.EnableIntellisense = false; sqlToolsSettings.SqlTools.IntelliSense.EnableErrorChecking = true; Assert.False(sqlToolsSettings.IsDiagnositicsEnabled); sqlToolsSettings.SqlTools.IntelliSense.EnableIntellisense = true; sqlToolsSettings.SqlTools.IntelliSense.EnableErrorChecking = false; Assert.False(sqlToolsSettings.IsDiagnositicsEnabled); }
public void ValidateIsQuickInfoEnabled() { var sqlToolsSettings = new SqlToolsSettings(); // quick info is enabled if IntelliSense and quick info flags are set sqlToolsSettings.SqlTools.IntelliSense.EnableIntellisense = true; sqlToolsSettings.SqlTools.IntelliSense.EnableQuickInfo = true; Assert.True(sqlToolsSettings.IsQuickInfoEnabled); // quick info is disabled if either IntelliSense and quick info flags is not set sqlToolsSettings.SqlTools.IntelliSense.EnableIntellisense = false; sqlToolsSettings.SqlTools.IntelliSense.EnableQuickInfo = true; Assert.False(sqlToolsSettings.IsQuickInfoEnabled); sqlToolsSettings.SqlTools.IntelliSense.EnableIntellisense = true; sqlToolsSettings.SqlTools.IntelliSense.EnableQuickInfo = false; Assert.False(sqlToolsSettings.IsQuickInfoEnabled); }
public void ValidateIsSuggestionsEnabled() { var sqlToolsSettings = new SqlToolsSettings(); // suggestions is enabled if IntelliSense and Suggestions flags are set sqlToolsSettings.SqlTools.IntelliSense.EnableIntellisense = true; sqlToolsSettings.SqlTools.IntelliSense.EnableSuggestions = true; Assert.True(sqlToolsSettings.IsSuggestionsEnabled); // suggestions is disabled if either IntelliSense and Suggestions flags is not set sqlToolsSettings.SqlTools.IntelliSense.EnableIntellisense = false; sqlToolsSettings.SqlTools.IntelliSense.EnableSuggestions = true; Assert.False(sqlToolsSettings.IsSuggestionsEnabled); sqlToolsSettings.SqlTools.IntelliSense.EnableIntellisense = true; sqlToolsSettings.SqlTools.IntelliSense.EnableSuggestions = false; Assert.False(sqlToolsSettings.IsSuggestionsEnabled); }
private static void ValidateSettings(string settingsPropertyName) { // NOTE: Only testing displayBitAsNumber for now because it is the only one piped through string settingsJson = @"{" + @"""params"": {" + @"""" + settingsPropertyName + @""": {" + @"""query"": {" + @"displayBitAsNumber: false" + @"}" + @"}" + @"}" + @"}"; // If: I parse the settings JSON object JObject message = JObject.Parse(settingsJson); JToken messageParams; Assert.True(message.TryGetValue("params", out messageParams)); SqlToolsSettings sqlToolsSettings = messageParams.ToObject <SqlToolsSettings>(); // Then: The values defined in the JSON should propagate to the setting object Assert.False(sqlToolsSettings.QueryExecutionSettings.DisplayBitAsNumber); }
/// Internal for testing purposes internal Task UpdateSettings(SqlToolsSettings newSettings, SqlToolsSettings oldSettings, EventContext eventContext) { Settings.QueryExecutionSettings.Update(newSettings.QueryExecutionSettings); return(Task.FromResult(0)); }
internal QueryExecutionService(ConnectionService connService, WorkspaceService <SqlToolsSettings> workspaceService) { ConnectionService = connService; WorkspaceService = workspaceService; Settings = new SqlToolsSettings(); }
private QueryExecutionService() { ConnectionService = ConnectionService.Instance; WorkspaceService = WorkspaceService <SqlToolsSettings> .Instance; Settings = new SqlToolsSettings(); }
public void ValidateSettingsObjectUpdates() { // If: I update a settings object with a new settings object var qes = new QueryExecutionService(null, null); SqlToolsSettings settings = new SqlToolsSettings() { SqlTools = new SqlToolsSettingsValues { QueryExecutionSettings = new QueryExecutionSettings { DisplayBitAsNumber = false, MaxXmlCharsToStore = 1, MaxCharsToStore = 1, RowCount = 0, TextSize = 1000, ExecutionTimeout = 5000, NoCount = true, NoExec = true, ParseOnly = true, ArithAbort = true, StatisticsTime = true, StatisticsIO = true, XactAbortOn = true, TransactionIsolationLevel = "REPEATABLE READ", DeadlockPriority = "LOW", LockTimeout = 5000, QueryGovernorCostLimit = 2000, AnsiDefaults = false, QuotedIdentifier = true, AnsiNullDefaultOn = true, ImplicitTransactions = true, CursorCloseOnCommit = true, AnsiPadding = true, AnsiWarnings = true, AnsiNulls = true, ExecutionPlanOptions = new ExecutionPlanOptions { IncludeActualExecutionPlanXml = true, IncludeEstimatedExecutionPlanXml = true }, BatchSeparator = "YO" } } }; qes.UpdateSettings(settings, null, new EventContext()); // Then: The settings object should match what it was updated to Assert.False(qes.Settings.QueryExecutionSettings.DisplayBitAsNumber); Assert.True(qes.Settings.QueryExecutionSettings.ExecutionPlanOptions.IncludeActualExecutionPlanXml); Assert.True(qes.Settings.QueryExecutionSettings.ExecutionPlanOptions.IncludeEstimatedExecutionPlanXml); Assert.Equal(1, qes.Settings.QueryExecutionSettings.MaxCharsToStore); Assert.Equal(1, qes.Settings.QueryExecutionSettings.MaxXmlCharsToStore); Assert.Equal("YO", qes.Settings.QueryExecutionSettings.BatchSeparator); Assert.Equal(1, qes.Settings.QueryExecutionSettings.MaxCharsToStore); Assert.Equal(0, qes.Settings.QueryExecutionSettings.RowCount); Assert.Equal(1000, qes.Settings.QueryExecutionSettings.TextSize); Assert.Equal(5000, qes.Settings.QueryExecutionSettings.ExecutionTimeout); Assert.True(qes.Settings.QueryExecutionSettings.NoCount); Assert.True(qes.Settings.QueryExecutionSettings.NoExec); Assert.True(qes.Settings.QueryExecutionSettings.ParseOnly); Assert.True(qes.Settings.QueryExecutionSettings.ArithAbort); Assert.True(qes.Settings.QueryExecutionSettings.StatisticsTime); Assert.True(qes.Settings.QueryExecutionSettings.StatisticsIO); Assert.True(qes.Settings.QueryExecutionSettings.XactAbortOn); Assert.Equal("REPEATABLE READ", qes.Settings.QueryExecutionSettings.TransactionIsolationLevel); Assert.Equal("LOW", qes.Settings.QueryExecutionSettings.DeadlockPriority); Assert.Equal(5000, qes.Settings.QueryExecutionSettings.LockTimeout); Assert.Equal(2000, qes.Settings.QueryExecutionSettings.QueryGovernorCostLimit); Assert.False(qes.Settings.QueryExecutionSettings.AnsiDefaults); Assert.True(qes.Settings.QueryExecutionSettings.QuotedIdentifier); Assert.True(qes.Settings.QueryExecutionSettings.AnsiNullDefaultOn); Assert.True(qes.Settings.QueryExecutionSettings.ImplicitTransactions); Assert.True(qes.Settings.QueryExecutionSettings.CursorCloseOnCommit); Assert.True(qes.Settings.QueryExecutionSettings.AnsiPadding); Assert.True(qes.Settings.QueryExecutionSettings.AnsiWarnings); Assert.True(qes.Settings.QueryExecutionSettings.AnsiNulls); }