namespace LaaProductionWeb.Tests.Models { using LaaProductionWeb.API.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ModelBinding; using NUnit.Framework; using System.Linq; using System.Reflection; public class ModelResultTests { [Test] public void ModelResult_ShouldBeImplicitlyCreated_FromModelStateDictionary() { // Act ModelResult modelResult = default(ModelStateDictionary); // Assert Assert.IsNotNull(modelResult); } [Test] public void ModelResult_ShouldInitializeModelErrors_WhenCreatedFrom_ModelStateDictionary() { // Act ModelResult modelResult = default(ModelStateDictionary); // Assert Assert.IsNotNull(modelResult.ModelErrors); } [Test] public void ModelResult_ShouldNotSucceeded_WhenCreatedFrom_ModelStateDictionary() { // Act ModelResult modelResult = default(ModelStateDictionary); // Assert Assert.IsFalse(modelResult.Succeeded); } [Test] public void ModelResult_ShouldBeImplicitlyCreated_FromOtherObjects() { // Act ModelResult modelResult = default(object); // Assert Assert.IsNotNull(modelResult); } [Test] public void ModelResult_ShouldSucceeded_WhenCreated_FromOtherObjects() { // Act ModelResult modelResult = default(object); // Assert Assert.IsTrue(modelResult.Succeeded); } [Test] public void ModelResult_ShouldHaveSameValue_WhenCreated_FromOtherObjects() { // Arrange var value = nameof(ModelResult); ModelResult modelResult = value; // Act var fieldValue = typeof(ModelResult) .GetFields(BindingFlags.NonPublic | BindingFlags.Instance) .FirstOrDefault(x => x.Name == nameof(value)) ?.GetValue(modelResult); // Assert Assert.AreEqual(value, fieldValue); } [Test] public void ModelResult_AddModelError_ShuldNotAddError_WhenKeyIsNull() { // Arrange ModelResult modelResult = default(ModelStateDictionary); var modelErrors = modelResult.ModelErrors; // Act var errorsCountBefore = modelErrors.Count; modelResult.AddModelError(null, null); var errorsCountAfter = modelErrors.Count; // Assert Assert.AreEqual(errorsCountBefore, errorsCountAfter); } [Test] public void ModelResult_AddModelError_ShuldAddErrors_WhenKeyIsNotNull() { // Arrange ModelResult modelResult = default(ModelStateDictionary); var modelErrors = modelResult.ModelErrors; // Act var errorsCountBefore = modelErrors.Count; modelResult.AddModelError(string.Empty, null); var errorsCountAfter = modelErrors.Count; // Assert Assert.Greater(errorsCountAfter, errorsCountBefore); } [Test] public void ModelResult_AddModelError_ShuldOverrideError_WhenKeyExists() { // Arrange ModelResult modelResult = default(ModelStateDictionary); var modelErrors = modelResult.ModelErrors; // Act modelResult.AddModelError(string.Empty, "1"); var valueBefore = modelErrors[string.Empty]; modelResult.AddModelError(string.Empty, "2"); var valueAfter = modelErrors[string.Empty]; // Assert Assert.AreNotEqual(valueBefore, valueAfter); } [Test] public void ModelResult_ReturnsNotFoundResult_WhenModelResult_IsNull() { // Arrange ModelResult modelResult = null; // Act ActionResult actionResult = modelResult; // Assert Assert.AreEqual(actionResult.GetType(), typeof(NotFoundResult)); } [Test] public void ModelResult_ReturnsBadRequestObjectResult_WhenCreatedFrom_ModelStateDictionary() { // Arrange ModelResult modelResult = default(ModelStateDictionary); // Act ActionResult actionResult = modelResult; // Assert Assert.AreEqual(actionResult.GetType(), typeof(BadRequestObjectResult)); } [Test] public void ModelResult_ReturnsOkObjectResult_WhenCreatedWhitValue() { // Arrange ModelResult modelResult = default(string); // Act ActionResult actionResult = modelResult; // Assert Assert.AreEqual(actionResult.GetType(), typeof(OkObjectResult)); } } }