diff --git a/.gitignore b/.gitignore index 4923c6e..3bbada4 100644 --- a/.gitignore +++ b/.gitignore @@ -352,4 +352,5 @@ healthchecksdb MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder -.ionide/ \ No newline at end of file +.ionide/ +.idea diff --git a/src/AzureMapsControl.Components/Map/AzureMap.razor b/src/AzureMapsControl.Components/Map/AzureMap.razor index a77ceda..e8a68e6 100644 --- a/src/AzureMapsControl.Components/Map/AzureMap.razor +++ b/src/AzureMapsControl.Components/Map/AzureMap.razor @@ -13,7 +13,7 @@ @inject IMapJsRuntime JSRuntime @inject Microsoft.Extensions.Logging.ILogger Logger -
+
@code { @@ -61,6 +61,12 @@ set { if (string.IsNullOrWhiteSpace(value)) { throw new ArgumentException("ID on the map is mandatory"); } _id = value; } } + /// + /// The class of the map component to allow styling + /// + [Parameter] + public string Class { get; set; } = string.Empty; + /// /// Defines the events which needs to be activated /// diff --git a/tests/AzureMapsControl.Components.Tests/Map/AzureMap.cs b/tests/AzureMapsControl.Components.Tests/Map/AzureMap.cs index 42cac41..792c68a 100644 --- a/tests/AzureMapsControl.Components.Tests/Map/AzureMap.cs +++ b/tests/AzureMapsControl.Components.Tests/Map/AzureMap.cs @@ -57,42 +57,76 @@ public void RegisterServices() public class AzureMapTests : IClassFixture { - private readonly AzureMapFixture _fixture; - public AzureMapTests(AzureMapFixture fixture) => _fixture = fixture; - [Fact] public void Should_DisplayDivWithId() { - using (_fixture) + using (var fixture = new AzureMapFixture()) { const string mapId = "mapID"; - _fixture.Configuration.AadAppId = "aadAppId"; + fixture.Configuration.AadAppId = "aadAppId"; - _fixture.Configuration.AadTenant = "aadTenant"; - _fixture.Configuration.ClientId = "clientId"; - _fixture.Configuration.SubscriptionKey = "subscriptionKey"; + fixture.Configuration.AadTenant = "aadTenant"; + fixture.Configuration.ClientId = "clientId"; + fixture.Configuration.SubscriptionKey = "subscriptionKey"; - _fixture.RegisterServices(); + fixture.RegisterServices(); - var map = _fixture.TestContext.RenderComponent(ComponentParameter.CreateParameter("Id", mapId)); + var map = fixture.TestContext.RenderComponent(ComponentParameter.CreateParameter("Id", mapId)); var mapElem = map.Find("div"); Assert.Equal(mapId, mapElem.Attributes["id"].Value); - _fixture.JsRuntime.Verify(runtime => runtime.InvokeVoidAsync(Constants.JsConstants.Methods.Core.AddMap.ToCoreNamespace(), It.Is(parameters => + fixture.JsRuntime.Verify(runtime => runtime.InvokeVoidAsync(Constants.JsConstants.Methods.Core.AddMap.ToCoreNamespace(), It.Is(parameters => + parameters.Length == 5 + && parameters[0] as string == mapId + && (parameters[1] as AzureMapsConfiguration).AadAppId == fixture.Configuration.AadAppId + && (parameters[1] as AzureMapsConfiguration).AadTenant == fixture.Configuration.AadTenant + && (parameters[1] as AzureMapsConfiguration).ClientId == fixture.Configuration.ClientId + && (parameters[1] as AzureMapsConfiguration).SubscriptionKey == fixture.Configuration.SubscriptionKey + && parameters[2] != null && parameters[2] is ServiceOptions + && (parameters[3] as IEnumerable).Single() == MapEventType.Ready.ToString() + && parameters[4] != null && parameters[4] is DotNetObjectReference + )), Times.Once); + fixture.JsRuntime.VerifyNoOtherCalls(); + } + } + + [Fact] + public void Should_DisplayDivWithClass() + { + using (var fixture = new AzureMapFixture()) + { + const string classes = "my-class-identifier other-class-identifier"; + const string mapId = "mapID"; + + fixture.Configuration.AadAppId = "aadAppId"; + + fixture.Configuration.AadTenant = "aadTenant"; + fixture.Configuration.ClientId = "clientId"; + fixture.Configuration.SubscriptionKey = "subscriptionKey"; + + fixture.RegisterServices(); + + var map = fixture.TestContext.RenderComponent(ComponentParameter.CreateParameter("Id", mapId), ComponentParameter.CreateParameter("Class", classes)); + + var mapElem = map.Find("div"); + + Assert.Equal(classes, mapElem.Attributes["class"].Value); + + fixture.JsRuntime.Verify(runtime => runtime.InvokeVoidAsync(Constants.JsConstants.Methods.Core.AddMap.ToCoreNamespace(), It.Is(parameters => parameters.Length == 5 && parameters[0] as string == mapId - && (parameters[1] as AzureMapsConfiguration).AadAppId == _fixture.Configuration.AadAppId - && (parameters[1] as AzureMapsConfiguration).AadTenant == _fixture.Configuration.AadTenant - && (parameters[1] as AzureMapsConfiguration).ClientId == _fixture.Configuration.ClientId - && (parameters[1] as AzureMapsConfiguration).SubscriptionKey == _fixture.Configuration.SubscriptionKey + && (parameters[1] as AzureMapsConfiguration).AadAppId == fixture.Configuration.AadAppId + && (parameters[1] as AzureMapsConfiguration).AadTenant == fixture.Configuration.AadTenant + && (parameters[1] as AzureMapsConfiguration).ClientId == fixture.Configuration.ClientId + && (parameters[1] as AzureMapsConfiguration).SubscriptionKey == fixture.Configuration.SubscriptionKey && parameters[2] != null && parameters[2] is ServiceOptions && (parameters[3] as IEnumerable).Single() == MapEventType.Ready.ToString() && parameters[4] != null && parameters[4] is DotNetObjectReference )), Times.Once); - _fixture.JsRuntime.VerifyNoOtherCalls(); + fixture.JsRuntime.VerifyNoOtherCalls(); } } }