| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package tools
- import (
- "testing"
- "fwh-toolbox-server/domain"
- )
- func TestSiteSearchFilter(t *testing.T) {
- if f, err := siteSearchFilter(siteSearchArgs{Keyword: "x"}); err != nil || f != nil {
- t.Errorf("没有筛选条件时应返回 nil:%+v %v", f, err)
- }
- f, err := siteSearchFilter(siteSearchArgs{Country: "us", Online: "online", Version: "V10R11(B42", ActiveFrom: "2026-01-01", ActiveTo: "2026-01-31"})
- if err != nil || f == nil || f.Logic != "and" || len(f.SubFilter) != 1 {
- t.Fatalf("应生成一组“且”条件:%+v %v", f, err)
- }
- got := map[string]domain.SiteInfoFilterConfig{}
- for _, c := range f.SubFilter[0].Config {
- got[c.Key] = c
- }
- if c := got["countryId"]; c.Type != domain.FilterEqualInt || *c.Para1.Int != 2 {
- t.Errorf("us 应为 countryId=2:%+v", c)
- }
- if c := got["status"]; *c.Para1.Int != 1 {
- t.Errorf("online 应为 status=1:%+v", c)
- }
- if c := got["version"]; c.Type != domain.FilterIncludeString || *c.Para1.String != `V10R11\(B42` {
- t.Errorf("版本应转义为字面匹配:%q", *c.Para1.String)
- }
- if c := got["activeTime"]; *c.Para1.String != "2026-01-01 00:00:00" || *c.Para2.String != "2026-01-31 23:59:59" {
- t.Errorf("激活时间范围不对:%s ~ %s", *c.Para1.String, *c.Para2.String)
- }
- f, _ = siteSearchFilter(siteSearchArgs{ActiveFrom: "2026-01-01 08:00:00"})
- if c := f.SubFilter[0].Config[0]; *c.Para1.String != "2026-01-01 08:00:00" || *c.Para2.String != "9999-12-31 23:59:59" {
- t.Errorf("只给起始时间时止时间不限:%s ~ %s", *c.Para1.String, *c.Para2.String)
- }
- for _, bad := range []siteSearchArgs{{Country: "cn"}, {RunStatus: "busy"}, {ActiveTo: "2026/01/01"}} {
- if _, err := siteSearchFilter(bad); err == nil {
- t.Errorf("应拒绝:%+v", bad)
- }
- }
- }
|