@@ -153,6 +153,17 @@ func TestStatusSearchSQLAndListings(t *testing.T) {
153153 require .NotEmpty (t , out .String ())
154154 }
155155
156+ for _ , args := range [][]string {
157+ {"--config" , cfgPath , "metadata" , "--json" },
158+ {"--config" , cfgPath , "status" , "--json" },
159+ } {
160+ var out bytes.Buffer
161+ require .NoError (t , Run (ctx , args , & out , & bytes.Buffer {}))
162+ var payload map [string ]any
163+ require .NoError (t , json .Unmarshal (out .Bytes (), & payload ))
164+ require .NotEmpty (t , payload )
165+ }
166+
156167 before , err := os .ReadFile (dbPath )
157168 require .NoError (t , err )
158169 var out bytes.Buffer
@@ -183,6 +194,60 @@ func TestTUIHelpReturnsUsage(t *testing.T) {
183194 require .Empty (t , stderr .String ())
184195}
185196
197+ func TestControlStatusIncludesShareAndFileSizes (t * testing.T ) {
198+ dir := t .TempDir ()
199+ dbPath := filepath .Join (dir , "discrawl.db" )
200+ require .NoError (t , os .WriteFile (dbPath , []byte ("db" ), 0o600 ))
201+ require .NoError (t , os .WriteFile (dbPath + "-wal" , []byte ("wal" ), 0o600 ))
202+ cfg := config .Default ()
203+ cfg .DBPath = dbPath
204+ cfg .Share .Remote = "https://github.com/openclaw/discrawl-share.git"
205+ cfg .Share .RepoPath = filepath .Join (dir , "share" )
206+ status := store.Status {
207+ DBPath : dbPath ,
208+ MessageCount : 5 ,
209+ ChannelCount : 2 ,
210+ }
211+
212+ out := controlStatus (filepath .Join (dir , "config.toml" ), cfg , status , true )
213+ require .Equal (t , int64 (2 ), out .DatabaseBytes )
214+ require .Equal (t , int64 (3 ), out .WALBytes )
215+ require .Zero (t , fileSize (filepath .Join (dir , "missing.db" )))
216+ require .NotNil (t , out .Share )
217+ require .True (t , out .Share .Enabled )
218+ require .True (t , out .Share .NeedsUpdate )
219+ require .Contains (t , out .Summary , "5 messages" )
220+ }
221+
222+ func TestFormattingAndTUISourceBranches (t * testing.T ) {
223+ require .Equal (t , "-" , formatDaysSilent (- 1 ))
224+ require .Equal (t , "4" , formatDaysSilent (4 ))
225+ require .Equal (t , "0" , formatWindowDuration (0 ))
226+ require .Equal (t , "2d" , formatWindowDuration (48 * time .Hour ))
227+ require .Equal (t , "3h" , formatWindowDuration (3 * time .Hour ))
228+ require .Equal (t , "1h30m0s" , formatWindowDuration (90 * time .Minute ))
229+ require .Equal (t , 6 * time .Hour , mustDuration ("bogus" ))
230+ require .Equal (t , 15 * time .Minute , mustDuration ("15m" ))
231+
232+ cfg := config .Default ()
233+ cfg .DBPath = "/tmp/discrawl.db"
234+ r := & runtime {cfg : cfg }
235+ require .Equal (t , "local" , r .archiveSourceKind ())
236+ require .Equal (t , cfg .DBPath , r .archiveSourceLocation ())
237+ guilds , err := r .resolveTUIGuilds (false , "" , "" )
238+ require .NoError (t , err )
239+ require .Empty (t , guilds )
240+
241+ r .cfg .DefaultGuildID = "guild-one"
242+ guilds , err = r .resolveTUIGuilds (false , "" , "" )
243+ require .NoError (t , err )
244+ require .Equal (t , []string {"guild-one" }, guilds )
245+
246+ r .cfg .Share .Remote = "https://github.com/openclaw/discrawl-share.git"
247+ require .Equal (t , "remote" , r .archiveSourceKind ())
248+ require .Equal (t , r .cfg .Share .Remote , r .archiveSourceLocation ())
249+ }
250+
186251func TestWiretapImportsDesktopDirectMessages (t * testing.T ) {
187252 ctx := context .Background ()
188253 dir := t .TempDir ()
0 commit comments