public void CanIdentifyNullablePropWithCanBeBullSetWithConstant() { var jobs = new List <JobWithNull> { new JobWithNull { Capacity = null } }; var validationResults = new SimpleRulesEngine() .Validate <JobWithNull>(jobs); Assert.AreEqual(1, validationResults.Count()); Assert.AreEqual(0, validationResults.First().Errors.Count()); jobs = new List <JobWithNull> { new JobWithNull { Capacity = 25, MaxCapacity = 15 } }; Assert.AreEqual(1, validationResults.Count()); Assert.AreEqual(0, validationResults.First().Errors.Count()); jobs = new List <JobWithNull> { new JobWithNull { Capacity = 40, MaxCapacity = 45 } }; Assert.AreEqual(1, validationResults.Count()); Assert.AreEqual(0, validationResults.First().Errors.Count()); }
public void CanGenerateRegexRules() { var codes = new List <Code> { new Code { Value = "abc" } }; var validationResults = new SimpleRulesEngine() .Validate <Code>(codes); Assert.AreEqual(1, validationResults.Count()); Assert.AreEqual(1, validationResults.First().Errors.Count()); Assert.AreEqual("Value does not match the expected format", validationResults.First().Errors[0]); codes = new List <Code> { new Code { Value = "123" } }; validationResults = new SimpleRulesEngine() .Validate <Code>(codes); Assert.AreEqual(1, validationResults.Count()); Assert.AreEqual(0, validationResults.First().Errors.Count()); }
public void CanGenerateMessagesconsideringNullAndConstantStatus() { var engine = new SimpleRulesEngine(); var jobs = new List <JobWithNull> { new JobWithNull { MaxCapacity = 15, Capacity = 40 } }; var validationResults = engine.Validate <JobWithNull>(jobs); Assert.AreEqual(1, validationResults.Count()); Assert.AreEqual("Capacity should be Less Than the Max Capacity. Or Capacity can be Less Than 30. It can also be null.", validationResults.First().Errors[0]); var jobsWithConst = new List <JobWithOnlyConstant> { new JobWithOnlyConstant { MaxCapacity = 15, Capacity = 40 } }; var validationResultsConst = engine.Validate <JobWithOnlyConstant>(jobsWithConst); Assert.AreEqual(1, validationResultsConst.Count()); Assert.AreEqual("Capacity should be Less Than the Max Capacity. Or Capacity can be Less Than 30.", validationResultsConst.First().Errors[0]); var jobsWithNull = new List <JobWithOnlyNull> { new JobWithOnlyNull { MaxCapacity = 15, Capacity = 40 } }; var validationResultsNull = engine.Validate <JobWithOnlyNull>(jobsWithNull); Assert.AreEqual(1, validationResultsNull.Count()); Assert.AreEqual("Capacity should be Less Than the Max Capacity. It can also be null.", validationResultsNull.First().Errors[0]); }
public void CanIdentifyNotNullablePropWithCanBeNullSetWithConstant() { var jobs = new List <JobWithoutNull> { new JobWithoutNull { Capacity = 10 } }; var validationResultsEnumerator = new SimpleRulesEngine() .Validate <JobWithoutNull>(jobs); var validationResults = validationResultsEnumerator.ToList(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddApplicationInsightsTelemetry(Configuration); var simpleRulesEngine = new SimpleRulesEngine() .DiscoverHandlers(new [] { typeof(Startup) }) .RegisterMetadata <Registration, RegistrationMetadata>() .RegisterMetadata <Activity, ActivityMetadata>(); services.AddSingleton(typeof(SimpleRulesEngine), simpleRulesEngine); services.AddMvc(); }
public void CanThrowExceptionForDuplicateMetdataRegistration() { var users = new List <User> { new User { Id = 1001, RegistrationDate = DateTime.Now, LastLoginDate = DateTime.Now.AddDays(-1) } }; var results = new SimpleRulesEngine() .RegisterMetadata <User, UserMetadata>() .RegisterMetadata <User, UserMetadata>() .Validate <User>(users); Assert.IsNotNull(results); Assert.AreEqual(1, results.Count()); }
public void CanIdentifyCustomHandlersUsingDiscovery() { var activities = new List <Activity> { new Activity { Id = 1, StartDate = DateTime.Parse("04/01/2017"), EndDate = DateTime.Parse("03/30/2017"), Capacity = 45, Name = "Cricket" } }; var validationResults = new SimpleRulesEngine() .DiscoverHandlers(new[] { typeof(Marker) }) .Validate <Activity>(activities); Assert.AreEqual(1, validationResults.Count()); var validationResult = validationResults.First(); Assert.AreEqual(2, validationResult.Errors.Count); Assert.AreEqual("Capacity should be between 10 and 30", validationResult.Errors[1]); Assert.AreEqual("End Date should be Greater Than the Start Date.", validationResult.Errors[0]); }
public void CanGenerateSimpleRuleWithWarnings() { var users = new List <User> { new User { Id = 1001, RegistrationDate = DateTime.Now, LastLoginDate = DateTime.Now.AddDays(-1) } }; var results = new SimpleRulesEngine() .RegisterMetadata <User, UserMetadataWithWarning>() .Validate <User>(users); Assert.IsNotNull(results); Assert.AreEqual(1, results.Count()); var first = results.First(); Assert.AreEqual(1001, first.Key); Assert.AreEqual(1, first.Warnings.Count); Assert.AreEqual("Last Login Date should be Greater Than the Registration Date.", first.Warnings[0]); }
public void CanIdentifyNullableOtherProperty() { var students = new List <Student> { new Student { StartDate = DateTime.Now.AddDays(-5), EndDate = DateTime.Now, DateOfBirth = DateTime.Now.AddDays(1) } }; var validationResults = new SimpleRulesEngine() .Validate <Student>(students); Assert.AreEqual(1, validationResults.Count()); var first = validationResults.First(); Assert.AreEqual(1, first.Errors.Count()); Assert.AreEqual("Date Of Birth should be Less Than the End Date.", first.Errors[0]); }
// see Startup.cs - ConfigureServices public HomeController(SimpleRulesEngine rulesEngine) { _rulesEngine = rulesEngine; }