@@ -3,6 +3,7 @@ import { createRoot, getOwner, onCleanup } from "solid-js"
33import { createTabMemory } from "./tab-memory"
44import { nextTabAfterClose , pushClosedTab , removeClosedTabs , takeClosedTab , type ClosedTab } from "./closed-tabs"
55import type { SessionTab , Tab } from "./tabs"
6+ import { migrateTabs } from "./tab-migration"
67import type { ServerConnection } from "./server"
78
89const server = "local\nhttp://localhost:4096" as ServerConnection . Key
@@ -11,6 +12,28 @@ function sessionTab(sessionId: string): SessionTab {
1112 return { type : "session" , server, sessionId }
1213}
1314
15+ describe ( "tab migration" , ( ) => {
16+ test ( "drops null and malformed persisted tabs" , ( ) => {
17+ expect (
18+ migrateTabs (
19+ [ null , sessionTab ( "a" ) , { type : "session" , server } , { type : "unknown" , server } , "invalid" ] ,
20+ server ,
21+ ) ,
22+ ) . toEqual ( [ sessionTab ( "a" ) ] )
23+ } )
24+
25+ test ( "adds the fallback server to valid legacy tabs" , ( ) => {
26+ expect ( migrateTabs ( [ { type : "session" , sessionId : "a" , dirBase64 : "legacy" } ] , server ) ) . toEqual ( [
27+ sessionTab ( "a" ) ,
28+ ] )
29+ } )
30+
31+ test ( "replaces invalid top-level persisted data" , ( ) => {
32+ expect ( migrateTabs ( null , server ) ) . toEqual ( [ ] )
33+ expect ( migrateTabs ( { } , server ) ) . toEqual ( [ ] )
34+ } )
35+ } )
36+
1437describe ( "tab memory" , ( ) => {
1538 test ( "keeps state until its tab is removed" , ( ) => {
1639 createRoot ( ( dispose ) => {
0 commit comments