Skip to content

Commit

Permalink
Add class parameter to allow styling independently from ID (#75)
Browse files Browse the repository at this point in the history
* Add class support to azure maps in order to allow styling and avoid the necessity to use the ID for that since the ID should be unique

* Add solution to facilitate tooling

* add rider files to gitignore

* Update Tests so that a new context is used for each test

* remove solution file as requested by review

Co-authored-by: Simon Ensslen <[email protected]>
  • Loading branch information
sensslen and Simon Ensslen authored Sep 13, 2022
1 parent c252e58 commit 8ec56dc
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 18 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -352,4 +352,5 @@ healthchecksdb
MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/
.ionide/
.idea
8 changes: 7 additions & 1 deletion src/AzureMapsControl.Components/Map/AzureMap.razor
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
@inject IMapJsRuntime JSRuntime
@inject Microsoft.Extensions.Logging.ILogger<AzureMap> Logger

<div id="@Id"></div>
<div id="@Id" class="@Class"></div>

@code {

Expand Down Expand Up @@ -61,6 +61,12 @@
set { if (string.IsNullOrWhiteSpace(value)) { throw new ArgumentException("ID on the map is mandatory"); } _id = value; }
}

/// <summary>
/// The class of the map component to allow styling
/// </summary>
[Parameter]
public string Class { get; set; } = string.Empty;

/// <summary>
/// Defines the events which needs to be activated
/// </summary>
Expand Down
66 changes: 50 additions & 16 deletions tests/AzureMapsControl.Components.Tests/Map/AzureMap.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,42 +57,76 @@ public void RegisterServices()

public class AzureMapTests : IClassFixture<AzureMapFixture>
{
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<AzureMap>(ComponentParameter.CreateParameter("Id", mapId));
var map = fixture.TestContext.RenderComponent<AzureMap>(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<object[]>(parameters =>
fixture.JsRuntime.Verify(runtime => runtime.InvokeVoidAsync(Constants.JsConstants.Methods.Core.AddMap.ToCoreNamespace(), It.Is<object[]>(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<string>).Single() == MapEventType.Ready.ToString()
&& parameters[4] != null && parameters[4] is DotNetObjectReference<MapEventInvokeHelper>
)), 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<AzureMap>(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<object[]>(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<string>).Single() == MapEventType.Ready.ToString()
&& parameters[4] != null && parameters[4] is DotNetObjectReference<MapEventInvokeHelper>
)), Times.Once);
_fixture.JsRuntime.VerifyNoOtherCalls();
fixture.JsRuntime.VerifyNoOtherCalls();
}
}
}
Expand Down

0 comments on commit 8ec56dc

Please sign in to comment.