From d38fa39beb75d113bcda87e8a6cbc72f1dcdf869 Mon Sep 17 00:00:00 2001 From: Viktor Date: Mon, 9 Dec 2024 14:14:32 +0700 Subject: [PATCH 1/6] Update Azure sql data source / data source item --- ...softAzureSqlServerDataSourceItemFixture.cs | 48 +++++++++++++++---- ...icrosoftAzureSqlServerDataSourceFixture.cs | 7 +-- .../MicrosoftAzureSqlServerDataSourceItem.cs | 15 +++++- .../MicrosoftAzureSqlServerDataSource.cs | 2 +- 4 files changed, 55 insertions(+), 17 deletions(-) diff --git a/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs b/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs index d8efdb23..5ee572e7 100644 --- a/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs +++ b/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs @@ -1,9 +1,4 @@ using Reveal.Sdk.Dom.Data; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Xunit; namespace Reveal.Sdk.Dom.Tests.Data.DataSourceItems @@ -13,7 +8,7 @@ public class MicrosoftAzureSqlServerDataSourceItemFixture [Theory] [InlineData("DS Title", "DS Item Title", "DS Title", "DS Item Title")] [InlineData(null, "DS Item Title", "DS Item Title", "DS Item Title")] - public void Constructor_SetsTitleAndDatasource_AsProvided(string dSTitle, string dSItemTitle, string expectedDSTitle, string expectedDSItemTitle) + public void Constructor_CreateDSItemWithExpectedFields_WithTitleAndMSAzureSqlServerDataSource(string dSTitle, string dSItemTitle, string expectedDSTitle, string expectedDSItemTitle) { // Arrange var dataSource = new MicrosoftAzureSqlServerDataSource() { Title = dSTitle }; @@ -23,11 +18,46 @@ public void Constructor_SetsTitleAndDatasource_AsProvided(string dSTitle, string // Assert Assert.Equal(expectedDSItemTitle, dataSourceItem.Title); - Assert.Equal(dataSource, dataSourceItem.DataSource); + Assert.Equal(dataSource.Id, dataSourceItem.DataSource.Id); Assert.Equal(dataSource.Id, dataSourceItem.DataSourceId); Assert.Equal(expectedDSTitle, dataSourceItem.DataSource.Title); - Assert.Equal(dSItemTitle, dataSourceItem.Title); - Assert.Equal(dataSource, dataSourceItem.DataSource); + Assert.Same(dataSource, dataSourceItem.DataSource); + } + + [Fact] + public void Constructor_CreateDSItemWithExpectedFields_WithTitle() + { + // Arrange + var expectedDSItemTitle = "Azure SQL DS Item title"; + + // Act + var dataSourceItem = new MicrosoftAzureSqlServerDataSourceItem(expectedDSItemTitle); + + // Assert + Assert.Equal(expectedDSItemTitle, dataSourceItem.Title); + Assert.NotNull(dataSourceItem.DataSource); + Assert.IsType(dataSourceItem.DataSource); + Assert.Equal(expectedDSItemTitle, dataSourceItem.DataSource.Title); + } + + [Theory] + [InlineData("DS Title", "DS Item Title", "DS Title", "DS Item Title")] + [InlineData(null, "DS Item Title", "DS Item Title", "DS Item Title")] + public void Constructor_CreateDSItemWithExpectedFields_WithTitleAndDataSource(string dSTitle, string dSItemTitle, string expectedDSTitle, string expectedDSItemTitle) + { + // Arrange + var dataSource = new DataSource () { Title = dSTitle }; + + // Act + var dataSourceItem = new MicrosoftAzureSqlServerDataSourceItem(dSItemTitle, dataSource); + + // Assert + Assert.Equal(expectedDSItemTitle, dataSourceItem.Title); + Assert.Equal(dataSource.Id, dataSourceItem.DataSource.Id); + Assert.Equal(dataSource.Id, dataSourceItem.DataSourceId); + Assert.Equal(expectedDSTitle, dataSourceItem.DataSource.Title); + Assert.NotSame(dataSource, dataSourceItem.DataSource); + Assert.IsType(dataSourceItem.DataSource); } } } diff --git a/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs b/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs index 75e3f4d0..e700e89d 100644 --- a/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs +++ b/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs @@ -1,10 +1,5 @@ using Reveal.Sdk.Dom.Core.Extensions; using Reveal.Sdk.Dom.Data; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Xunit; namespace Reveal.Sdk.Dom.Tests.Data.DataSources @@ -22,7 +17,7 @@ public void Constructor_SetProviderToMicrosoftAzureSqlServer_WhenConstructed() } [Fact] - public void TrustServerCertificate_SaveValueAndProperties_WhenSet() + public void GetTrustServerCertificate_ReturnSameValue_WhenSet() { // Arrange var dataSource = new MicrosoftAzureSqlServerDataSource(); diff --git a/src/Reveal.Sdk.Dom/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItem.cs b/src/Reveal.Sdk.Dom/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItem.cs index e9e8a927..d242c6eb 100644 --- a/src/Reveal.Sdk.Dom/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItem.cs +++ b/src/Reveal.Sdk.Dom/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItem.cs @@ -1,9 +1,22 @@ namespace Reveal.Sdk.Dom.Data { - internal class MicrosoftAzureSqlServerDataSourceItem : MicrosoftSqlServerDataSourceItem + public class MicrosoftAzureSqlServerDataSourceItem : MicrosoftSqlServerDataSourceItem { public MicrosoftAzureSqlServerDataSourceItem(string title, DataSource dataSource) : base(title, dataSource) { } + + public MicrosoftAzureSqlServerDataSourceItem(string title, MicrosoftAzureSqlServerDataSource dataSource) : + base(title, dataSource) + { } + + public MicrosoftAzureSqlServerDataSourceItem(string title) : + base(title, new MicrosoftAzureSqlServerDataSource()) + { } + + protected override DataSource CreateDataSourceInstance(DataSource dataSource) + { + return Create(dataSource); + } } } diff --git a/src/Reveal.Sdk.Dom/Data/DataSources/MicrosoftAzureSqlServerDataSource.cs b/src/Reveal.Sdk.Dom/Data/DataSources/MicrosoftAzureSqlServerDataSource.cs index 2c3d45d2..b94126f8 100644 --- a/src/Reveal.Sdk.Dom/Data/DataSources/MicrosoftAzureSqlServerDataSource.cs +++ b/src/Reveal.Sdk.Dom/Data/DataSources/MicrosoftAzureSqlServerDataSource.cs @@ -3,7 +3,7 @@ namespace Reveal.Sdk.Dom.Data { - internal class MicrosoftAzureSqlServerDataSource : MicrosoftSqlServerDataSource + public class MicrosoftAzureSqlServerDataSource : MicrosoftSqlServerDataSource { public MicrosoftAzureSqlServerDataSource() { From 5288c934132c955516e57ae07ece70132ff0f8ce Mon Sep 17 00:00:00 2001 From: Viktor Date: Tue, 10 Dec 2024 15:10:40 +0700 Subject: [PATCH 2/6] Create sandbox example for MS Azure Sql Data Source Item --- .../MSAzureSqlServerDSDashboard.cs | 49 +++++++++++++++++++ e2e/Sandbox/MainWindow.xaml.cs | 2 + e2e/Sandbox/Reveal/AuthenticationProvider.cs | 7 ++- 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs diff --git a/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs b/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs new file mode 100644 index 00000000..e9865a32 --- /dev/null +++ b/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs @@ -0,0 +1,49 @@ +using Reveal.Sdk.Dom; +using Reveal.Sdk.Dom.Data; +using Reveal.Sdk.Dom.Visualizations; +using Sandbox.DashboardFactories; +using System.Collections.Generic; + +namespace Sandbox.DashboardCreators +{ + public class MSAzureSqlServerDSDashboard : IDashboardCreator + { + public string Name => "MS Azure Sql Server"; + + public RdashDocument CreateDashboard() + { + var document = new RdashDocument("MS Azure Sql Dashboard"); + + var msAzureSqlDS = new MicrosoftAzureSqlServerDataSource() + { + Id = "MSAzureSqlId", + Title = "Microsoft Azure Sql Server Data Source", + Subtitle = "MS Azure Sql Server DS Subtitle", + Database = "reveal", + DefaultRefreshRate = "180", + Encrypt = false, + Host = "revealtesting.database.windows.net", + Port = 1433, + TrustServerCertificate = false + }; + + var msAzureSqlDSItem = new MicrosoftAzureSqlServerDataSourceItem("Microsoft Azure Sql Data Source Item", msAzureSqlDS) + { + Id = "MSAzureSqlItemId", + Title = "Microsoft Azure Sql Server Data Source Item", + Subtitle = "MS Azure Sql Server DSI Subtitle", + Table = "Customers", + Fields = new List() + { + new TextField("City"), + new TextField("CustomerID"), + } + }; + + document.Visualizations.Add(new GridVisualization("Customers in France", msAzureSqlDSItem) + .SetColumns("CustomerID", "City")); + + return document; + } + } +} diff --git a/e2e/Sandbox/MainWindow.xaml.cs b/e2e/Sandbox/MainWindow.xaml.cs index 1992d24c..869ae5b2 100644 --- a/e2e/Sandbox/MainWindow.xaml.cs +++ b/e2e/Sandbox/MainWindow.xaml.cs @@ -22,6 +22,7 @@ using Reveal.Sdk.Data.Rest; using Reveal.Sdk.Data.Snowflake; using Reveal.Sdk.Dom; +using Sandbox.DashboardCreators; using Sandbox.DashboardFactories; using Sandbox.RevealSDK; using System; @@ -48,6 +49,7 @@ public partial class MainWindow : Window new HealthcareDashboard(), new ManufacturingDashboard(), new MarketingDashboard(), + new MSAzureSqlServerDSDashboard(), new RestDataSourceDashboard(), new SalesDashboard(), new SqlServerDataSourceDashboards(), diff --git a/e2e/Sandbox/Reveal/AuthenticationProvider.cs b/e2e/Sandbox/Reveal/AuthenticationProvider.cs index 07e9fce2..d7cbc4af 100644 --- a/e2e/Sandbox/Reveal/AuthenticationProvider.cs +++ b/e2e/Sandbox/Reveal/AuthenticationProvider.cs @@ -10,7 +10,11 @@ internal class AuthenticationProvider : IRVAuthenticationProvider public Task ResolveCredentialsAsync(RVDashboardDataSource dataSource) { IRVDataSourceCredential userCredential = null; - if (dataSource is RVSqlServerDataSource) + if (dataSource is RVAzureSqlDataSource) + { + userCredential = new RVUsernamePasswordDataSourceCredential("azure-username", "password"); + } + else if (dataSource is RVSqlServerDataSource) { userCredential = new RVUsernamePasswordDataSourceCredential(); } @@ -18,6 +22,7 @@ public Task ResolveCredentialsAsync(RVDashboardDataSour { userCredential = new RVUsernamePasswordDataSourceCredential("username", "password", "domain"); } + return Task.FromResult(userCredential); } } From 0a819120ed0293e71e177c28beb66d282a17a140 Mon Sep 17 00:00:00 2001 From: Viktor Date: Mon, 9 Dec 2024 15:37:28 +0700 Subject: [PATCH 3/6] Update namspace for auzre sql example --- e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs | 3 +-- e2e/Sandbox/MainWindow.xaml.cs | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs b/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs index e9865a32..cd6cb8db 100644 --- a/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs +++ b/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs @@ -1,10 +1,9 @@ using Reveal.Sdk.Dom; using Reveal.Sdk.Dom.Data; using Reveal.Sdk.Dom.Visualizations; -using Sandbox.DashboardFactories; using System.Collections.Generic; -namespace Sandbox.DashboardCreators +namespace Sandbox.DashboardFactories { public class MSAzureSqlServerDSDashboard : IDashboardCreator { diff --git a/e2e/Sandbox/MainWindow.xaml.cs b/e2e/Sandbox/MainWindow.xaml.cs index 869ae5b2..1a288b18 100644 --- a/e2e/Sandbox/MainWindow.xaml.cs +++ b/e2e/Sandbox/MainWindow.xaml.cs @@ -22,7 +22,6 @@ using Reveal.Sdk.Data.Rest; using Reveal.Sdk.Data.Snowflake; using Reveal.Sdk.Dom; -using Sandbox.DashboardCreators; using Sandbox.DashboardFactories; using Sandbox.RevealSDK; using System; From 597afb79085b0010b2a12fd8bee648b9b77ad984 Mon Sep 17 00:00:00 2001 From: Viktor Date: Mon, 9 Dec 2024 16:43:15 +0700 Subject: [PATCH 4/6] Add unit tests for to JSON string --- ...softAzureSqlServerDataSourceItemFixture.cs | 47 ++++++++++++++++- ...icrosoftAzureSqlServerDataSourceFixture.cs | 51 ++++++++++++++++++- 2 files changed, 96 insertions(+), 2 deletions(-) diff --git a/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs b/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs index 5ee572e7..555717ae 100644 --- a/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs +++ b/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs @@ -1,4 +1,5 @@ -using Reveal.Sdk.Dom.Data; +using Newtonsoft.Json.Linq; +using Reveal.Sdk.Dom.Data; using Xunit; namespace Reveal.Sdk.Dom.Tests.Data.DataSourceItems @@ -59,5 +60,49 @@ public void Constructor_CreateDSItemWithExpectedFields_WithTitleAndDataSource(st Assert.NotSame(dataSource, dataSourceItem.DataSource); Assert.IsType(dataSourceItem.DataSource); } + + [Fact] + public void ToJsonString_CreateExpectedRevealJson_NoConditions() + { + // Arrange + var expectedJson = @"{ + ""_type"": ""DataSourceItemType"", + ""Id"": ""azureSqlDsItemId"", + ""Title"": ""Azure SQL DSItem"", + ""Subtitle"": ""Azure SQL DS Item SubTitle"", + ""DataSourceId"": ""azureSqlId"", + ""HasTabularData"": true, + ""HasAsset"": false, + ""Properties"": { + ""ServerAggregation"": true, + ""Database"": ""reveal"", + ""Table"": ""Categories"" + }, + ""Parameters"": {} + }"; + var dataSource = new MicrosoftAzureSqlServerDataSource() + { + Id = "azureSqlId" + }; + var dataSourceItem = new MicrosoftAzureSqlServerDataSourceItem("Azure SQL DSItem", dataSource) + { + Id = "azureSqlDsItemId", + Subtitle = "Azure SQL DS Item SubTitle", + HasTabularData = true, + HasAsset = false, + ProcessDataOnServer = true, + Database = "reveal", + Table = "Categories" + //DefaultRefreshRate = "161" // TODO: Check the DefaultRefreshRate when get Json, after DefaultRefreshRate is moved to Settings field + }; + + // Act + var json = dataSourceItem.ToJsonString(); + var expectedJObject = JObject.Parse(expectedJson); + var actualJObject = JObject.Parse(json); + + // Assert + Assert.Equal(expectedJObject, actualJObject); + } } } diff --git a/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs b/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs index e700e89d..16911a15 100644 --- a/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs +++ b/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs @@ -1,4 +1,5 @@ -using Reveal.Sdk.Dom.Core.Extensions; +using Newtonsoft.Json.Linq; +using Reveal.Sdk.Dom.Core.Extensions; using Reveal.Sdk.Dom.Data; using Xunit; @@ -30,5 +31,53 @@ public void GetTrustServerCertificate_ReturnSameValue_WhenSet() Assert.Equal(trustServerCertificate, dataSource.TrustServerCertificate); Assert.Equal(trustServerCertificate, dataSource.Properties.GetValue("TrustServerCertificate")); } + + [Fact] + public void ToJsonString_CreateExpectedRevealJson_NoConditions() + { + // Arrange + var expectedJson = @"{ + ""_type"": ""DataSourceType"", + ""Id"": ""azureSqlId"", + ""Provider"": ""AZURE_SQL"", + ""Description"": ""Azure SQL DS"", + ""Subtitle"": ""Azure SQL DS Item"", + ""Properties"": { + ""ServerAggregationDefault"": false, + ""ServerAggregationReadOnly"": true, + ""Host"": ""revealtesting.database.windows.net"", + ""Port"": 1433, + ""Database"": ""reveal"", + ""Schema"": ""azureSchema"", + ""TrustServerCertificate"": false, + ""Encrypt"": false + }, + + }"; + var dataSource = new MicrosoftAzureSqlServerDataSource() + { + Id = "azureSqlId", + Title = "Azure SQL DS", + Subtitle = "Azure SQL DS Item", + ProcessDataOnServerDefaultValue = false, + ProcessDataOnServerReadOnly = true, + Host = "revealtesting.database.windows.net", + Port = 1433, + Database = "reveal", + Schema = "azureSchema", + TrustServerCertificate = false, + Encrypt = false, + //DefaultRefreshRate = "161" // TODO: Check the DefaultRefreshRate when get Json, after DefaultRefreshRate is moved to Settings field + }; + + // Act + var json = dataSource.ToJsonString(); + var expectedJObject = JObject.Parse(expectedJson); + var actualJObject = JObject.Parse(json); + + // Assert + Assert.Equal(expectedJObject, actualJObject); + } } } + \ No newline at end of file From 12b0452df21da1a73445b5704dfe73c8094c31e7 Mon Sep 17 00:00:00 2001 From: Viktor Date: Wed, 11 Dec 2024 14:11:52 +0700 Subject: [PATCH 5/6] Fix failed unit tests --- ...softAzureSqlServerDataSourceItemFixture.cs | 3 +- ...icrosoftAzureSqlServerDataSourceFixture.cs | 43 ++++++++++--------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs b/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs index 555717ae..abcfdd08 100644 --- a/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs +++ b/src/Reveal.Sdk.Dom.Tests/Data/DataSourceItems/MicrosoftAzureSqlServerDataSourceItemFixture.cs @@ -92,8 +92,7 @@ public void ToJsonString_CreateExpectedRevealJson_NoConditions() HasAsset = false, ProcessDataOnServer = true, Database = "reveal", - Table = "Categories" - //DefaultRefreshRate = "161" // TODO: Check the DefaultRefreshRate when get Json, after DefaultRefreshRate is moved to Settings field + Table = "Categories", }; // Act diff --git a/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs b/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs index 16911a15..dd912ec6 100644 --- a/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs +++ b/src/Reveal.Sdk.Dom.Tests/Data/DataSources/MicrosoftAzureSqlServerDataSourceFixture.cs @@ -36,24 +36,28 @@ public void GetTrustServerCertificate_ReturnSameValue_WhenSet() public void ToJsonString_CreateExpectedRevealJson_NoConditions() { // Arrange - var expectedJson = @"{ - ""_type"": ""DataSourceType"", - ""Id"": ""azureSqlId"", - ""Provider"": ""AZURE_SQL"", - ""Description"": ""Azure SQL DS"", - ""Subtitle"": ""Azure SQL DS Item"", - ""Properties"": { - ""ServerAggregationDefault"": false, - ""ServerAggregationReadOnly"": true, - ""Host"": ""revealtesting.database.windows.net"", - ""Port"": 1433, - ""Database"": ""reveal"", - ""Schema"": ""azureSchema"", - ""TrustServerCertificate"": false, - ""Encrypt"": false + var expectedJson = """ + { + "_type": "DataSourceType", + "Id": "azureSqlId", + "Provider": "AZURE_SQL", + "Description": "Azure SQL DS", + "Subtitle": "Azure SQL DS Item", + "Properties": { + "ServerAggregationDefault": false, + "ServerAggregationReadOnly": true, + "Host": "revealtesting.database.windows.net", + "Port": 1433, + "Database": "reveal", + "Schema": "azureSchema", + "TrustServerCertificate": false, + "Encrypt": false }, - - }"; + "Settings": { + "DefaultRefreshRate": 180 + } + } + """; var dataSource = new MicrosoftAzureSqlServerDataSource() { Id = "azureSqlId", @@ -67,7 +71,7 @@ public void ToJsonString_CreateExpectedRevealJson_NoConditions() Schema = "azureSchema", TrustServerCertificate = false, Encrypt = false, - //DefaultRefreshRate = "161" // TODO: Check the DefaultRefreshRate when get Json, after DefaultRefreshRate is moved to Settings field + DefaultRefreshRate = "180" }; // Act @@ -79,5 +83,4 @@ public void ToJsonString_CreateExpectedRevealJson_NoConditions() Assert.Equal(expectedJObject, actualJObject); } } -} - \ No newline at end of file +} From 65096190ad173705ea9bb06dda20c9cc408be1ce Mon Sep 17 00:00:00 2001 From: Viktor Date: Wed, 11 Dec 2024 16:30:06 +0700 Subject: [PATCH 6/6] Keep sandbox example class internal --- e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs b/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs index cd6cb8db..b94cafa6 100644 --- a/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs +++ b/e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs @@ -5,7 +5,7 @@ namespace Sandbox.DashboardFactories { - public class MSAzureSqlServerDSDashboard : IDashboardCreator + internal class MSAzureSqlServerDSDashboard : IDashboardCreator { public string Name => "MS Azure Sql Server";