site_test.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package tools
  2. import (
  3. "testing"
  4. "fwh-toolbox-server/domain"
  5. )
  6. func TestSiteSearchFilter(t *testing.T) {
  7. if f, err := siteSearchFilter(siteSearchArgs{Keyword: "x"}); err != nil || f != nil {
  8. t.Errorf("没有筛选条件时应返回 nil:%+v %v", f, err)
  9. }
  10. f, err := siteSearchFilter(siteSearchArgs{Country: "us", Online: "online", Version: "V10R11(B42", ActiveFrom: "2026-01-01", ActiveTo: "2026-01-31"})
  11. if err != nil || f == nil || f.Logic != "and" || len(f.SubFilter) != 1 {
  12. t.Fatalf("应生成一组“且”条件:%+v %v", f, err)
  13. }
  14. got := map[string]domain.SiteInfoFilterConfig{}
  15. for _, c := range f.SubFilter[0].Config {
  16. got[c.Key] = c
  17. }
  18. if c := got["countryId"]; c.Type != domain.FilterEqualInt || *c.Para1.Int != 2 {
  19. t.Errorf("us 应为 countryId=2:%+v", c)
  20. }
  21. if c := got["status"]; *c.Para1.Int != 1 {
  22. t.Errorf("online 应为 status=1:%+v", c)
  23. }
  24. if c := got["version"]; c.Type != domain.FilterIncludeString || *c.Para1.String != `V10R11\(B42` {
  25. t.Errorf("版本应转义为字面匹配:%q", *c.Para1.String)
  26. }
  27. if c := got["activeTime"]; *c.Para1.String != "2026-01-01 00:00:00" || *c.Para2.String != "2026-01-31 23:59:59" {
  28. t.Errorf("激活时间范围不对:%s ~ %s", *c.Para1.String, *c.Para2.String)
  29. }
  30. f, _ = siteSearchFilter(siteSearchArgs{ActiveFrom: "2026-01-01 08:00:00"})
  31. 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" {
  32. t.Errorf("只给起始时间时止时间不限:%s ~ %s", *c.Para1.String, *c.Para2.String)
  33. }
  34. for _, bad := range []siteSearchArgs{{Country: "cn"}, {RunStatus: "busy"}, {ActiveTo: "2026/01/01"}} {
  35. if _, err := siteSearchFilter(bad); err == nil {
  36. t.Errorf("应拒绝:%+v", bad)
  37. }
  38. }
  39. }