public void CreateManyRandomClassesFromInformationSchema() { string outputText = String.Empty; var randomSqlTableReferences = RandomTableSelector.GetRandomSqlTableReferences(SqlConnectionProviders.AdventureWorksDb, 400); foreach (var sqlTableReference in randomSqlTableReferences) { var sqlTable = SqlTableFactory.Create(sqlTableReference); var cSharpClass = CSharpClassGeneratorFromSqlTable.GenerateClass(sqlTable); outputText += cSharpClass; } Console.WriteLine(outputText); }
public void CreateManyRandomClassesFromDescribeResultSet() { string outputText = String.Empty; var randomSqlTableReferences = RandomTableSelector.GetRandomSqlTableReferences(SqlConnectionProviders.AdventureWorksDb, 400).OrderBy(x => x.SchemaName).ThenBy(x => x.TableName); foreach (var sqlTableReference in randomSqlTableReferences) { var sqlTable = SqlTableFactory.Create(sqlTableReference); var cSharpClass = CSharpClassGeneratorFromQueryViaSqlDescribeResultSet.GenerateClass( sqlTableReference.SqlConnectionProvider, $"SELECT * FROM {sqlTable.Schema}.{sqlTable.Name}", sqlTable.Name); outputText += cSharpClass + "\r\n"; } Console.WriteLine(outputText); }
public void TestCompilationOfManyClasses() { int errorCount = 0; int successCount = 0; IList <SqlTableReference> randomSqlTableReferences = null; "Given a list of SqlTableReferences" ._(() => { randomSqlTableReferences = RandomTableSelector.GetRandomSqlTableReferences(SqlConnectionProviders.AdventureWorksDb, 400); }); "Convert each table reference to a C# class and check for syntax errors using Roslyn" ._foreach(randomSqlTableReferences, sqlTableReference => { var sqlTable = SqlTableFactory.Create(sqlTableReference); var cSharpClass = CSharpClassGeneratorFromSqlTable.GenerateClass(sqlTable); var compileResult = RoslynHelper.TryCompile(cSharpClass); if (compileResult.IsValid()) { successCount++; } else { errorCount++; Console.WriteLine("Error found in the following:\r\n" + cSharpClass); } }); "Then print out testing results" ._(() => { Console.WriteLine("Successes: {0}", successCount); Console.WriteLine("Failures: {0}", errorCount); errorCount.Should().Be(0); }); }
public void InsertManyRandomRowsIntoManyRandomTables_UsingAutoFixture() { var testCaseResults = new List <TestInsertDeleteCaseResult>(); var typesToInsert = new List <Type>(); var randomSqlTableReferences = new List <SqlTableReference>(); var db = SqlConnectionProviders.AdventureWorksDb; "Given a bunch of DB tables and CLR types that represent those tables" ._(() => { randomSqlTableReferences = RandomTableSelector .GetRandomSqlTableReferences(db, 400) .OrderBy(x => x.SchemaName) .ThenBy(x => x.TableName) .ToList(); typesToInsert = Assembly .GetAssembly(typeof(BusinessEntityContact)) .GetTypes() .Where(x => !x.IsAnonymousType()) .Where(x => x.GetProperties().All(p => p.PropertyType != typeof(XElement))) .Where(x => x.GetProperties().All(p => p.PropertyType != typeof(SqlHierarchyId))) .Where(x => !x.Name.StartsWith("v")) .Where(x => x.Namespace.Equals("UniqueDb.ConnectionProvider.Tests.DataGeneration.AdventureWorks")) .ToList(); }); var fixture = new Fixture(); fixture.Inject(new SqlGeography()); "For each table in the DB" ._(() => { foreach (var sqlTableReference in randomSqlTableReferences) { TestInsertDeleteCaseResult testCase = null; var clrTypeForTable = typesToInsert.SingleOrDefault(t => t.Name.Equals(sqlTableReference.TableName)); "Create a test case result" ._(() => { testCase = new TestInsertDeleteCaseResult() { SqlTableReference = sqlTableReference, ClrType = clrTypeForTable }; testCaseResults.Add(testCase); }); if (clrTypeForTable == null) { continue; } object clrObjectForSqlTable = null; "Given a new, random instance of the CLR type representing the SqlTableReference" ._(() => { var context = new SpecimenContext(fixture); clrObjectForSqlTable = context.Resolve(new SeededRequest(clrTypeForTable, null)); }); "Try inserting into database" ._(() => { try { db.Insert(clrObjectForSqlTable, sqlTableReference.TableName, sqlTableReference.SchemaName); } catch (Exception e) { testCase.AddInsertException(e); } }); "Try updating the database" ._(() => { try { db.Update(clrObjectForSqlTable, null, sqlTableReference.TableName, sqlTableReference.SchemaName); } catch (Exception e) { testCase.AddUpdateException(e); } }); "Try deleting from database" ._(() => { try { db.Delete(clrObjectForSqlTable, null, sqlTableReference.TableName, sqlTableReference.SchemaName); } catch (Exception e) { testCase.AddDeleteException(e); } }); testCase.WrapUp(); } }); "Print out test results" ._(() => { PrintSummary(testCaseResults); PrintDetails(testCaseResults); }); }