using BusinessLogic.Models; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; using System.Web.Mvc; namespace Admin.UnitTests.Controllers.Transfer.ValidateTransferItem { [TestClass] [ExcludeFromCodeCoverage] public class Post : TestBase { public Post() { SetupController(); } private MethodInfo GetMethod() { return GetMethod(typeof(HttpPostAttribute), nameof(Controller.ValidateTransferItem)); } private ActionResult GetResult(TransferItem model, bool success) { MockValidateTransferItemCommand.Setup(x => x.Execute( It.IsAny())) .Returns(new Admin.Classes.Commands.CommandResult(success, "TestMessage")); return Controller.ValidateTransferItem(model); } [TestMethod] public void HasCorrectNumberOfCustomAttributes() { Assert.AreEqual(2, GetMethod().CustomAttributes.Count()); } [TestMethod] public void HasASingleHttpPostAttribute() { Assert.AreEqual(1, GetMethod().CustomAttributes.Where(ca => ca.AttributeType == typeof(HttpPostAttribute)).Count()); } [TestMethod] public void SucccessJsonResult() { var result = GetResult(null, true); Assert.IsInstanceOfType(result, typeof(JsonResult)); Assert.AreEqual(((JsonResult)result).Data.ToString(), "{ ok = True, message = TestMessage }"); } [TestMethod] public void FailureJsonResult() { var result = GetResult(null, false); Assert.IsInstanceOfType(result, typeof(JsonResult)); Assert.AreEqual(((JsonResult)result).Data.ToString(), "{ ok = False, message = TestMessage }"); } } }