aspnetcore/test/Microsoft.AspNetCore.Mvc.Fo.../SerializableErrorWrapperPro...

57 lines
1.9 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 Microsoft.AspNetCore.Testing;
using Xunit;
namespace Microsoft.AspNetCore.Mvc.Formatters.Xml
{
public class SerializableErrorWrapperProviderTest
{
[Theory]
[InlineData(true)]
[InlineData(false)]
public void Gets_SerializableErrorWrapper_AsWrappingType(bool isSerialization)
{
// Arrange
var wrapperProvider = new SerializableErrorWrapperProvider();
// Act and Assert
Assert.Equal(typeof(SerializableErrorWrapper), wrapperProvider.WrappingType);
}
[Fact]
public void Wraps_SerializableErrorInstance()
{
// Arrange
var wrapperProvider = new SerializableErrorWrapperProvider();
var serializableError = new SerializableError();
// Act
var wrapped = wrapperProvider.Wrap(serializableError);
// Assert
Assert.NotNull(wrapped);
var errorWrapper = wrapped as SerializableErrorWrapper;
Assert.NotNull(errorWrapper);
Assert.Same(serializableError, errorWrapper.SerializableError);
}
[Fact]
public void ThrowsExceptionOn_NonSerializableErrorInstances()
{
// Arrange
var wrapperProvider = new SerializableErrorWrapperProvider();
var person = new Person() { Id = 10, Name = "John" };
var expectedMessage = "The object to be wrapped must be of type " +
$"'{nameof(SerializableErrorWrapper)}' but was of type 'Person'.";
// Act and Assert
ExceptionAssert.ThrowsArgument(
() => wrapperProvider.Wrap(person),
"original",
expectedMessage);
}
}
}