| 1049 | } |
| 1050 | |
| 1051 | func TestOrderWithAllFields(t *testing.T) { |
| 1052 | dryDB := DB.Session(&gorm.Session{DryRun: true, QueryFields: true}) |
| 1053 | userQuery := "SELECT .*users.*id.*users.*created_at.*users.*updated_at.*users.*deleted_at.*users.*name.*users.*age" + |
| 1054 | ".*users.*birthday.*users.*company_id.*users.*manager_id.*users.*active.* FROM .*users.* " |
| 1055 | |
| 1056 | result := dryDB.Order("users.age desc, users.name").Find(&User{}) |
| 1057 | if !regexp.MustCompile(userQuery + "users.age desc, users.name").MatchString(result.Statement.SQL.String()) { |
| 1058 | t.Fatalf("Build Order condition, but got %v", result.Statement.SQL.String()) |
| 1059 | } |
| 1060 | |
| 1061 | result = dryDB.Order("users.age desc").Order("users.name").Find(&User{}) |
| 1062 | if !regexp.MustCompile(userQuery + "ORDER BY users.age desc,users.name").MatchString(result.Statement.SQL.String()) { |
| 1063 | t.Fatalf("Build Order condition, but got %v", result.Statement.SQL.String()) |
| 1064 | } |
| 1065 | |
| 1066 | stmt := dryDB.Clauses(clause.OrderBy{ |
| 1067 | Expression: clause.Expr{SQL: "FIELD(id,?)", Vars: []interface{}{[]int{1, 2, 3}}, WithoutParentheses: true}, |
| 1068 | }).Find(&User{}).Statement |
| 1069 | |
| 1070 | explainedSQL := dryDB.Dialector.Explain(stmt.SQL.String(), stmt.Vars...) |
| 1071 | if !regexp.MustCompile(userQuery + "ORDER BY FIELD\\(id,1,2,3\\)").MatchString(explainedSQL) { |
| 1072 | t.Fatalf("Build Order condition, but got %v", explainedSQL) |
| 1073 | } |
| 1074 | } |
| 1075 | |
| 1076 | func TestLimit(t *testing.T) { |
| 1077 | users := []User{ |