From 5a8fd17cd1423f46b5485c5ebba9484c81d03b30 Mon Sep 17 00:00:00 2001 From: Hassan Abdel-Rahman Date: Fri, 4 Oct 2024 13:29:12 -0400 Subject: [PATCH] default the realm in teh realm chooser to the current realm if its writable --- .../components/operator-mode/code-submode.gts | 12 +++--- .../tests/acceptance/code-submode-test.ts | 41 +++++++++++++++++-- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/packages/host/app/components/operator-mode/code-submode.gts b/packages/host/app/components/operator-mode/code-submode.gts index 8716030ce9..aff29c36c1 100644 --- a/packages/host/app/components/operator-mode/code-submode.gts +++ b/packages/host/app/components/operator-mode/code-submode.gts @@ -611,16 +611,16 @@ export default class CodeSubmode extends Component { if (sourceInstance && this.realm.canWrite(sourceInstance.id)) { destinationRealm = this.realm.url(sourceInstance.id); - } - - if ( + } else if ( definitionClass?.ref && this.realm.canWrite(definitionClass.ref.module) ) { destinationRealm = this.realm.url(definitionClass.ref.module); - } - - if (!destinationRealm && this.realm.defaultWritableRealm) { + } else if ( + this.realm.canWrite(this.operatorModeStateService.realmURL.href) + ) { + destinationRealm = this.operatorModeStateService.realmURL.href; + } else if (this.realm.defaultWritableRealm) { destinationRealm = this.realm.defaultWritableRealm.path; } diff --git a/packages/host/tests/acceptance/code-submode-test.ts b/packages/host/tests/acceptance/code-submode-test.ts index 932298a880..592bc4ee37 100644 --- a/packages/host/tests/acceptance/code-submode-test.ts +++ b/packages/host/tests/acceptance/code-submode-test.ts @@ -405,6 +405,10 @@ const notFoundAdoptionInstance = `{ module('Acceptance | code submode tests', function (_hooks) { module('multiple realms', function (hooks) { + let personalRealmURL: string; + let additionalRealmURL: string; + let catalogRealmURL: string; + setupApplicationTest(hooks); setupLocalIndexing(hooks); setupServerSentEvents(hooks); @@ -412,13 +416,19 @@ module('Acceptance | code submode tests', function (_hooks) { loggedInAs: '@testuser:staging', }); + async function openNewFileModal(menuSelection: string) { + await waitFor('[data-test-new-file-button]'); + await click('[data-test-new-file-button]'); + await click(`[data-test-boxel-menu-item-text="${menuSelection}"]`); + } + hooks.beforeEach(async function () { let realmServerService = this.owner.lookup( 'service:realm-server', ) as RealmServerService; - const personalRealmURL = `${realmServerService.url}testuser/personal/`; - const additionalRealmURL = `${realmServerService.url}testuser/aaa/`; // writeable realm that is lexically before the personal realm - const catalogRealmURL = `${realmServerService.url}catalog/`; + personalRealmURL = `${realmServerService.url}testuser/personal/`; + additionalRealmURL = `${realmServerService.url}testuser/aaa/`; // writeable realm that is lexically before the personal realm + catalogRealmURL = `${realmServerService.url}catalog/`; setActiveRealms([catalogRealmURL, additionalRealmURL, personalRealmURL]); await setupAcceptanceTestRealm({ @@ -475,6 +485,31 @@ module('Acceptance | code submode tests', function (_hooks) { .dom('[data-test-card-url-bar-realm-info]') .containsText(`in Test User's Workspace`); }); + + test('first item in add file realm dropdown is the currently displayed realm', async function (assert) { + await visitOperatorMode({ + submode: 'code', + }); + + await waitFor('[data-test-file]'); + await openNewFileModal('Card Definition'); + assert + .dom('[data-test-selected-realm]') + .containsText( + `Test User's Workspace`, + 'the selected (default) realm is correct', + ); + await click('[data-test-cancel-create-file]'); + + await visitOperatorMode({ + submode: 'code', + codePath: `${additionalRealmURL}hello.txt`, + }); + await openNewFileModal('Card Definition'); + assert + .dom('[data-test-selected-realm]') + .containsText(`Additional Workspace`, 'the selected realm is correct'); + }); }); module('single realm', function (hooks) {