mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-28 11:16:37 +08:00
6bf8a6878a
上传/重试前按父目录+文件名+SHA1 探活,已有同内容副本则跳过并清脏副本; 成功后回写新 file_id;同步扫描认可 30 分钟内同路径同大小的 done 任务, 缩短「任务已完成但列表未反映」导致的再入队窗口。 Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: truewhile <truewhile@users.noreply.github.com>
55 lines
1.8 KiB
Go
55 lines
1.8 KiB
Go
package cloud115
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"net/http"
|
||
"testing"
|
||
)
|
||
|
||
func TestFindNamedContentInParentMatchAndSameName(t *testing.T) {
|
||
sha := "AABBCCDDEEFF00112233445566778899AABBCCDD"
|
||
mockAPI(t, func(w http.ResponseWriter, r *http.Request) {
|
||
if r.URL.Path != "/open/ufile/files" {
|
||
t.Errorf("unexpected path %s", r.URL.Path)
|
||
}
|
||
w.Write([]byte(fmt.Sprintf(`{"state":true,"data":[
|
||
{"fid":"dir-1","fc":"0","fn":"sub","fs":0},
|
||
{"fid":"keep","fc":"1","fn":"a.nfo","fs":10,"sha1":%q,"fta":"1"},
|
||
{"fid":"dirty","fc":"1","fn":"a.nfo","fs":10,"sha1":"OTHER","fta":"1"},
|
||
{"fid":"other","fc":"1","fn":"b.nfo","fs":10,"sha1":%q,"fta":"1"},
|
||
{"fid":"incomplete","fc":"1","fn":"a.nfo","fs":10,"sha1":%q,"fta":"0"}
|
||
]}`, sha, sha, sha)))
|
||
})
|
||
c := NewOpenClient("100195125", "at1", "rt1")
|
||
matched, sameName, err := c.FindNamedContentInParent(context.Background(), "parent", "a.nfo", sha, 10)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
if matched == nil || matched.FileId != "keep" {
|
||
t.Fatalf("matched = %+v, want keep", matched)
|
||
}
|
||
if len(sameName) != 2 { // keep + dirty;incomplete 被 fta 过滤
|
||
t.Fatalf("sameName len=%d, want 2 (incomplete excluded)", len(sameName))
|
||
}
|
||
}
|
||
|
||
func TestFindNamedContentInParentNoMatch(t *testing.T) {
|
||
mockAPI(t, func(w http.ResponseWriter, r *http.Request) {
|
||
w.Write([]byte(`{"state":true,"data":[
|
||
{"fid":"x","fc":"1","fn":"a.nfo","fs":9,"sha1":"OTHER","fta":"1"}
|
||
]}`))
|
||
})
|
||
c := NewOpenClient("100195125", "at1", "rt1")
|
||
matched, sameName, err := c.FindNamedContentInParent(context.Background(), "parent", "a.nfo", "WANT", 10)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
if matched != nil {
|
||
t.Fatalf("expected no match, got %+v", matched)
|
||
}
|
||
if len(sameName) != 1 {
|
||
t.Fatalf("sameName should still list name hits, got %d", len(sameName))
|
||
}
|
||
}
|