public void Unsupported_ContentType_Return_Failure()
        {
            //Arrange
            var excelProperties = new ExcelProperties
            {
                [core.Constants.BudgetFormExcelPropertyNames.LookupGroup] = "LookupGroup",
                [core.Constants.BudgetFormExcelPropertyNames.ContentType] = "Audio",
                [core.Constants.BudgetFormExcelPropertyNames.Production]  = "Full Production"
            };

            var          contentType = "Unsupported";
            const string production  = Constants.ProductionType.FullProduction;

            var target = new BudgetFormPropertyValidator();

            //Act
            var result = target.IsValid(excelProperties, contentType, production);

            //Assert
            result.Should().NotBeNull();
            result.Success.Should().BeFalse();
        }
        public void AnyProduction_For_Photography_Return_Success()
        {
            //Arrange
            var excelProperties = new ExcelProperties
            {
                [core.Constants.BudgetFormExcelPropertyNames.LookupGroup] = "LookupGroup",
                [core.Constants.BudgetFormExcelPropertyNames.ContentType] = "Photography",
                [core.Constants.BudgetFormExcelPropertyNames.Production]  = "Does not matter"
            };

            var          contentType = Constants.ContentType.Photography;
            const string production  = Constants.ProductionType.FullProduction;

            var target = new BudgetFormPropertyValidator();

            //Act
            var result = target.IsValid(excelProperties, contentType, production);

            //Assert
            result.Should().NotBeNull();
            result.Success.Should().BeTrue();
        }
        public void CGIAnimation_For_Video_Return_Success()
        {
            //Arrange
            var excelProperties = new ExcelProperties
            {
                [core.Constants.BudgetFormExcelPropertyNames.LookupGroup] = "LookupGroup",
                [core.Constants.BudgetFormExcelPropertyNames.ContentType] = "Video",
                [core.Constants.BudgetFormExcelPropertyNames.Production]  = "post production only"
            };

            var          contentType = Constants.ContentType.Video;
            const string production  = Constants.ProductionType.CgiAnimation;

            var target = new BudgetFormPropertyValidator();

            //Act
            var result = target.IsValid(excelProperties, contentType, production);

            //Assert
            result.Should().NotBeNull();
            result.Success.Should().BeTrue();
        }
        public void Null_ExcelProperties_Throw_Exception()
        {
            //Arrange
            ExcelProperties excelProperties = null;
            const string    contentType     = "Audio";
            const string    production      = "Full Production";

            var target = new BudgetFormPropertyValidator();

            //Act
            try
            {
                target.IsValid(excelProperties, contentType, production);
            }
            catch (ArgumentNullException)
            {
                return;
            }

            //Assert
            Assert.Fail(); //Should not reach here
        }