| 111 | } |
| 112 | |
| 113 | func TestRowsWithGroup(t *testing.T) { |
| 114 | users := []User{ |
| 115 | {Name: "having_user_1", Age: 1}, |
| 116 | {Name: "having_user_2", Age: 10}, |
| 117 | {Name: "having_user_1", Age: 20}, |
| 118 | {Name: "having_user_1", Age: 30}, |
| 119 | } |
| 120 | |
| 121 | DB.Create(&users) |
| 122 | |
| 123 | rows, err := DB.Select("name, count(*) as total").Table("users").Group("name").Having("name IN ?", []string{users[0].Name, users[1].Name}).Rows() |
| 124 | if err != nil { |
| 125 | t.Fatalf("got error %v", err) |
| 126 | } |
| 127 | |
| 128 | defer rows.Close() |
| 129 | for rows.Next() { |
| 130 | var name string |
| 131 | var total int64 |
| 132 | rows.Scan(&name, &total) |
| 133 | |
| 134 | if name == users[0].Name && total != 3 { |
| 135 | t.Errorf("Should have one user having name %v", users[0].Name) |
| 136 | } else if name == users[1].Name && total != 1 { |
| 137 | t.Errorf("Should have two users having name %v", users[1].Name) |
| 138 | } |
| 139 | } |
| 140 | } |
| 141 | |
| 142 | func TestQueryRaw(t *testing.T) { |
| 143 | users := []*User{ |