File: JsonPatchOperationsArrayProviderTests.cs
Web Access
Project: src\src\Mvc\Mvc.NewtonsoftJson\test\Microsoft.AspNetCore.Mvc.NewtonsoftJson.Test.csproj (Microsoft.AspNetCore.Mvc.NewtonsoftJson.Test)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.JsonPatch;
using Microsoft.AspNetCore.JsonPatch.Operations;
using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.AspNetCore.Mvc.ApiExplorer;
using Microsoft.AspNetCore.Mvc.ModelBinding;
 
namespace Microsoft.AspNetCore.Mvc.NewtonsoftJson;
 
public class JsonPatchOperationsArrayProviderTests
{
    [Fact]
    public void OnProvidersExecuting_FindsJsonPatchDocuments_ProvidesOperationsArray()
    {
        // Arrange
        var metadataProvider = new TestModelMetadataProvider();
        var provider = new JsonPatchOperationsArrayProvider(metadataProvider);
        var jsonPatchParameterDescription = new ApiParameterDescription
        {
            Type = typeof(JsonPatchDocument)
        };
 
        var stringParameterDescription = new ApiParameterDescription
        {
            Type = typeof(string),
        };
 
        var apiDescription = new ApiDescription();
        apiDescription.ParameterDescriptions.Add(jsonPatchParameterDescription);
        apiDescription.ParameterDescriptions.Add(stringParameterDescription);
 
        var actionDescriptorList = new List<ActionDescriptor>();
        var apiDescriptionProviderContext = new ApiDescriptionProviderContext(actionDescriptorList);
        apiDescriptionProviderContext.Results.Add(apiDescription);
 
        // Act
        provider.OnProvidersExecuting(apiDescriptionProviderContext);
 
        // Assert
        Assert.Collection(apiDescription.ParameterDescriptions,
            description =>
            {
                Assert.Equal(typeof(Operation[]), description.Type);
                Assert.Equal(typeof(Operation[]), description.ModelMetadata.ModelType);
            },
            description =>
            {
                Assert.Equal(typeof(string), description.Type);
            });
    }
}