mirror of
https://github.com/sosedoff/pgweb.git
synced 2024-12-15 03:36:33 +03:00
41bf189e6b
* Read local queries from pgweb home directory * Refactor local query functionality * Allow picking local query in the query tab * WIP * Disable local query dropdown during execution * Only allow local queries running in a single session mode * Add middleware to enforce local query endpoint availability * Fix query check * Add query store tests * Make query store errors portable * Skip building specific tests on windows
72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
//go:build !windows
|
|
|
|
package queries
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestStoreReadAll(t *testing.T) {
|
|
t.Run("valid dir", func(t *testing.T) {
|
|
queries, err := NewStore("../../data").ReadAll()
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 2, len(queries))
|
|
})
|
|
|
|
t.Run("invalid dir", func(t *testing.T) {
|
|
queries, err := NewStore("../../data2").ReadAll()
|
|
assert.Equal(t, err.Error(), "queries directory does not exist")
|
|
assert.Equal(t, 0, len(queries))
|
|
})
|
|
}
|
|
|
|
func TestStoreRead(t *testing.T) {
|
|
examples := []struct {
|
|
id string
|
|
err string
|
|
check func(*testing.T, *Query)
|
|
}{
|
|
{id: "foo", err: "query file does not exist"},
|
|
{id: "lc_no_meta"},
|
|
{id: "lc_invalid_meta", err: `invalid "mode" field value: "foo"`},
|
|
{
|
|
id: "lc_example1",
|
|
check: func(t *testing.T, q *Query) {
|
|
assert.Equal(t, "lc_example1", q.ID)
|
|
assert.Equal(t, "../../data/lc_example1.sql", q.Path)
|
|
assert.Equal(t, "select 'foo'", q.Data)
|
|
assert.Equal(t, "localhost", q.Meta.Host.String())
|
|
assert.Equal(t, "*", q.Meta.User.String())
|
|
assert.Equal(t, "*", q.Meta.Database.String())
|
|
},
|
|
},
|
|
{
|
|
id: "lc_example2",
|
|
check: func(t *testing.T, q *Query) {
|
|
assert.Equal(t, "lc_example2", q.ID)
|
|
assert.Equal(t, "../../data/lc_example2.sql", q.Path)
|
|
assert.Equal(t, "-- some comment\nselect 'foo'", q.Data)
|
|
assert.Equal(t, "localhost", q.Meta.Host.String())
|
|
assert.Equal(t, "foo", q.Meta.User.String())
|
|
assert.Equal(t, "*", q.Meta.Database.String())
|
|
},
|
|
},
|
|
}
|
|
|
|
store := NewStore("../../data")
|
|
|
|
for _, ex := range examples {
|
|
t.Run(ex.id, func(t *testing.T) {
|
|
query, err := store.Read(ex.id)
|
|
if ex.err != "" || err != nil {
|
|
assert.Equal(t, ex.err, err.Error())
|
|
}
|
|
if ex.check != nil {
|
|
ex.check(t, query)
|
|
}
|
|
})
|
|
}
|
|
}
|