|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
using System.Collections.Generic;
using Xunit;
namespace Microsoft.Extensions.ApiDescription.Client;
public class GetCurrentOpenApiReferenceTest
{
[Fact]
public void Execute_ReturnsExpectedItem()
{
// Arrange
var input = "Identity=../files/azureMonitor.json|ClassName=azureMonitorClient|" +
"CodeGenerator=NSwagCSharp|Namespace=ConsoleClient|Options=|OutputPath=" +
"C:\\dd\\dnx\\AspNetCore\\artifacts\\obj\\ConsoleClient\\azureMonitorClient.cs|" +
"OriginalItemSpec=../files/azureMonitor.json|FirstForGenerator=true";
var task = new GetCurrentOpenApiReference
{
Input = input,
};
var expectedIdentity = "../files/azureMonitor.json";
var expectedMetadata = new SortedDictionary<string, string>(StringComparer.Ordinal)
{
{ "ClassName", "azureMonitorClient" },
{ "CodeGenerator", "NSwagCSharp" },
{ "FirstForGenerator", "true" },
{ "Namespace", "ConsoleClient" },
{ "Options", "" },
{ "OriginalItemSpec", expectedIdentity },
{ "OutputPath", "C:\\dd\\dnx\\AspNetCore\\artifacts\\obj\\ConsoleClient\\azureMonitorClient.cs" },
};
// Act
var result = task.Execute();
// Assert
Assert.True(result);
Assert.False(task.Log.HasLoggedErrors);
var output = Assert.Single(task.Outputs);
Assert.Equal(expectedIdentity, output.ItemSpec);
var metadata = Assert.IsAssignableFrom<IDictionary<string, string>>(output.CloneCustomMetadata());
// The dictionary CloneCustomMetadata returns doesn't provide a useful KeyValuePair enumerator.
var orderedMetadata = new SortedDictionary<string, string>(StringComparer.Ordinal);
foreach (var key in metadata.Keys)
{
orderedMetadata.Add(key, metadata[key]);
}
Assert.Equal(expectedMetadata, orderedMetadata);
}
}
|