@@ -141,7 +141,9 @@ describe('WebstatusSavedSearchControls', () => {
141141 } ) ;
142142
143143 it ( 'does not render active search controls when no savedSearch is provided' , ( ) => {
144- const shareButton = element . shadowRoot ! . querySelector ( 'sl-copy-button' ) ;
144+ const shareButton = element . shadowRoot ! . querySelector (
145+ 'sl-icon-button[name="share"]' ,
146+ ) ;
145147 const bookmarkButton = element . shadowRoot ! . querySelector (
146148 'sl-icon-button[name^="star"]' ,
147149 ) ;
@@ -182,7 +184,9 @@ describe('WebstatusSavedSearchControls', () => {
182184 const saveButton = element . shadowRoot ! . querySelector (
183185 'sl-icon-button[name="floppy"]' ,
184186 ) ;
185- const shareButton = element . shadowRoot ! . querySelector ( 'sl-copy-button' ) ;
187+ const shareButton = element . shadowRoot ! . querySelector (
188+ 'sl-icon-button[name="share"]' ,
189+ ) ;
186190 const bookmarkButton = element . shadowRoot ! . querySelector (
187191 'sl-icon-button[name="star"]' ,
188192 ) ;
@@ -205,13 +209,33 @@ describe('WebstatusSavedSearchControls', () => {
205209 expect ( deleteButton ) . to . not . exist ;
206210 } ) ;
207211
208- it ( 'configures share button correctly' , ( ) => {
209- const copyButton = element . shadowRoot ! . querySelector ( 'sl-copy-button' ) ;
210- const expectedUrl = `http://localhost:8080/features?q=saved%3A${ mockSavedSearchViewerNotBookmarked . id } ` ;
211- expect ( copyButton ) . to . have . attribute ( 'value' , expectedUrl ) ;
212- expect ( formatOverviewPageUrlStub ) . to . have . been . calledWith ( mockLocation , {
213- q : `saved:${ mockSavedSearchViewerNotBookmarked . id } ` ,
214- } ) ;
212+ it ( 'opens modal when share button is clicked and renders QR code' , async ( ) => {
213+ const shareButton = element . shadowRoot ! . querySelector < SlIconButton > (
214+ 'sl-icon-button[name="share"]' ,
215+ ) ! ;
216+ shareButton . click ( ) ;
217+ await element . updateComplete ;
218+
219+ // Wait for dialog to appear in body
220+ await waitUntil (
221+ ( ) =>
222+ document . body . querySelector ( 'webstatus-saved-search-share-dialog' ) !==
223+ null ,
224+ ) ;
225+
226+ const shareDialog = document . body . querySelector (
227+ 'webstatus-saved-search-share-dialog' ,
228+ ) ! ;
229+ expect ( shareDialog ) . to . exist ;
230+
231+ const dialog = shareDialog . shadowRoot ! . querySelector ( 'sl-dialog' ) ;
232+ expect ( dialog ) . to . exist ;
233+
234+ const qrCode = dialog ! . querySelector ( 'sl-qr-code' ) ;
235+ expect ( qrCode ) . to . exist ;
236+
237+ const copyButton = dialog ! . querySelector ( 'button.blue-copy-button' ) ;
238+ expect ( copyButton ) . to . exist ;
215239 } ) ;
216240
217241 it ( 'calls handleBookmarkSavedSearch to bookmark when bookmark button is clicked' , async ( ) => {
@@ -332,7 +356,9 @@ describe('WebstatusSavedSearchControls', () => {
332356 const saveButton = element . shadowRoot ! . querySelector (
333357 'sl-icon-button[name="floppy"]' ,
334358 ) ;
335- const shareButton = element . shadowRoot ! . querySelector ( 'sl-copy-button' ) ;
359+ const shareButton = element . shadowRoot ! . querySelector (
360+ 'sl-icon-button[name="share"]' ,
361+ ) ;
336362 const bookmarkButton = element . shadowRoot ! . querySelector (
337363 'sl-icon-button[name="star"]' ,
338364 ) ;
@@ -446,7 +472,9 @@ describe('WebstatusSavedSearchControls', () => {
446472 const saveButton = element . shadowRoot ! . querySelector (
447473 'sl-icon-button[name="floppy"]' ,
448474 ) ;
449- const shareButton = element . shadowRoot ! . querySelector ( 'sl-copy-button' ) ;
475+ const shareButton = element . shadowRoot ! . querySelector (
476+ 'sl-icon-button[name="share"]' ,
477+ ) ;
450478 const bookmarkButton = element . shadowRoot ! . querySelector (
451479 'sl-icon-button[name="star"]' ,
452480 ) ;
0 commit comments