From 0726dd1abf5d4ee51390df9f2a36815c8f407ecb Mon Sep 17 00:00:00 2001 From: UTKARSH-PATIDAR <utkarsh.patidar@acquia.com> Date: Mon, 2 Dec 2024 09:50:52 +0530 Subject: [PATCH 1/4] Made the select and deselct button toggle it's state --- sveltejs/public/build/bundle.js | Bin 304378 -> 304368 bytes sveltejs/public/build/bundle.js.map | Bin 280128 -> 279712 bytes sveltejs/src/Project/ActionButton.svelte | 15 +-------------- 3 files changed, 1 insertion(+), 14 deletions(-) diff --git a/sveltejs/public/build/bundle.js b/sveltejs/public/build/bundle.js index 08bcd87ef70d068fa8e73b51baafb1ff1492ccc7..4a3b391bd7d6ff009d1dae9eb88d050bf0864442 100644 GIT binary patch delta 762 zcmex$Qs~1;p@tU5Elexi*^P~@Obj#?rY9P)$ZtRA&h(Ut#mK<KVtU{-X5sCpyqNwl zG8r3gKjFhv#=>N3yxk#?DVBrLc)Ec!i~9DXkxY4v$|{AWsimntnZ+eK3Mz@oC7ETZ zA&E&k3I#>^S*gh-TKWp+)9s>}EX6hSwGe8x^c9jzDx!^Iqo;3FVG&j`jE&VR&d*KN z(AP>U%}a(#o5pG?)YK@XCFT^TPG<~e%9_p}&BVUFD46LRBZ$d6J@y_W*Y^5QCV3V{ zi|Go*Oxn{klbAMf8$%7Sh}D^v!DO^OBAIC-BPU#Ry5clu9gs&YK^|?{u2apF%gAJE zvRyQt$%Ppt0S<v>)BWX{xwrFWGyPy>HMO)dG?=dF$1J;DBbTX*h1Jx|%Fq}jAhP{* zAyY6TlZhF~1$(%Spq86MEtf0-Sq>M)YPp|@ft7`(LbY;cngSw}q7eZK4IYimlGI#H z1zS4>5JN9BMZwnA78cfenJLilnp|*2a{7ZZX71@C6-<58Zx=IhPFGH5GTnZ!f@u;X zQ@r8yS1C*;Ade!40IP{P)Q_UuH`g$!FteH%!UU#ou3-|M{(J(H#CDkmroT)~#wOdP zo0;^v_;ON9keobu<16Lq2VOHPGFndW=w*tTJmZxOCp?Kv-*}l>jswP>&bX0TfBO7Q zjBMMp`k4wDr}OtSNi*wZrcD1ofk_EunbvggiA-G657aQpO}CuLB*bVu-De`x&FQXl uS%i^H)t$r?&!@wsprD|@$q7n7@y63Xv@uGxFPp^FzHAcn_GOb;LWBS+p7I(1 delta 700 zcmexxQs~!7p@tU5ElexiSxwBWObn)9oXe!J{j59FGbR>810$2|+r60hnOICrtc<4D zePgoT&g#o#$--o2w%s9+DVBrD)M)$sNTw-_(*u&3xu?$vVzL&@EDkJ9Elo|)(pN|> zsfad=oi6y3NrWjgWjbRpQ`U6;XeRdUJ~2$%Y)s~c)1!--w5KmgV%o%LG+nTg$!7cH zWTuIXj7HNRRxz1?TwuCgu8ip;<MhsOX5sCL=}gAVAW@U)a%D^{+hwwuRGFB}ji&R| zGD%F=@nh!Lo}A0n#lmD}x&3`1Qx+qWsU^sYJ<|m$nK&3tw=0w|9c7&UpbEs9KEaDg zVLD$K6A#Els6Fzg##R=Z3f0P)X$mlpXcQFXXQd{W=w+s8PCxj9Nq%~L1=9o$sQ*l+ zE0i#qZ1=5Xn#4Gre;PA8qX|}%nam8f^VBlgFf*B&fZVG+efI<=iS4}&On;e}Ow70U zG&AXQO`r9e*_P3KI$s}C45P*L>^>&>=>~j^Y}4QOF-gbj>nk{Cq$X!8WTq)3DnMPO zkXfvdnWs>ak*ZJ#3U@9A1qB7pw9>rflFa-(3{QBbXev}g)NtmcmMCNvd**@TYkF)6 zi|zDmZzgVipUmQtXqCj|lFYKyki?`|gbq$lxOxR!h2+wrqSU;S=?WE0V$-W9FiA6c zrc4iHViKPIu!Kbzp>+C&ekQr?lKo6cjMLXoU^1J&dIFQcbaPOg@lIqCVl<krFp=q| p04%(9pw63aSj!|j-Dnb%)ASE*j8g4$CNZ_onZ&$(&Lox)Apodv*bx8# diff --git a/sveltejs/public/build/bundle.js.map b/sveltejs/public/build/bundle.js.map index c9b60ffe29b7b248709e9822d2c5300b005a9f48..8acdbe17913a29782cb242fd2883c8507b486027 100644 GIT binary patch delta 334 zcmX@mBe<Ybuwe_M_qpW@&oeU1s1%l_mZth-7MDb;Bqo<+mZgRyCdKL%=jWzsOt(MJ zD9fdnnWCvsQ=^cUIDOSsMy2T|FEfg?zqrJ>{lz6FkNr&f&fAS9G0$dV^>j=ra-J?W zg;`HC)5+1%QODiUF;vId(a{-1I6{bY6dBj)j-t$>)8{W^W@RgMa&#<qo}Qb=EI<7~ z5_17_YKH6djmMZprr#4_X4}4DDzhp3^aLSh7Un7!|LGInGfS~pdpde<mz>9}!WiM{ zm>dkT!53t;Cx~zd5uT2Yo;se6j@}@`6Qsmh$JNo%RmU47=I`j}k0j>o=;&x|;N<A6 s@1&FM<mi~~G(F%TlgRYg`ONFst*t$sJ+oZ5D=uOdX56m4kXd#q0LDmY00000 delta 557 zcmZ3`DR`hquwe_M_qiy2eFf)?)Z}c1%ru2Wg@U5|tkmQZh0J1w%shpXj8uif($vz_ zm^=lAw9>rflFa-(h0NkWkXVWaRIz7@rb0DHg@Qs(DoCqm9$3NjP0mcV)|qJv8p)+a zMX7luKAFWO(JG0_C7ETZA&E(`aBT_-3JRIUP;Cmf3Q+aa11~a)@jy%lDN#_Eo_>*0 zcKWSoMs8jO1x;(1RPA&<7bXcVxDnRV6|xvbraw5x$hJM|9OFkO5p*}}Wu|DhPrS&u zed0x?>itZaF5CGgGS6mW%Xe{1DRQ3PXu~YZlIZB@Je~12v()tMbD8<4`#7_BPCpRC zY{KH{n3^<Q@F=s$^z~`XY}+qRVK!xF4R<VY^`HLXEwhw>wY8_CcZiO&qobovu%n~n z^u~)!!qbhcScF)D9UX(G8>q5~FcwXBRb^2y_H=YMbkcDLDfI*q;f{{sAf3)Sp^lEB zAeN(!tD~c%wWp(Vg_90Q&2;{qOrnx7X;+9EPe(^j9cM@9BIoJpbD8DUK^8$|K+dqX zwzf`m^t5yWxhEJbZVhs!`*!U)%qonm<xY;N!P6JaWj@L3=^T>fy1j7$voPcK=K0LB FO99v~u0a3* diff --git a/sveltejs/src/Project/ActionButton.svelte b/sveltejs/src/Project/ActionButton.svelte index e858a4846..f78417b24 100644 --- a/sveltejs/src/Project/ActionButton.svelte +++ b/sveltejs/src/Project/ActionButton.svelte @@ -16,19 +16,6 @@ const { Drupal } = window; - // Check if a project is in the queue - function isQueued(projectId) { - let isInQueue = false; - queueList.subscribe((currentList) => { - if (currentList[$activeTab]) { - isInQueue = currentList[$activeTab].some( - (item) => item.id === projectId, - ); - } - })(); - return isInQueue; - } - function handleAddToQueueClick(singleProject) { addToQueue($activeTab, singleProject); $updated = new Date().getTime(); @@ -50,7 +37,7 @@ {:else} <span> {#if PACKAGE_MANAGER.available && PACKAGE_MANAGER.errors.length === 0} - {#if isQueued(project.id)} + {#if $queueList[$activeTab].some((item) => item.id === project.id) || false} <ProjectButtonBase click={() => handleDequeueClick(project.id)}> {Drupal.t('Deselect')}<span class="visually-hidden" >{project.title}</span -- GitLab From 9f8d71713b320dd7387be3392cf1d72dc1ca8353 Mon Sep 17 00:00:00 2001 From: UTKARSH-PATIDAR <utkarsh.patidar@acquia.com> Date: Mon, 2 Dec 2024 11:49:02 +0530 Subject: [PATCH 2/4] Added tests and fixed the empty value issue --- sveltejs/public/build/bundle.js | Bin 304368 -> 304444 bytes sveltejs/public/build/bundle.js.map | Bin 279712 -> 279762 bytes sveltejs/src/Project/ActionButton.svelte | 2 +- .../ProjectBrowserInstallerUiTest.php | 26 +++++++++++++++++- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/sveltejs/public/build/bundle.js b/sveltejs/public/build/bundle.js index 4a3b391bd7d6ff009d1dae9eb88d050bf0864442..024bf65d8dcfc1cefab156f1f3b117713b64e755 100644 GIT binary patch delta 87 zcmexxQfSX9p@tU5Elhi&SrpXN6t+)@X6llW(oiWZO)X9J$t*63R!K}Q$t+6^Nlc1W rP*a;OS;1t-uBlK{qmY(3x!{WA^amo0obB}$Ozrg*%-icLSPFFjUs@i1 delta 54 zcmdmUO6bE$p@tU5Elhi&x4(&Iij$e1TES$?rchI(kd`>P;ELq*2O^A|?WZf4+D}(7 LZ$DkZQm6v}c^wuZ diff --git a/sveltejs/public/build/bundle.js.map b/sveltejs/public/build/bundle.js.map index 8acdbe17913a29782cb242fd2883c8507b486027..2fd8c782c248d56ff9c537d671880ceaa88c0c26 100644 GIT binary patch delta 169 zcmZ3`DR`+<uwe_M_eCiUmBP~0(o~<!;*w~U#N?99veb~oq*w(twdr0L8SUEJFEVa# zzsRI?h^^GcF{QwHx?w-FC{MbRqocEqyQ5>Mj`MUuQ)XeFTqj3IM~F!7^!;Kia?`bU zFmo}6PQNI`tiWFCtmEzI=sn%hnI&ZUff!~JR!_%NQ@81YN0~*YuTNuU+kSBhb0Y^+ UzVr0pxy;^7hAzt&%w=8<0PF5I6951J delta 163 zcmccADY&3huwe_M_r>XH7a48Y6l!V|(h{f7zr<+P{@^0x_6HZ4o*rcNbWAC7p3XO! zSx+U?$<fhK$KBB}RL9xT(HTTILWp#@%=EL1nB`duog5vDrzbeFh)jP!k=c3r1ZNft zZpYLNSCDQ;9na|t1(=1mGfib~<X{Y*-a41rn^WIOC)>%<G23Z+!3QSM?eFF?KUoF< DlzuoH diff --git a/sveltejs/src/Project/ActionButton.svelte b/sveltejs/src/Project/ActionButton.svelte index f78417b24..c9899c2a3 100644 --- a/sveltejs/src/Project/ActionButton.svelte +++ b/sveltejs/src/Project/ActionButton.svelte @@ -37,7 +37,7 @@ {:else} <span> {#if PACKAGE_MANAGER.available && PACKAGE_MANAGER.errors.length === 0} - {#if $queueList[$activeTab].some((item) => item.id === project.id) || false} + {#if ($queueList[$activeTab] && $queueList[$activeTab].some((item) => item.id === project.id)) || false} <ProjectButtonBase click={() => handleDequeueClick(project.id)}> {Drupal.t('Deselect')}<span class="visually-hidden" >{project.title}</span diff --git a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php index 0ff3409d7..cebeed573 100644 --- a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php +++ b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php @@ -8,10 +8,10 @@ use Behat\Mink\Element\NodeElement; use Drupal\Core\Recipe\Recipe; use Drupal\Core\State\StateInterface; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; -use Drupal\Tests\project_browser\Traits\PackageManagerFixtureUtilityTrait; use Drupal\project_browser\EnabledSourceHandler; use Drupal\project_browser\InstallState; use Drupal\system\SystemManager; +use Drupal\Tests\project_browser\Traits\PackageManagerFixtureUtilityTrait; /** * Provides tests for the Project Browser Installer UI. @@ -445,4 +445,28 @@ class ProjectBrowserInstallerUiTest extends WebDriverTestBase { ); } + /** + * Tests the "Select/Deselect" button functionality in modal. + */ + public function testSelectDeselectToggleInModal(): void { + $assert_session = $this->assertSession(); + $this->drupalGet('admin/modules/browse'); + $this->svelteInitHelper('text', 'Cream cheese on a bagel'); + $assert_session->waitForButton('Helvetica')?->click(); + // Click select button in modal. + $assert_session->elementExists('css', '.pb-detail-modal__sidebar_element button.project__action_button')->click(); + + $this->assertSame('Deselect Helvetica', + $assert_session->elementExists('css', '.pb-detail-modal__sidebar_element button.project__action_button')->getText()); + + // Close the modal. + $assert_session->waitForButton('Close')?->click(); + $assert_session->elementNotExists('xpath', '//span[contains(@class, "ui-dialog-title") and text()="Helvetica"]'); + $queue_button1 = $assert_session->waitForElementVisible('css', "#project-browser .pb-layout__main ul > li:nth-child(7) button.project__action_button"); + $this->assertNotEmpty($queue_button1); + // Asserts that the project is selected. + $was_queued = $queue_button1->waitFor(10, fn ($button) => $button->getText() === 'Deselect Helvetica'); + $this->assertTrue($was_queued); + } + } -- GitLab From 08781e58a2e9f0f22b7b713486bfa28324709868 Mon Sep 17 00:00:00 2001 From: UTKARSH-PATIDAR <utkarsh.patidar@acquia.com> Date: Tue, 3 Dec 2024 11:48:05 +0530 Subject: [PATCH 3/4] Changed the terminology --- .../FunctionalJavascript/ProjectBrowserInstallerUiTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php index cebeed573..67f1b0813 100644 --- a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php +++ b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php @@ -462,10 +462,10 @@ class ProjectBrowserInstallerUiTest extends WebDriverTestBase { // Close the modal. $assert_session->waitForButton('Close')?->click(); $assert_session->elementNotExists('xpath', '//span[contains(@class, "ui-dialog-title") and text()="Helvetica"]'); - $queue_button1 = $assert_session->waitForElementVisible('css', "#project-browser .pb-layout__main ul > li:nth-child(7) button.project__action_button"); - $this->assertNotEmpty($queue_button1); + $select_button = $assert_session->waitForElementVisible('css', "#project-browser .pb-layout__main ul > li:nth-child(7) button.project__action_button"); + $this->assertNotEmpty($select_button); // Asserts that the project is selected. - $was_queued = $queue_button1->waitFor(10, fn ($button) => $button->getText() === 'Deselect Helvetica'); + $was_queued = $select_button->waitFor(10, fn ($button) => $button->getText() === 'Deselect Helvetica'); $this->assertTrue($was_queued); } -- GitLab From 25d2177783aba9fbef49a8da49a22e5f07e38c5b Mon Sep 17 00:00:00 2001 From: UTKARSH-PATIDAR <utkarsh.patidar@acquia.com> Date: Tue, 3 Dec 2024 11:48:31 +0530 Subject: [PATCH 4/4] Changed the terminology --- .../FunctionalJavascript/ProjectBrowserInstallerUiTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php index 67f1b0813..0138d6133 100644 --- a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php +++ b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php @@ -465,8 +465,8 @@ class ProjectBrowserInstallerUiTest extends WebDriverTestBase { $select_button = $assert_session->waitForElementVisible('css', "#project-browser .pb-layout__main ul > li:nth-child(7) button.project__action_button"); $this->assertNotEmpty($select_button); // Asserts that the project is selected. - $was_queued = $select_button->waitFor(10, fn ($button) => $button->getText() === 'Deselect Helvetica'); - $this->assertTrue($was_queued); + $was_selected = $select_button->waitFor(10, fn ($button) => $button->getText() === 'Deselect Helvetica'); + $this->assertTrue($was_selected); } } -- GitLab