File: ApplicationModels\ApiVisibilityConventionTest.cs
Web Access
Project: src\src\Mvc\Mvc.Core\test\Microsoft.AspNetCore.Mvc.Core.Test.csproj (Microsoft.AspNetCore.Mvc.Core.Test)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Reflection;
 
namespace Microsoft.AspNetCore.Mvc.ApplicationModels;
 
public class ApiVisibilityConventionTest
{
    [Fact]
    public void Apply_SetsApiExplorerVisibility()
    {
        // Arrange
        var action = GetActionModel();
        var convention = new ApiVisibilityConvention();
 
        // Act
        convention.Apply(action);
 
        // Assert
        Assert.True(action.ApiExplorer.IsVisible);
    }
 
    [Fact]
    public void Apply_DoesNotSetApiExplorerVisibility_IfAlreadySpecifiedOnAction()
    {
        // Arrange
        var action = GetActionModel();
        action.ApiExplorer.IsVisible = false;
        var convention = new ApiVisibilityConvention();
 
        // Act
        convention.Apply(action);
 
        // Assert
        Assert.False(action.ApiExplorer.IsVisible);
    }
 
    [Fact]
    public void Apply_DoesNotSetApiExplorerVisibility_IfAlreadySpecifiedOnController()
    {
        // Arrange
        var action = GetActionModel();
        action.Controller.ApiExplorer.IsVisible = false;
        var convention = new ApiVisibilityConvention();
 
        // Act
        convention.Apply(action);
 
        // Assert
        Assert.Null(action.ApiExplorer.IsVisible);
    }
 
    private static ActionModel GetActionModel()
    {
        return new ActionModel(typeof(object).GetMethods()[0], new object[0])
        {
            Controller = new ControllerModel(typeof(object).GetTypeInfo(), new object[0]),
        };
    }
}