98 lines
2.3 KiB
C#
98 lines
2.3 KiB
C#
using System;
|
|
using System.Linq;
|
|
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
namespace UnitTests.AspNetCore.Extensions
|
|
{
|
|
[TestClass]
|
|
[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
|
|
public class ModelStateDictionaryExtensionsTests
|
|
{
|
|
private TestModel testModel;
|
|
|
|
[TestInitialize]
|
|
public void InitializeTests()
|
|
{
|
|
testModel = new TestModel
|
|
{
|
|
ValueA = "A",
|
|
ValueB = "B",
|
|
SubModel = new TestSubModel
|
|
{
|
|
SubValueA = "a",
|
|
SubValueB = "b"
|
|
}
|
|
};
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ShouldAddNormalModelError()
|
|
{
|
|
// arrange
|
|
var modelState = new ModelStateDictionary();
|
|
|
|
// act
|
|
modelState.AddModelError(testModel, m => m.ValueA, "ShitHappens");
|
|
|
|
// assert
|
|
Assert.AreEqual(1, modelState.Count);
|
|
Assert.AreEqual("ValueA", modelState.Keys.First());
|
|
Assert.AreEqual("ShitHappens", modelState.Values.First().Errors.First().ErrorMessage);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ShouldAddExtendedModelError()
|
|
{
|
|
// arrange
|
|
var modelState = new ModelStateDictionary();
|
|
|
|
// act
|
|
modelState.AddModelError(testModel, m => m.SubModel.SubValueB, "ShitHappens");
|
|
|
|
// assert
|
|
Assert.AreEqual(1, modelState.Count);
|
|
Assert.AreEqual("SubModel.SubValueB", modelState.Keys.First());
|
|
Assert.AreEqual("ShitHappens", modelState.Values.First().Errors.First().ErrorMessage);
|
|
}
|
|
|
|
[TestMethod]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public void ShouldThrowArgumentNull()
|
|
{
|
|
// arrange
|
|
ModelStateDictionary modelState = null;
|
|
|
|
// act
|
|
modelState.AddModelError(testModel, m => m.SubModel.SubValueB, "ShitHappens");
|
|
}
|
|
|
|
[TestMethod]
|
|
[ExpectedException(typeof(InvalidOperationException))]
|
|
public void ShouldThrowInvalidOperation()
|
|
{
|
|
// arrange
|
|
var modelState = new ModelStateDictionary();
|
|
|
|
// act
|
|
modelState.AddModelError(testModel, m => m, "ShitHappens");
|
|
}
|
|
|
|
internal class TestModel
|
|
{
|
|
public string ValueA { get; set; }
|
|
|
|
public string ValueB { get; set; }
|
|
|
|
public TestSubModel SubModel { get; set; }
|
|
}
|
|
|
|
internal class TestSubModel
|
|
{
|
|
public string SubValueA { get; set; }
|
|
|
|
public string SubValueB { get; set; }
|
|
}
|
|
}
|
|
}
|