mirror of
https://github.com/navidrome/navidrome.git
synced 2024-09-11 20:12:54 +02:00
50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package persistence
|
|
|
|
import (
|
|
"github.com/Masterminds/squirrel"
|
|
"github.com/deluan/rest"
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("sqlRestful", func() {
|
|
Describe("parseRestFilters", func() {
|
|
var r sqlRestful
|
|
var options rest.QueryOptions
|
|
|
|
BeforeEach(func() {
|
|
r = sqlRestful{}
|
|
})
|
|
|
|
It("returns nil if filters is empty", func() {
|
|
options.Filters = nil
|
|
Expect(r.parseRestFilters(options)).To(BeNil())
|
|
})
|
|
|
|
It("returns a '=' condition for 'id' filter", func() {
|
|
options.Filters = map[string]interface{}{"id": "123"}
|
|
Expect(r.parseRestFilters(options)).To(Equal(squirrel.And{squirrel.Eq{"id": "123"}}))
|
|
})
|
|
|
|
It("returns a 'in' condition for multiples 'id' filters", func() {
|
|
options.Filters = map[string]interface{}{"id": []string{"123", "456"}}
|
|
Expect(r.parseRestFilters(options)).To(Equal(squirrel.And{squirrel.Eq{"id": []string{"123", "456"}}}))
|
|
})
|
|
|
|
It("returns a 'like' condition for other filters", func() {
|
|
options.Filters = map[string]interface{}{"name": "joe"}
|
|
Expect(r.parseRestFilters(options)).To(Equal(squirrel.And{squirrel.Like{"name": "joe%"}}))
|
|
})
|
|
|
|
It("uses the custom filter", func() {
|
|
r.filterMappings = map[string]filterFunc{
|
|
"test": func(field string, value interface{}) squirrel.Sqlizer {
|
|
return squirrel.Gt{field: value}
|
|
},
|
|
}
|
|
options.Filters = map[string]interface{}{"test": 100}
|
|
Expect(r.parseRestFilters(options)).To(Equal(squirrel.And{squirrel.Gt{"test": 100}}))
|
|
})
|
|
})
|
|
})
|