Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MS Azure Sql Data Source #143

Merged
merged 7 commits into from
Dec 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions e2e/Sandbox/DashboardCreators/MSAzureSqlServerDSDashboard.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
using Reveal.Sdk.Dom;
using Reveal.Sdk.Dom.Data;
using Reveal.Sdk.Dom.Visualizations;
using System.Collections.Generic;

namespace Sandbox.DashboardFactories
{
internal 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<IField>()
{
new TextField("City"),
new TextField("CustomerID"),
}
};

document.Visualizations.Add(new GridVisualization("Customers in France", msAzureSqlDSItem)
.SetColumns("CustomerID", "City"));

return document;
}
}
}
1 change: 1 addition & 0 deletions e2e/Sandbox/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public partial class MainWindow : Window
new HealthcareDashboard(),
new ManufacturingDashboard(),
new MarketingDashboard(),
new MSAzureSqlServerDSDashboard(),
new PostgresqlDashboard(),
new RestDataSourceDashboard(),
new SalesDashboard(),
Expand Down
6 changes: 5 additions & 1 deletion e2e/Sandbox/Reveal/AuthenticationProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ internal class AuthenticationProvider : IRVAuthenticationProvider
public Task<IRVDataSourceCredential> 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();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
using Reveal.Sdk.Dom.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using Reveal.Sdk.Dom.Data;
using Xunit;

namespace Reveal.Sdk.Dom.Tests.Data.DataSourceItems
Expand All @@ -13,7 +9,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 };
Expand All @@ -23,11 +19,89 @@ 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<MicrosoftAzureSqlServerDataSource>(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<MicrosoftAzureSqlServerDataSource>(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",
};

// Act
var json = dataSourceItem.ToJsonString();
var expectedJObject = JObject.Parse(expectedJson);
var actualJObject = JObject.Parse(json);

// Assert
Assert.Equal(expectedJObject, actualJObject);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
using Reveal.Sdk.Dom.Core.Extensions;
using Newtonsoft.Json.Linq;
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
Expand All @@ -22,7 +18,7 @@ public void Constructor_SetProviderToMicrosoftAzureSqlServer_WhenConstructed()
}

[Fact]
public void TrustServerCertificate_SaveValueAndProperties_WhenSet()
public void GetTrustServerCertificate_ReturnSameValue_WhenSet()
{
// Arrange
var dataSource = new MicrosoftAzureSqlServerDataSource();
Expand All @@ -35,5 +31,56 @@ public void TrustServerCertificate_SaveValueAndProperties_WhenSet()
Assert.Equal(trustServerCertificate, dataSource.TrustServerCertificate);
Assert.Equal(trustServerCertificate, dataSource.Properties.GetValue<bool>("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
},
"Settings": {
"DefaultRefreshRate": 180
}
}
""";
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 = "180"
};

// Act
var json = dataSource.ToJsonString();
var expectedJObject = JObject.Parse(expectedJson);
var actualJObject = JObject.Parse(json);

// Assert
Assert.Equal(expectedJObject, actualJObject);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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<MicrosoftAzureSqlServerDataSource>(dataSource);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace Reveal.Sdk.Dom.Data
{
internal class MicrosoftAzureSqlServerDataSource : MicrosoftSqlServerDataSource
public class MicrosoftAzureSqlServerDataSource : MicrosoftSqlServerDataSource
{
public MicrosoftAzureSqlServerDataSource()
{
Expand Down
Loading