private static IEnumerable <TestCaseData> GenerateRulesApplierCases() { var noUnpackRules = RulesGenerator.GenerateValidRules(false); var noUnpackRights = noUnpackRules .Select(rule => new Rights(rule.PlatformAccesses, rule.ProductAccesses)) .ToList(); var withUnpackRules = RulesGenerator.GenerateValidRules(true); var withExtraProduct = RulesGenerator.GenerateValidRules(false); withExtraProduct[0].ProductAccesses[Platform.Support].Add("Unknown", Role.RoleII); var specifiedRoleAndAllFlag = RulesGenerator.GenerateValidRules(true); specifiedRoleAndAllFlag[0].ProductAccesses[Platform.Support]["Product1"] = Role.Admin; var rightsForSpecifiedRole = GetRightWithAllFlag(); rightsForSpecifiedRole[0].ProductAccesses[Platform.Support]["Product1"] = Role.Admin; yield return(new TestCaseData(new List <Rule>(), new List <Rights>()) .SetName("Нет правил для применения. Возвращает пустой лист")); yield return(new TestCaseData(noUnpackRules, noUnpackRights) .SetName("Нет флага All. Успех")); yield return(new TestCaseData(withExtraProduct, noUnpackRights) .SetName("Продукт, которого нет в списке. Игнорирует этот продукт")); yield return(new TestCaseData(withUnpackRules, GetRightWithAllFlag()) .SetName("Есть флаг All. Успех")); yield return(new TestCaseData(specifiedRoleAndAllFlag, rightsForSpecifiedRole) .SetName("Роль, указанная в All, имеет наименьший приоретет")); }
public void TestRulesValidatorOnValidRules(bool allProductsFlag) { var validRules = RulesGenerator.GenerateValidRules(allProductsFlag); foreach (var rule in validRules) { validator.IsValid(rule).Should().BeTrue(); } }
private static IEnumerable <TestCaseData> GenerateRulesReaderSuccesses() { var currentDirectory = System.AppDomain.CurrentDomain.BaseDirectory; var rulesDirectory = Path.Combine(currentDirectory, "Rules"); var validRulesDirectory = Path.Combine(rulesDirectory, "Valid"); var testRules = RulesGenerator.GenerateValidRules(true); var multipleRules = RulesGenerator.GenerateMultipleRules(); yield return(new TestCaseData( Path.Combine(validRulesDirectory, "TestRules.xml"), testRules ).SetName("Корректный файл. Успех")); yield return(new TestCaseData( Path.Combine(validRulesDirectory, "MultipleRules.xml"), multipleRules ).SetName("Множественные правила в одном файле. Успех")); yield return(new TestCaseData( validRulesDirectory, testRules.Concat(multipleRules).ToList() ).SetName("Чтение всех правил в директории. Успех")); }