82 lines
2.6 KiB
C#
82 lines
2.6 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.Mvc.ModelBinding;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.AspNetCore.Mvc
|
|
{
|
|
public class SerializableErrorTests
|
|
{
|
|
[Fact]
|
|
public void ConvertsModelState_To_Dictionary()
|
|
{
|
|
// Arrange
|
|
var modelState = new ModelStateDictionary();
|
|
modelState.AddModelError("key1", "Test Error 1");
|
|
modelState.AddModelError("key1", "Test Error 2");
|
|
modelState.AddModelError("key2", "Test Error 3");
|
|
|
|
// Act
|
|
var serializableError = new SerializableError(modelState);
|
|
|
|
// Assert
|
|
var arr = Assert.IsType<string[]>(serializableError["key1"]);
|
|
Assert.Equal("Test Error 1", arr[0]);
|
|
Assert.Equal("Test Error 2", arr[1]);
|
|
Assert.Equal("Test Error 3", (serializableError["key2"] as string[])[0]);
|
|
}
|
|
|
|
[Fact]
|
|
public void LookupIsCaseInsensitive()
|
|
{
|
|
// Arrange
|
|
var modelState = new ModelStateDictionary();
|
|
modelState.AddModelError("key1", "x");
|
|
|
|
// Act
|
|
var serializableError = new SerializableError(modelState);
|
|
|
|
// Assert
|
|
var arr = Assert.IsType<string[]>(serializableError["KEY1"]);
|
|
Assert.Equal("x", arr[0]);
|
|
}
|
|
|
|
[Fact]
|
|
public void ConvertsModelState_To_Dictionary_AddsDefaultValuesWhenErrorsAreAbsent()
|
|
{
|
|
// Arrange
|
|
var modelState = new ModelStateDictionary();
|
|
modelState.AddModelError("key1", "");
|
|
|
|
// Act
|
|
var serializableError = new SerializableError(modelState);
|
|
|
|
// Assert
|
|
var arr = Assert.IsType<string[]>(serializableError["key1"]);
|
|
Assert.Equal("The input was not valid.", arr[0]);
|
|
}
|
|
|
|
[Fact]
|
|
public void DoesNotThrowOnValidModelState()
|
|
{
|
|
// Arrange, Act & Assert (does not throw)
|
|
new SerializableError(new ModelStateDictionary());
|
|
}
|
|
|
|
[Fact]
|
|
public void DoesNotAddEntries_IfNoErrorsArePresent()
|
|
{
|
|
// Arrange
|
|
var modelState = new ModelStateDictionary();
|
|
modelState.SetModelValue("key1", "value1", "value1");
|
|
modelState.SetModelValue("key2", "value2", "value2");
|
|
|
|
// Act
|
|
var serializableError = new SerializableError(modelState);
|
|
|
|
// Assert
|
|
Assert.Equal(0, serializableError.Count);
|
|
}
|
|
}
|
|
} |