matrixcloud / internal /store /qualify_test.go
github-actions[bot]
Deploy from 4dfd54f2
857a91b
Raw
History Blame Contribute Delete
1.71 kB
package store
import "testing"
func TestQualifyPostgres(t *testing.T) {
s := &Store{pg: true, schema: "matrixcloud", tblRe: compileTableRe()}
cases := []struct{ in, want string }{
{
`SELECT u.id FROM users u JOIN workspaces w ON w.id = u.workspace_id WHERE u.email = ?`,
`SELECT u.id FROM matrixcloud.users u JOIN matrixcloud.workspaces w ON w.id = u.workspace_id WHERE u.email = ?`,
},
{
`CREATE INDEX IF NOT EXISTS idx_users_workspace ON users(workspace_id)`,
`CREATE INDEX IF NOT EXISTS idx_users_workspace ON matrixcloud.users(workspace_id)`,
},
{
`INSERT INTO model_runtime_installations (id,model_profile_id) VALUES (?,?)`,
`INSERT INTO matrixcloud.model_runtime_installations (id,model_profile_id) VALUES (?,?)`,
},
{
`LEFT JOIN model_profiles p ON p.id = i.model_profile_id`,
`LEFT JOIN matrixcloud.model_profiles p ON p.id = i.model_profile_id`,
},
{
`SELECT * FROM runtimes WHERE id IN (SELECT workspace_id FROM runtime_join_tokens)`,
`SELECT * FROM matrixcloud.runtimes WHERE id IN (SELECT workspace_id FROM matrixcloud.runtime_join_tokens)`,
},
{
`CREATE TABLE IF NOT EXISTS sessions (token TEXT, user_id TEXT REFERENCES users(id))`,
`CREATE TABLE IF NOT EXISTS matrixcloud.sessions (token TEXT, user_id TEXT REFERENCES matrixcloud.users(id))`,
},
}
for _, c := range cases {
if got := s.qualify(c.in); got != c.want {
t.Errorf("qualify mismatch\n in: %s\n got: %s\n want: %s", c.in, got, c.want)
}
}
}
func TestQualifyNoopForSQLite(t *testing.T) {
s := &Store{pg: false}
q := `SELECT * FROM users JOIN workspaces`
if got := s.qualify(q); got != q {
t.Errorf("SQLite qualify should be a no-op, got %q", got)
}
}