public void SelectTestWithJoins(SupportedDatabaseTypes databaseTypes, bool useSchema, string expectedSql) { using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes).CreateScope()) { var dbConfig = scope.ServiceProvider.GetService <IDbConfigDatabaseTargets>(); expectedSql = string.Format(expectedSql, dbConfig.Schema); var builder = dbConfig.CreateSqlBuilder(); var select = builder.Select(); var sqls = new List <string> { @select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .From <Entity>() .InnerJoin <Entity, ChildEntity>() .LeftOuterJoin <ChildEntity, ChildChildEntity>() .Fields <ChildEntity>(x => x.F(item => item.Description)) .Fields <ChildEntity>(x => x.F(item => item.Relation)) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), @select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .From <Entity>() .Fields <ChildEntity>(x => x.F(item => item.Description)) .Fields <ChildEntity>(x => x.F(item => item.Relation)) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .InnerJoin <Entity, ChildEntity>() .LeftOuterJoin <ChildEntity, ChildChildEntity>() .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), @select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .InnerJoin <Entity, ChildEntity>() .LeftOuterJoin <ChildEntity, ChildChildEntity>() .Fields <ChildEntity>(x => x.F(item => item.Description)) .Fields <ChildEntity>(x => x.F(item => item.Relation)) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), }; foreach (var sql in sqls) { sql.Should().Be(expectedSql); } } }
public void SelectWithIfStatementTest(bool ifStatementResult, string expectedSql) { using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider().CreateScope()) { var dbConfig = scope.ServiceProvider.GetService <IDbConfigDatabaseTargets>(); var builder = dbConfig.CreateSqlBuilder(); var sql = builder.Select() .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .WhereIf <Entity>(x => x.WV(item => item.Name, "Arild"), () => ifStatementResult) .Build(); sql.Should().Be(expectedSql); } }
public void UpdateTestWithWhereIfTest(SupportedDatabaseTypes databaseTypes, bool ifStatementResult, string expectedSql) { using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes).CreateScope()) { var dbConfig = scope.ServiceProvider.GetService <IDbConfigDatabaseTargets>(); var builder = dbConfig.CreateSqlBuilder(); var update = builder.Update <Entity>(); var sql = update .Fields(x => x.FP(f => f.Description) .FV(f => f.Name, "Arild")) .Where(x => x.WP(item => item.Id, "IdParam")) .WhereIf(x => x.WV(item => item.Name, "Arild", OP.DI), () => ifStatementResult) .Build(); sql.Should().Be(expectedSql); } }
public void DeleteTest1(SupportedDatabaseTypes databaseTypes, bool useSchema, string expectedSql) { using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes).CreateScope()) { var dbConfig = scope.ServiceProvider.GetService <IDbConfig>(); expectedSql = string.Format(expectedSql, dbConfig.Schema); var builder = dbConfig.CreateSqlBuilder(); var delete = builder.Delete <Entity>(); var sql = delete .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .Where(x => x.WP(item => item.Id, "IdParam")) .Where(x => x.WV(item => item.Name, "Arild")) .Build(); sql.Should().Be(expectedSql); } }
public void InsertTest2(SupportedDatabaseTypes databaseTypes, bool useSchema, string expectedSql) { using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes).CreateScope()) { var dbConfig = scope.ServiceProvider.GetService <IDbConfigDatabaseTargets>(); expectedSql = string.Format(expectedSql, dbConfig.Schema); var builder = dbConfig.CreateSqlBuilder(); var resolver = dbConfig.CreateParameterResolver(); var insert = builder.Insert <Entity>(); var sql = insert .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .Fields(x => x.FV(f => f.Id, resolver.WithNextSequence("seq"), true)) .Fields(x => x.FV(f => f.Name, "Arild")) .Fields(x => x.FP(f => f.Description)) .Build(); sql.Should().Be(expectedSql); } }
public void SelectTestOneTableOnly(SupportedDatabaseTypes databaseTypes, bool useSchema, string schemaPrefixId, string expectedSql) { SqlAliasHelper.ClearAliases(); var addDictionary = new Dictionary <string, string> { { "database:schemaPrefix:Id", schemaPrefixId } }; using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes, addDictionary).CreateScope()) { var dbConfig = scope.ServiceProvider.GetService <IDbConfigSchemaTargets>(); expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId()); var builder = dbConfig.CreateSqlBuilder(); var select = builder.Select(); var sqls = new List <string> { select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build(), select .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .From <Entity>() .Fields <Entity>(x => x.F(item => item.Name)) .Fields <Entity>(x => x.F(item => item.Description)) .Where <Entity>(x => x.WP(item => item.Id, "IdParam")) .Where <Entity>(x => x.WV(item => item.Name, "Arild")) .Build() }; foreach (var sql in sqls) { sql.Should().Be(expectedSql); } } }
public void UpdateTestWithWhereIfTest(SupportedDatabaseTypes databaseTypes, bool ifStatementResult, string schemaPrefixId, string expectedSql) { var addDictionary = new Dictionary <string, string> { { "database:schemaPrefix:Id", schemaPrefixId } }; using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes, addDictionary).CreateScope()) { var dbConfig = scope.ServiceProvider.GetService <IDbConfigSchemaTargets>(); expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId()); var builder = dbConfig.CreateSqlBuilder(); var update = builder.Update <Entity>(); var sql = update .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => ifStatementResult) .Fields(x => x.FP(f => f.Description) .FV(f => f.Name, "Arild")) .Where(x => x.WP(item => item.Id, "IdParam")) .WhereIf(x => x.WV(item => item.Name, "Arild", OP.DI), () => ifStatementResult) .Build(); sql.Should().Be(expectedSql); } }
public void InsertTest1(SupportedDatabaseTypes databaseTypes, bool useSchema, string schemaPrefixId, string expectedSql) { var addDictionary = new Dictionary <string, string> { { "database:schemaPrefix:Id", schemaPrefixId } }; using (var scope = TestServiceProvider.GetDatabaseExampleServiceProvider(databaseTypes, addDictionary).CreateScope()) { var dbConfig = scope.ServiceProvider.GetService <IDbConfigSchemaTargets>(); expectedSql = string.Format(expectedSql, dbConfig.Schema, dbConfig.GetSchemaPrefixId()); var builder = dbConfig.CreateSqlBuilder(); var insert = builder.Insert <Entity>(); var sql = insert .OnSchema(setSchemaNameIfExpressionIsEvaluatedToTrue: () => useSchema) .Fields(x => x.FP(f => f.Id, "IdParam")) .Fields(x => x.FV(f => f.Name, "Arild")) .Fields(x => x.FP(f => f.Description)) .Build(); sql.Should().Be(expectedSql); } }