183 lignes
4,5 Kio
Go
183 lignes
4,5 Kio
Go
|
package search
|
||
|
|
||
|
import (
|
||
|
"path"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/NyaaPantsu/nyaa/config"
|
||
|
"github.com/NyaaPantsu/nyaa/utils/categories"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
// run before config/parse.go:init()
|
||
|
var _ = func() (_ struct{}) {
|
||
|
config.Configpaths[1] = path.Join("..", "..", config.Configpaths[1])
|
||
|
config.Configpaths[0] = path.Join("..", "..", config.Configpaths[0])
|
||
|
config.Reload()
|
||
|
categories.InitCategories()
|
||
|
return
|
||
|
}()
|
||
|
|
||
|
func TestParseCategories(t *testing.T) {
|
||
|
assert := assert.New(t)
|
||
|
cat := ParseCategories("")
|
||
|
assert.Empty(cat, "ParseCategories with empty arg doesn't return an empty array")
|
||
|
cat = ParseCategories("5050")
|
||
|
assert.Empty(cat, "ParseCategories with wrong arg doesn't return an empty array")
|
||
|
|
||
|
cat = ParseCategories("50_50")
|
||
|
assert.Empty(cat, "ParseCategories with wrong arg doesn't return an empty array")
|
||
|
|
||
|
cat = ParseCategories("3_13")
|
||
|
catEqual := []*Category{
|
||
|
&Category{
|
||
|
Main: 3,
|
||
|
Sub: 13,
|
||
|
},
|
||
|
}
|
||
|
assert.Equal(catEqual, cat, "ParseCategories with good arg doesn't return the right array")
|
||
|
|
||
|
cat = ParseCategories("_")
|
||
|
assert.Empty(cat, "Should be empty")
|
||
|
|
||
|
cat = ParseCategories("3_13,3_5")
|
||
|
catEqual = []*Category{
|
||
|
&Category{
|
||
|
Main: 3,
|
||
|
Sub: 13,
|
||
|
},
|
||
|
&Category{
|
||
|
Main: 3,
|
||
|
Sub: 5,
|
||
|
},
|
||
|
}
|
||
|
assert.Equal(catEqual, cat, "ParseCategories with good arg doesn't return the right array")
|
||
|
|
||
|
cat = ParseCategories("3_13,3_5,5_50")
|
||
|
assert.Equal(catEqual, cat, "ParseCategories with good arg doesn't filter the wrong categories")
|
||
|
}
|
||
|
|
||
|
func TestCategory_IsSet(t *testing.T) {
|
||
|
cat := Category{
|
||
|
Main: 3,
|
||
|
Sub: 13,
|
||
|
}
|
||
|
assert := assert.New(t)
|
||
|
assert.Equal(true, cat.IsSet(), "Should be equal to true")
|
||
|
cat.Main = 0
|
||
|
assert.Equal(false, cat.IsSet(), "Should be equal to false")
|
||
|
cat.Sub = 0
|
||
|
assert.Equal(false, cat.IsSet(), "Should be equal to false")
|
||
|
}
|
||
|
|
||
|
func TestCategory_IsSubSet(t *testing.T) {
|
||
|
cat := Category{
|
||
|
Main: 3,
|
||
|
Sub: 13,
|
||
|
}
|
||
|
assert := assert.New(t)
|
||
|
assert.Equal(true, cat.IsSubSet(), "Should be equal to true")
|
||
|
cat.Main = 0
|
||
|
assert.Equal(true, cat.IsSubSet(), "Should be equal to true")
|
||
|
cat.Sub = 0
|
||
|
assert.Equal(false, cat.IsSubSet(), "Should be equal to false")
|
||
|
}
|
||
|
|
||
|
func TestCategory_IsMainSet(t *testing.T) {
|
||
|
cat := Category{
|
||
|
Main: 3,
|
||
|
Sub: 13,
|
||
|
}
|
||
|
assert := assert.New(t)
|
||
|
assert.Equal(true, cat.IsMainSet(), "Should be equal to true")
|
||
|
cat.Main = 0
|
||
|
assert.Equal(false, cat.IsMainSet(), "Should be equal to false")
|
||
|
cat.Sub = 0
|
||
|
assert.Equal(false, cat.IsMainSet(), "Should be equal to false")
|
||
|
}
|
||
|
|
||
|
func TestCategory_String(t *testing.T) {
|
||
|
cat := Category{
|
||
|
Main: 3,
|
||
|
Sub: 13,
|
||
|
}
|
||
|
assert := assert.New(t)
|
||
|
assert.Equal("3_13", cat.String(), "Should be equal to '3_13'")
|
||
|
cat.Sub = 0
|
||
|
assert.Equal("3_", cat.String(), "Should be equal to '3_'")
|
||
|
cat.Main = 0
|
||
|
assert.Equal("_", cat.String(), "Should be equal to '_'")
|
||
|
}
|
||
|
|
||
|
func TestCategories_ToDBQuery(t *testing.T) {
|
||
|
cat := Categories{&Category{
|
||
|
Main: 3,
|
||
|
Sub: 13,
|
||
|
},
|
||
|
&Category{
|
||
|
Main: 3,
|
||
|
Sub: 5,
|
||
|
},
|
||
|
}
|
||
|
assert := assert.New(t)
|
||
|
search, args := cat.ToDBQuery()
|
||
|
assert.Equal("(category = ? AND sub_category = ?) OR (category = ? AND sub_category = ?)", search, "Should be equal")
|
||
|
assert.Equal([]interface{}{uint8(3), uint8(13), uint8(3), uint8(5)}, args, "Should be equal")
|
||
|
cat = Categories{&Category{
|
||
|
Main: 3,
|
||
|
Sub: 13,
|
||
|
},
|
||
|
}
|
||
|
search, args = cat.ToDBQuery()
|
||
|
assert.Equal("category = ? AND sub_category = ?", search, "Should be equal to 'category = ? AND sub_category = ?'")
|
||
|
assert.Equal([]interface{}{uint8(3), uint8(13)}, args, "Should be equal to '3_13'")
|
||
|
cat = Categories{&Category{
|
||
|
Main: 3,
|
||
|
Sub: 0,
|
||
|
},
|
||
|
}
|
||
|
search, args = cat.ToDBQuery()
|
||
|
assert.Equal("category = ?", search, "Should be equal to 'category = ?'")
|
||
|
assert.Equal([]interface{}{uint8(3)}, args, "Should be equal to '3'")
|
||
|
cat = Categories{&Category{
|
||
|
Main: 0,
|
||
|
Sub: 0,
|
||
|
},
|
||
|
}
|
||
|
search, args = cat.ToDBQuery()
|
||
|
assert.Empty(search, "Should be empty")
|
||
|
assert.Empty(args, "Should be empty")
|
||
|
}
|
||
|
|
||
|
func TestCategories_ToESQuery(t *testing.T) {
|
||
|
cat := Categories{&Category{
|
||
|
Main: 3,
|
||
|
Sub: 13,
|
||
|
},
|
||
|
&Category{
|
||
|
Main: 3,
|
||
|
Sub: 5,
|
||
|
},
|
||
|
}
|
||
|
assert := assert.New(t)
|
||
|
assert.Equal("((category: 3 AND sub_category: 13) OR (category: 3 AND sub_category: 5))", cat.ToESQuery(), "Should be equal")
|
||
|
cat = Categories{&Category{
|
||
|
Main: 3,
|
||
|
Sub: 13,
|
||
|
},
|
||
|
}
|
||
|
assert.Equal("(category: 3 AND sub_category: 13)", cat.ToESQuery(), "Should be equal")
|
||
|
cat = Categories{&Category{
|
||
|
Main: 3,
|
||
|
Sub: 0,
|
||
|
},
|
||
|
}
|
||
|
assert.Equal("(category: 3)", cat.ToESQuery(), "Should be equal")
|
||
|
cat = Categories{&Category{
|
||
|
Main: 0,
|
||
|
Sub: 0,
|
||
|
},
|
||
|
}
|
||
|
assert.Equal("", cat.ToESQuery(), "Should be empty")
|
||
|
}
|