@@ -45,6 +45,55 @@ function simulatePersistence(hostContextId, sessionContext, limitBytes) {
4545 return { ok : true , payload : JSON . parse ( serialized ) } ;
4646}
4747
48+ function simulateWorkspaceExportDocument ( activeHostContextId , activeSessionPayload , savedSessions ) {
49+ return {
50+ documentKind : "workspace-manifest" ,
51+ schema : "html-js-gaming.project" ,
52+ version : 1 ,
53+ id : `workspace-v2-${ activeHostContextId } ` ,
54+ name : `Workspace V2 Session ${ activeSessionPayload . toolId } ` ,
55+ tools : {
56+ "palette-browser" : {
57+ schema : "html-js-gaming.palette" ,
58+ version : 1 ,
59+ name : "Workspace Active Palette" ,
60+ swatches : [ ]
61+ } ,
62+ "workspace-v2" : {
63+ schema : "html-js-gaming.workspace-v2-session/1" ,
64+ game : {
65+ id : `workspace-${ activeHostContextId } ` ,
66+ name : "Workspace V2 Session"
67+ } ,
68+ defaultToolId : "palette-manager-v2" ,
69+ activeToolId : activeSessionPayload . toolId ,
70+ activeHostContextId,
71+ activeSession : activeSessionPayload ,
72+ savedSessions
73+ }
74+ }
75+ } ;
76+ }
77+
78+ function simulateWorkspaceImportAndOpenAssetManager ( workspaceDocument ) {
79+ if ( ! workspaceDocument ?. tools ?. [ "workspace-v2" ] ?. activeSession ) {
80+ return { ok : false , message : "Missing activeSession in workspace manifest." } ;
81+ }
82+ const importedActiveSession = workspaceDocument . tools [ "workspace-v2" ] . activeSession ;
83+ if ( ! importedActiveSession . payloadJson || typeof importedActiveSession . payloadJson !== "object" || Array . isArray ( importedActiveSession . payloadJson ) ) {
84+ return { ok : false , message : "Imported activeSession.payloadJson is invalid." } ;
85+ }
86+ const launchPayload = {
87+ version : "v2" ,
88+ toolId : "asset-manager-v2" ,
89+ payloadJson : JSON . parse ( JSON . stringify ( importedActiveSession . payloadJson ) )
90+ } ;
91+ if ( ! launchPayload . payloadJson . assetCatalog || typeof launchPayload . payloadJson . assetCatalog !== "object" || Array . isArray ( launchPayload . payloadJson . assetCatalog ) ) {
92+ return { ok : false , message : "Open Asset Manager V2 cannot find payloadJson.assetCatalog." } ;
93+ }
94+ return { ok : true , launchPayload } ;
95+ }
96+
4897export function run ( ) {
4998 checkSyntax ( assetManagerPath ) ;
5099 checkSyntax ( workspacePath ) ;
@@ -72,6 +121,25 @@ export function run() {
72121
73122 const validWrite = simulatePersistence ( "asset-manager-v2-123" , validSession , 1024 * 1024 ) ;
74123 const invalidWrite = simulatePersistence ( "asset-manager-v2-123" , invalidSession , 1024 * 1024 ) ;
124+ const exportedWorkspaceDocument = simulateWorkspaceExportDocument (
125+ "asset-manager-v2-123" ,
126+ validWrite . payload ,
127+ {
128+ "saved-asset-session" : {
129+ version : "v2" ,
130+ toolId : "asset-manager-v2" ,
131+ payloadJson : {
132+ assetCatalog : {
133+ name : "Saved Catalog" ,
134+ entries : [
135+ { id : "b2" , label : "Asteroid" , kind : "png" , path : "assets/asteroid.png" }
136+ ]
137+ }
138+ }
139+ }
140+ }
141+ ) ;
142+ const importAndOpen = simulateWorkspaceImportAndOpenAssetManager ( exportedWorkspaceDocument ) ;
75143
76144 const summary = {
77145 generatedAt : new Date ( ) . toISOString ( ) ,
@@ -84,8 +152,14 @@ export function run() {
84152 workspaceSource . includes ( "this.restoreActiveSessionFromHostContextIdUrl();" ) &&
85153 workspaceSource . includes ( "if (parsed.value.toolId !== \"asset-manager-v2\")" ) &&
86154 workspaceSource . includes ( "this.syncWorkspaceManifestTextarea();" ) ,
155+ hasAssetManagerOpenLaunchUsingActivePayloadJson : workspaceSource . includes ( "openAssetManagerFromWorkspace()" ) &&
156+ workspaceSource . includes ( "payloadJson: this.cloneSessionValue(this.currentSessionPayload.payloadJson)" ) ,
87157 validWriteAllowed : validWrite . ok === true && validWrite . payload ?. payloadJson ?. assetCatalog ?. name === "Catalog" ,
88- invalidWriteBlocked : invalidWrite . ok === false
158+ invalidWriteBlocked : invalidWrite . ok === false ,
159+ exportedManifestRetainsActiveAssetCatalog : exportedWorkspaceDocument . tools [ "workspace-v2" ] . activeSession ?. payloadJson ?. assetCatalog ?. name === "Catalog" &&
160+ Array . isArray ( exportedWorkspaceDocument . tools [ "workspace-v2" ] . activeSession ?. payloadJson ?. assetCatalog ?. entries ) ,
161+ importThenOpenAssetManagerLoadsCatalog : importAndOpen . ok === true &&
162+ importAndOpen . launchPayload ?. payloadJson ?. assetCatalog ?. entries ?. [ 0 ] ?. id === "a1"
89163 }
90164 } ;
91165
0 commit comments