122 lignes
3 Kio
Go
122 lignes
3 Kio
Go
|
package search
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"net/http/httptest"
|
||
|
"testing"
|
||
|
|
||
|
elastic "gopkg.in/olivere/elastic.v5"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestQuery_String(t *testing.T) {
|
||
|
query := Query{}
|
||
|
assert := assert.New(t)
|
||
|
|
||
|
query.Append("xd")
|
||
|
assert.Equal("xd", query.String(), "Should be equal")
|
||
|
|
||
|
query = Query{}
|
||
|
assert.Equal("", query.String(), "Should be equal")
|
||
|
}
|
||
|
|
||
|
func TestQuery_Append(t *testing.T) {
|
||
|
var query Query
|
||
|
assert := assert.New(t)
|
||
|
|
||
|
query.Append("x")
|
||
|
query.Append("d")
|
||
|
assert.Equal("x d", query.String(), "Should be equal")
|
||
|
|
||
|
query.Append("")
|
||
|
assert.Equal("x d", query.String(), "Should be equal")
|
||
|
|
||
|
query.Append("d")
|
||
|
assert.Equal("x d d", query.String(), "Should be equal")
|
||
|
|
||
|
query = Query{}
|
||
|
query.Append("x", 1)
|
||
|
query.Append("d = ?", 2)
|
||
|
search, where := query.ToDBQuery()
|
||
|
assert.Equal("x = ? AND d = ?", search, "Should be equal")
|
||
|
assert.Equal([]interface{}{1, 2}, where, "Should be equal")
|
||
|
|
||
|
query.Append("", 2)
|
||
|
search, where = query.ToDBQuery()
|
||
|
assert.Equal("x = ? AND d = ?", search, "Should be equal")
|
||
|
assert.Equal([]interface{}{1, 2}, where, "Should be equal")
|
||
|
|
||
|
query.Append("d = true")
|
||
|
search, where = query.ToDBQuery()
|
||
|
assert.Equal("x = ? AND d = ? AND d = true", search, "Should be equal")
|
||
|
assert.Equal([]interface{}{1, 2}, where, "Should be equal")
|
||
|
}
|
||
|
|
||
|
func TestQuery_Prepend(t *testing.T) {
|
||
|
var query Query
|
||
|
assert := assert.New(t)
|
||
|
|
||
|
query.Prepend("x")
|
||
|
query.Prepend("d")
|
||
|
assert.Equal("d x", query.String(), "Should be equal")
|
||
|
|
||
|
query.Prepend("")
|
||
|
assert.Equal("d x", query.String(), "Should be equal")
|
||
|
|
||
|
query.Prepend("d")
|
||
|
assert.Equal("d d x", query.String(), "Should be equal")
|
||
|
|
||
|
query = Query{}
|
||
|
query.Prepend("x = ?", 1)
|
||
|
query.Prepend("d = ?", 2)
|
||
|
search, where := query.ToDBQuery()
|
||
|
assert.Equal("d = ? AND x = ?", search, "Should be equal")
|
||
|
assert.Equal([]interface{}{2, 1}, where, "Should be equal")
|
||
|
|
||
|
query.Prepend("", 2)
|
||
|
search, where = query.ToDBQuery()
|
||
|
assert.Equal("d = ? AND x = ?", search, "Should be equal")
|
||
|
assert.Equal([]interface{}{2, 1}, where, "Should be equal")
|
||
|
|
||
|
query.Prepend("d = true")
|
||
|
search, where = query.ToDBQuery()
|
||
|
assert.Equal("d = true AND d = ? AND x = ?", search, "Should be equal")
|
||
|
assert.Equal([]interface{}{2, 1}, where, "Should be equal")
|
||
|
}
|
||
|
|
||
|
func TestQuery_ToESQuery(t *testing.T) {
|
||
|
assert := assert.New(t)
|
||
|
handler := http.NotFound
|
||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||
|
handler(w, r)
|
||
|
}))
|
||
|
defer ts.Close()
|
||
|
|
||
|
handler = func(w http.ResponseWriter, r *http.Request) {
|
||
|
resp := `{}`
|
||
|
|
||
|
w.Write([]byte(resp))
|
||
|
}
|
||
|
|
||
|
client, err := mockService(ts.URL)
|
||
|
assert.NoError(err, "Couldn't load ES Client")
|
||
|
|
||
|
torrentParam := &TorrentParam{
|
||
|
NameLike: "x",
|
||
|
}
|
||
|
c := mockRequest(t, "/?order=true")
|
||
|
query := torrentParam.toESQuery(c)
|
||
|
search, err := query.ToESQuery(client)
|
||
|
assert.NoError(err, "Couldn't load ES SearchService")
|
||
|
assert.NotNil(search)
|
||
|
}
|
||
|
|
||
|
func mockService(url string) (*elastic.Client, error) {
|
||
|
client, err := elastic.NewSimpleClient(elastic.SetURL(url))
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return client, nil
|
||
|
}
|