更新若干功能
This commit is contained in:
60
search_test.go
Normal file
60
search_test.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGlobalSearch(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
s, e := OpenStore(filepath.Join(dir, "search.db"))
|
||||
if e != nil {
|
||||
t.Fatal(e)
|
||||
}
|
||||
defer s.db.Close()
|
||||
a := NewApp()
|
||||
a.store = s
|
||||
|
||||
if hits, e := a.GlobalSearch(" "); e != nil || len(hits) != 0 {
|
||||
t.Fatalf("blank query should return empty, got %v err=%v", hits, e)
|
||||
}
|
||||
|
||||
if _, e := s.SaveProject(0, ProjectInput{Name: "CodeCounter", Path: t.TempDir()}); e != nil {
|
||||
t.Fatal(e)
|
||||
}
|
||||
if _, e := a.SaveTodo(Todo{Title: "写周报 counter 汇总"}); e != nil {
|
||||
t.Fatal(e)
|
||||
}
|
||||
deleted, e := a.SaveTodo(Todo{Title: "counter 已删待办"})
|
||||
if e != nil {
|
||||
t.Fatal(e)
|
||||
}
|
||||
if e := a.DeleteTodo(deleted.ID); e != nil {
|
||||
t.Fatal(e)
|
||||
}
|
||||
|
||||
hits, e := a.GlobalSearch("counter")
|
||||
if e != nil {
|
||||
t.Fatal(e)
|
||||
}
|
||||
var nProj, nTodo int
|
||||
for _, h := range hits {
|
||||
switch h.Kind {
|
||||
case "project":
|
||||
nProj++
|
||||
case "todo":
|
||||
nTodo++
|
||||
if h.Title == "counter 已删待办" {
|
||||
t.Fatal("deleted todo must be excluded")
|
||||
}
|
||||
}
|
||||
}
|
||||
if nProj != 1 || nTodo != 1 {
|
||||
t.Fatalf("want 1 project + 1 todo, got proj=%d todo=%d (%v)", nProj, nTodo, hits)
|
||||
}
|
||||
|
||||
// LIKE 通配符按字面匹配:% 不应命中所有行。
|
||||
if hits, e := a.GlobalSearch("%"); e != nil || len(hits) != 0 {
|
||||
t.Fatalf("literal %% should not match, got %v err=%v", hits, e)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user