package main import ( "os" "strings" "testing" ) // TestWireChannels_WiresInboundDocumentStore 是一道「接线存在性」防回归检查 // (切片 M1;与 `TestWireRuntime_UsesTheCompositionRootSeams` 同一手法)。 // // 组合根本身无法在单元测试里实例化(开库、迁移、绑端口,而后端还在运行), // 因此「IM 入站附件确实被接上了共享文档存储」只能在源码层钉住:列出的字符串 // 少任何一个,桥接器都会静默退回「未接线」的诚实路径 —— 附件不再落库、S7 的 GC // 也看不到 IM 来源的文件,而这一切**不会**让任何既有用例变红。所以必须显式钉住。 // // 最后一对断言是**成对契约**:入站附件落盘的目录与文档摄取层读原文件的目录 // 必须逐字同源(`/uploads/documents`),否则附件会落在一个地方、 // 装配期去另一个地方找 —— 症状是「附件全都读不到」,且两边各自都自洽。 func TestWireChannels_WiresInboundDocumentStore(t *testing.T) { t.Parallel() const dirSeam = `UploadsDir: filepath.Join(docDataDir, "uploads", "documents")` src, err := os.ReadFile("wire_channels.go") if err != nil { t.Fatalf("read wire_channels.go: %v", err) } for _, want := range []string{ "DocumentStore: documents.StoreConfig{", dirSeam, "Meta: documents.MetadataWriterFor(a.dbPath, a.log)", "docDataDir := resolveDataDir(a.cfg)", } { if !strings.Contains(string(src), want) { t.Fatalf("wire_channels.go 里找不到 %q —— IM 入站附件没有被接上共享文档存储", want) } } reader, err := os.ReadFile("wire_runtime.go") if err != nil { t.Fatalf("read wire_runtime.go: %v", err) } if !strings.Contains(string(reader), dirSeam) { t.Fatalf("文档摄取层的目录与 IM 入站附件的目录不同源(wire_runtime.go 里找不到 %q)—— "+ "附件会落在一个地方、装配期去另一个地方找", dirSeam) } }