public void Should_be_able_to_Scan_for_the_Specification_and_Register() { SpecificationScanner.ScanSpecificationInAssembly <CustomerSpecification>(); var Specification = SpecificationScanner.container.GetInstance <ISpecification <Customer> >(); Specification.Should().BeOfType <CustomerSpecification>(); }
public void Should_Apply_all_the_Rule_and_execute() { SpecificationScanner.ScanSpecificationInAssembly <CustomerSpecification>(); IRuleEngine ruleEngine = new RuleEngine(); ruleEngine.ExecuteRules <Customer>(new Customer { PurchasedAmount = 100001 }).customerType.Should().Be(CustomerType.Premium); }
/// <summary> /// The scan for specification. /// </summary> /// <param name="isForce"> /// The is force. /// </param> public static void ScanForSpecification(bool isForce = false) { isForce = isForce || foundSpecifications == null; if (!isForce) { return; } var scanner = new SpecificationScanner(); scanner.AddAssemblies(CurrentDomainTypes.GetAssemblies().ToList()); var fieldSpecsFound = scanner.GetType().GetField("_specifications", BindingFlags.Instance | BindingFlags.NonPublic); foundSpecifications = (List <Type>)fieldSpecsFound.GetValue(scanner); if (foundSpecifications.Count == 0) { foundSpecifications.Add(typeof(DummySpecification)); } }