* Change DLSite to String Fix #1573 Plus it seems the filtering search for ES didn't work for anidbid, vndbid and vgmdb. Should be fixed now. * Update helpers.go
153 lignes
4,7 Kio
Go
153 lignes
4,7 Kio
Go
package search
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/NyaaPantsu/nyaa/config"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestTorrentParam_Identifier(t *testing.T) {
|
|
torrentParam := &TorrentParam{}
|
|
assert := assert.New(t)
|
|
assert.Equal("MDAwMDAwMDAwMDBmYWxzZWZhbHNlZmFsc2VmYWxzZQ==", torrentParam.Identifier(), "It should be empty")
|
|
torrentParam = &TorrentParam{
|
|
NameLike: "test",
|
|
NotNull: "IS NULL",
|
|
Hidden: false,
|
|
}
|
|
assert.Equal("dGVzdElTIE5VTEwwMDAwMDAwMDAwMGZhbHNlZmFsc2VmYWxzZWZhbHNl", torrentParam.Identifier(), "It should be empty")
|
|
}
|
|
|
|
func TestTorrentParam_FromRequest(t *testing.T) {
|
|
torrentParam := &TorrentParam{}
|
|
assert := assert.New(t)
|
|
defTorrent := &TorrentParam{Sort: 2, Max: maxType(config.Get().Navigation.TorrentsPerPage), NotNull: "date IS NOT NULL"}
|
|
|
|
c := mockRequest(t, "/?")
|
|
torrentParam.FromRequest(c)
|
|
assert.Equal(defTorrent, torrentParam)
|
|
|
|
c = mockRequest(t, "/?fromID=3&q=xx&c=_")
|
|
torrentParam.FromRequest(c)
|
|
defTorrent.FromID, defTorrent.NameLike = 3, "xx"
|
|
assert.Equal(defTorrent, torrentParam)
|
|
}
|
|
|
|
func TestTorrentParam_Clone(t *testing.T) {
|
|
torrentParam := TorrentParam{
|
|
NameLike: "xx",
|
|
ToDate: DateFilter("2017-08-01"),
|
|
}
|
|
clone := torrentParam.Clone()
|
|
assert.Equal(t, torrentParam, clone, "Should be equal")
|
|
}
|
|
|
|
// TODO implement this by asking a json response
|
|
func TestTorrentParam_FindES(t *testing.T) {
|
|
|
|
}
|
|
|
|
func TestTorrentParam_ToESQuery(t *testing.T) {
|
|
assert := assert.New(t)
|
|
c := mockRequest(t, "/?fromID=3")
|
|
tests := []struct {
|
|
Test TorrentParam
|
|
Expected string
|
|
}{
|
|
{TorrentParam{}, ""},
|
|
{TorrentParam{NameLike: "lol"}, ""},
|
|
{TorrentParam{NameLike: "lol", FromID: 12}, "id:>12"},
|
|
{TorrentParam{NameLike: "lol", FromID: 12, FromDate: DateFilter("2017-08-01"), ToDate: DateFilter("2017-08-05")}, "id:>12 date: [2017-08-01 2017-08-05]"},
|
|
{TorrentParam{NameLike: "lol", FromID: 12, ToDate: DateFilter("2017-08-05")}, "id:>12 date: [* 2017-08-05]"},
|
|
{TorrentParam{NameLike: "lol", FromID: 12, FromDate: DateFilter("2017-08-01")}, "id:>12 date: [2017-08-01 *]"},
|
|
{TorrentParam{NameLike: "lol", FromID: 12, Category: Categories{&Category{3, 12}}}, "(category: 3 AND sub_category: 12) id:>12"},
|
|
{TorrentParam{NameLike: "lol", FromID: 12, Category: Categories{&Category{3, 12}, &Category{3, 12}}}, "((category: 3 AND sub_category: 12) OR (category: 3 AND sub_category: 12)) id:>12"},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
assert.Equal(test.Expected, test.Test.toESQuery(c).String())
|
|
}
|
|
}
|
|
|
|
func TestParseUInt(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
c := mockRequest(t, "/?userID=3")
|
|
userID := parseUInt(c, "userID")
|
|
assert.Equal(uint32(3), userID, "Should be equal to 3")
|
|
|
|
c = mockRequest(t, "/?userID=")
|
|
userID = parseUInt(c, "userID")
|
|
assert.Empty(userID, "Should be empty")
|
|
|
|
c = mockRequest(t, "/?userID=lol")
|
|
userID = parseUInt(c, "userID")
|
|
assert.Empty(userID, "Should be empty")
|
|
}
|
|
|
|
func TestParseOrder(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
c := mockRequest(t, "/?order=true")
|
|
order := parseOrder(c)
|
|
assert.Equal(true, order, "Should be true")
|
|
|
|
c = mockRequest(t, "/?order=")
|
|
order = parseOrder(c)
|
|
assert.Equal(false, order, "Should be false")
|
|
|
|
c = mockRequest(t, "/?order=lol")
|
|
order = parseOrder(c)
|
|
assert.Equal(false, order, "Should be false")
|
|
}
|
|
|
|
func TestParseTorrentID(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
c := mockRequest(t, "/?fromID=3")
|
|
fromID, torrentIDs := parseTorrentID(c)
|
|
assert.Equal(uint32(3), fromID, "Should be equal to 3")
|
|
assert.Empty(torrentIDs, "Should be empty")
|
|
|
|
c = mockRequest(t, "/?fromID=")
|
|
fromID, torrentIDs = parseTorrentID(c)
|
|
assert.Empty(fromID, "Should be empty")
|
|
assert.Empty(torrentIDs, "Should be empty")
|
|
|
|
c = mockRequest(t, "/?fromID=lol")
|
|
fromID, torrentIDs = parseTorrentID(c)
|
|
assert.Empty(fromID, "Should be empty")
|
|
assert.Empty(torrentIDs, "Should be empty")
|
|
|
|
c = mockRequest(t, "/?fromID=3&id=2")
|
|
fromID, torrentIDs = parseTorrentID(c)
|
|
assert.Equal(uint32(3), fromID, "Should be equal to 3")
|
|
assert.Equal([]uint32{2}, torrentIDs, "Should be 2")
|
|
|
|
c = mockRequest(t, "/?fromID=3&id=2&id=3&id=4")
|
|
fromID, torrentIDs = parseTorrentID(c)
|
|
assert.Equal(uint32(3), fromID, "Should be equal to 3")
|
|
assert.Equal([]uint32{2, 3, 4}, torrentIDs, "Should be 2,3,4")
|
|
|
|
c = mockRequest(t, "/?fromID=&id=")
|
|
fromID, torrentIDs = parseTorrentID(c)
|
|
assert.Empty(fromID, "Should be empty")
|
|
assert.Empty(torrentIDs, "Should be empty")
|
|
|
|
c = mockRequest(t, "/?fromID=lol&id=lol")
|
|
fromID, torrentIDs = parseTorrentID(c)
|
|
assert.Empty(fromID, "Should be empty")
|
|
assert.Empty(torrentIDs, "Should be empty")
|
|
}
|
|
|
|
func mockRequest(t *testing.T, url string) *gin.Context {
|
|
req, err := http.NewRequest("GET", url, nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
c := &gin.Context{Request: req}
|
|
return c
|
|
}
|