diff --git a/condition_test.go b/condition_test.go new file mode 100644 index 0000000..4d7fcda --- /dev/null +++ b/condition_test.go @@ -0,0 +1,41 @@ +package condition_test + +import ( + "testing" + + "git.fsdpf.net/go/condition" + "git.fsdpf.net/go/db" + "github.com/stretchr/testify/suite" + + _ "git.fsdpf.net/go/db/dialect/sqlite3" + db_eng "git.fsdpf.net/go/db/engine" + "git.fsdpf.net/go/db/sqlgen" +) + +type conditionTest struct { + suite.Suite + db *db.Database + esg sqlgen.ExpressionSQLGenerator +} + +func TestConditionSuite(t *testing.T) { + suite.Run(t, new(conditionTest)) +} + +func (t *conditionTest) SetupSuite() { + database := db_eng.Open(map[string]db_eng.DBConfig{ + "condition-test": db_eng.NewDBConfig("sqlite3", db_eng.WithSQLiteFile(":memory:")), + }) + t.db = database.Connection("condition-test") +} + +func (t *conditionTest) TestToSql() { + cond := condition.New(condition.Describe("测试")) + cond.SetExpr(condition.NewExpr("User", "name", condition.Operator(condition.LIKE), condition.Token("张三", condition.STRING))). + SetExpr(condition.NewExpr("User", "age", condition.Token("18", condition.STRING))). + SetExpr(condition.NewExpr("User", "attr->'birthday'", condition.Token("18", condition.STRING))). + SetExpr(condition.NewExpr("User", "roles", condition.FieldSqlFn("json_contains", ""), condition.Token("admin", condition.STRING))) + // SetExpr(condition.NewExpr("User", "roles", condition.FieldSqlFn("json_contains", ""), condition.Token("admin", condition.STRING))) + + t.T().Log(t.db.From(db.T("users").As("User")).Where(cond.ToSql(nil)).ToSQL()) +}