aspnetcore/test/Microsoft.AspNetCore.Mvc.Ra.../Compilation/MetadataReferenceFeaturePro...

52 lines
2.0 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Reflection;
using Microsoft.AspNetCore.Mvc.ApplicationParts;
using Moq;
using Xunit;
namespace Microsoft.AspNetCore.Mvc.Razor.Compilation
{
public class MetadataReferenceFeatureProviderTest
{
[Fact]
public void PopulateFeature_ReturnsEmptyList_IfNoAssemblyPartsAreRegistered()
{
// Arrange
var applicationPartManager = new ApplicationPartManager();
applicationPartManager.ApplicationParts.Add(Mock.Of<ApplicationPart>());
applicationPartManager.FeatureProviders.Add(new MetadataReferenceFeatureProvider());
var feature = new MetadataReferenceFeature();
// Act
applicationPartManager.PopulateFeature(feature);
// Assert
Assert.Empty(feature.MetadataReferences);
}
[Fact]
public void PopulateFeature_AddsMetadataReferenceForAssemblyPartsWithDependencyContext()
{
// Arrange
var applicationPartManager = new ApplicationPartManager();
var currentAssembly = GetType().GetTypeInfo().Assembly;
var assemblyPart1 = new AssemblyPart(currentAssembly);
applicationPartManager.ApplicationParts.Add(assemblyPart1);
var assemblyPart2 = new AssemblyPart(typeof(MetadataReferenceFeatureProvider).GetTypeInfo().Assembly);
applicationPartManager.ApplicationParts.Add(assemblyPart2);
applicationPartManager.FeatureProviders.Add(new MetadataReferenceFeatureProvider());
var feature = new MetadataReferenceFeature();
// Act
applicationPartManager.PopulateFeature(feature);
// Assert
Assert.Contains(
feature.MetadataReferences,
reference => reference.Display.Equals(currentAssembly.Location));
}
}
}