public void Document(DatabaseDefinition dd) { Log(LogSeverity.Information, "Starting on {DatabaseName}.", "SchemaCheckerDocumenter", DatabaseName); WriteLine("Checks", "Severity", "Type", "Target", "Schema", "Table", "Case", "Description"); var schemaChecker = new SchemaChecker(Context); var results = schemaChecker.Check(dd); foreach (var schemaCheck in results.OrderBy(sc => sc.Schema).ThenBy(sc => sc.ElementName).ThenByDescending(sc => sc.Severity)) { WriteLine("Checks", schemaCheck.Severity, schemaCheck.Type, schemaCheck.TargetType, schemaCheck.Schema, schemaCheck.ElementName, schemaCheck.DisplayName, schemaCheck.DisplayInfo); } Log(LogSeverity.Information, "Generating Document content.", "SchemaCheckerDocumenter"); var content = DocumenterWriter.GetContent(); var fileName = FileName ?? (DatabaseName?.Length == 0 ? "Database_checks.xlsx" : DatabaseName + "_checks.xlsx"); var path = Context.DocumenterSettings?.WorkingDirectory; Log(LogSeverity.Information, "Writing Document file {FileName} to folder {Folder}", "SchemaCheckerDocumenter", fileName, path); if (!string.IsNullOrEmpty(path)) { fileName = Path.Combine(path, fileName); } File.WriteAllBytes(fileName, content); }
public void ShouldPassWithSubclass() { var schema = this.GetGeneratedSchemaWithOneSubclassProperty(); var schemaDefinitions = GenerateTestSchemaDefinitions(schema, typeof(ExampleMessageThatShouldPassWithSubClass)); var schemaResults = new SchemaChecker().CheckSchemas(new DefineSchemaDefinitions(schemaDefinitions), new[] { typeof(ExampleMessageThatShouldPassWithSubClass) }); var hasErrors = schemaResults.HasErrors(); Assert.IsFalse(hasErrors); }
public void ShouldFailBecauseSubclassIsMissing() { var schema = this.GetGeneratedSchemaWithOneSubclassProperty(); var schemaDefinitions = GenerateTestSchemaDefinitions(schema, typeof(ExampleMessageThatShouldFailBecauseOfSubClass)); var schemaResults = new SchemaChecker().CheckSchemas(new DefineSchemaDefinitions(schemaDefinitions), new[] { typeof(ExampleMessageThatShouldFailBecauseOfSubClass) }); var hasErrors = schemaResults.HasErrors(); Assert.IsTrue(hasErrors); var errors = schemaResults.GetErrors(); Assert.AreEqual(errors.First(), "Class Name: ExampleMessageThatShouldFailBecauseOfSubClass. Consumer: Test. Errors: Required properties are missing from object: PropertyOne. Path ''."); }
public void ShouldFailBecauseOfPropertyType() { var generatedSchema = this.GetGeneratedSchemaWithOneStringProperty(); var schemaDefinitions = GenerateTestSchemaDefinitions(generatedSchema, typeof(ExampleMessageThatShouldFailBecauseOfPropertyType)); var schemaResults = new SchemaChecker().CheckSchemas(new DefineSchemaDefinitions(schemaDefinitions), new[] { typeof(ExampleMessageThatShouldFailBecauseOfPropertyType) }); var hasErrors = schemaResults.HasErrors(); Assert.IsTrue(hasErrors); var errors = schemaResults.GetErrors(); var regexMatch = new Regex("Invalid type. Expected String, Null but got Integer. Path 'PropertyOne'."); var result = regexMatch.Match(errors.First()); Assert.AreEqual(result.Success, true); }
public void ShouldPass() { var generatedSchema = this.GetGeneratedSchemaWithOneStringProperty(); var schemaDefinitions = new List <SchemaDefinition>() { new SchemaDefinition() { Schema = JSchema.Parse(generatedSchema), ConsumerName = "Test", SchemaName = "ExampleMessageThatShouldPass" } }; var schemaResults = new SchemaChecker().CheckSchemas(new DefineSchemaDefinitions(schemaDefinitions), new [] { typeof(ExampleMessageThatShouldPass) }); var hasErrors = schemaResults.HasErrors(); Assert.IsFalse(hasErrors, $"Schema mismatches! {schemaResults.GetErrors()}"); }
public void ShouldFailBecauseOfPropertyName() { var generatedSchema = this.GetGeneratedSchemaWithOneStringProperty(); var schemaDefinitions = new List <SchemaDefinition>() { new SchemaDefinition() { Schema = JSchema.Parse(generatedSchema), ConsumerName = "Test", SchemaName = typeof(ExampleMessageThatShouldFailBecauseOfPropertyName).Name } }; var schemaResults = new SchemaChecker().CheckSchemas(new DefineSchemaDefinitions(schemaDefinitions), new[] { typeof(ExampleMessageThatShouldFailBecauseOfPropertyName) }); var hasErrors = schemaResults.HasErrors(); Assert.IsTrue(hasErrors); var errors = schemaResults.GetErrors(); Assert.AreEqual(errors.First(), "Class Name: ExampleMessageThatShouldFailBecauseOfPropertyName. Consumer: Test. Errors: Required properties are missing from object: PropertyOne. Path ''."); }