using System.ComponentModel.DataAnnotations; using System.Linq; using LCU.Library.Internal.IncentiveApiModels.Entities; using LCU.Library.Internal.IncentiveApiModels.Enums; using NUnit.Framework; namespace Application.UnitTests.Entities { public class DepartmentTest { [Test] public void Validate_OK() { var dept = new Department() { DepartmentName = "Test1", BusinessLineCode = "MEMSRV", State = DepartmentState.Active }; var results = dept.Validate(new ValidationContext(dept)); Assert.IsEmpty(results); } [TestCase("BCHOPS", false)] [TestCase("MEMSRV", false)] [TestCase("OPS", false)] [TestCase("TOAST", true)] public void Validate_BusinessLineCode_OK(string businessLine, bool hasError) { var dept = new Department() { DepartmentName = "Test1", BusinessLineCode = businessLine, State = DepartmentState.Active }; var results = dept.Validate(new ValidationContext(dept)); Assert.AreEqual(hasError,results.Any()); } [Test] public void Validate_Bad_BusinessLine() { var dept = new Department() { DepartmentName = "Test1", BusinessLineCode = "THISISNOTAREALBUSINESSLINECODE", State = DepartmentState.Active }; var results = dept.Validate(new ValidationContext(dept)); Assert.NotNull(results); Assert.AreEqual(1, results.Count()); Assert.AreEqual(results.First().ErrorMessage, "The supplied BusinessLineCode is not associated with any known BusinessLine"); } [Test] public void Validate_NullRegionCode_OK() { var department = new Department() { DepartmentName = "Test1", BusinessLineCode = "MEMSRV", RegionCode = null, State = DepartmentState.Active }; var results = department.Validate(new ValidationContext(department)); Assert.NotNull(results); Assert.IsEmpty(results); } [TestCase("INVALID_REGION")] [TestCase("")] [TestCase(" ")] public void Validate_BadRegionCode_IncludesValidationResult(string regionCode) { var department = new Department() { DepartmentName = "Test1", BusinessLineCode = "MEMSRV", RegionCode = regionCode, State = DepartmentState.Active }; var results = department.Validate(new ValidationContext(department)); Assert.NotNull(results); Assert.AreEqual(1, results.Count()); Assert.AreEqual(results.First().ErrorMessage, "The supplied RegionCode is not associated with any known Region"); } [TestCase("EAST")] [TestCase("NORTH")] [TestCase("SOUTH")] [TestCase("WEST")] public void Validate_RegionCode_OK(string regionCode) { var dept = new Department() { DepartmentName = "Test1", BusinessLineCode = "MEMSRV", RegionCode = regionCode, State = DepartmentState.Active }; var results = dept.Validate(new ValidationContext(dept)); Assert.NotNull(results); Assert.IsEmpty(results); } } }