@@ -50,6 +50,8 @@ describe('QuickEmbed', () => {
5050 ...overrides ,
5151 } )
5252 const onClose = jest . fn ( )
53+ const onCopy = jest . fn ( )
54+ document . execCommand = jest . fn ( )
5355
5456 beforeEach ( ( ) => {
5557 jest . spyOn ( window , 'location' , 'get' ) . mockReturnValue ( {
@@ -69,7 +71,7 @@ describe('QuickEmbed', () => {
6971 } )
7072
7173 it ( 'renders' , ( ) => {
72- renderWithTheme ( < QuickEmbed onClose = { onClose } /> )
74+ renderWithTheme ( < QuickEmbed onClose = { onClose } onCopy = { onCopy } /> )
7375
7476 expect (
7577 screen . getByRole ( 'heading' , { name : 'Get embed URL' } )
@@ -103,7 +105,7 @@ describe('QuickEmbed', () => {
103105 href : 'https://example.com/looks/42' ,
104106 pathname : '/looks/42' ,
105107 } as Location )
106- renderWithTheme ( < QuickEmbed onClose = { onClose } /> )
108+ renderWithTheme ( < QuickEmbed onClose = { onClose } onCopy = { onCopy } /> )
107109
108110 expect (
109111 screen . getByRole ( 'heading' , { name : 'Get embed URL' } )
@@ -124,7 +126,7 @@ describe('QuickEmbed', () => {
124126 ; ( useThemesStoreState as jest . Mock ) . mockReturnValue (
125127 getMockStoreState ( { selectedTheme : customTheme1 } )
126128 )
127- renderWithTheme ( < QuickEmbed onClose = { onClose } /> )
129+ renderWithTheme ( < QuickEmbed onClose = { onClose } onCopy = { onCopy } /> )
128130
129131 expect (
130132 screen . getByRole ( 'heading' , { name : 'Get embed URL' } )
@@ -153,4 +155,34 @@ describe('QuickEmbed', () => {
153155 )
154156 } )
155157 } )
158+
159+ it ( 'close button function triggers on click' , async ( ) => {
160+ renderWithTheme ( < QuickEmbed onClose = { onClose } onCopy = { onCopy } /> )
161+ const closeBtn = screen . getByRole ( 'button' , { name : 'Close' } )
162+
163+ expect ( closeBtn ) . toBeInTheDocument ( )
164+ await userEvent . click ( closeBtn )
165+
166+ expect ( onClose ) . toHaveBeenCalled ( )
167+ } )
168+
169+ it ( 'onCopy not called when not passed in' , async ( ) => {
170+ renderWithTheme ( < QuickEmbed onClose = { onClose } /> )
171+ const copyBtn = screen . getByRole ( 'button' , { name : 'Copy Link' } )
172+
173+ expect ( copyBtn ) . toBeInTheDocument ( )
174+ await userEvent . click ( copyBtn )
175+
176+ expect ( onCopy ) . not . toHaveBeenCalled ( )
177+ } )
178+
179+ it ( 'copy button function triggers on click' , async ( ) => {
180+ renderWithTheme ( < QuickEmbed onClose = { onClose } onCopy = { onCopy } /> )
181+ const copyBtn = screen . getByRole ( 'button' , { name : 'Copy Link' } )
182+
183+ expect ( copyBtn ) . toBeInTheDocument ( )
184+ await userEvent . click ( copyBtn )
185+
186+ expect ( onCopy ) . toHaveBeenCalled ( )
187+ } )
156188} )
0 commit comments