@@ -3,8 +3,6 @@ import userEvent from '@testing-library/user-event';
33import React from 'react' ;
44
55import { imageFactory , typeFactory } from 'src/factories' ;
6- import { makeResourcePage } from 'src/mocks/serverHandlers' ;
7- import { http , HttpResponse , server } from 'src/mocks/testServer' ;
86import {
97 renderWithThemeAndHookFormContext ,
108 wrapWithTableBody ,
@@ -13,26 +11,35 @@ import {
1311import { LinodeSelectTableRow } from './LinodeSelectTableRow' ;
1412
1513const queryMocks = vi . hoisted ( ( ) => ( {
16- userPermissions : vi . fn ( ( ) => ( {
17- data : {
18- shutdown_linode : false ,
19- clone_linode : false ,
20- create_linode : false ,
21- } ,
22- } ) ) ,
14+ useImageQuery : vi . fn ( ) . mockReturnValue ( { } ) ,
15+ useRegionsQuery : vi . fn ( ) . mockReturnValue ( { } ) ,
16+ useTypeQuery : vi . fn ( ) . mockReturnValue ( { } ) ,
2317} ) ) ;
2418
25- vi . mock ( 'src/features/IAM/hooks/usePermissions' , ( ) => ( {
26- usePermissions : queryMocks . userPermissions ,
27- } ) ) ;
19+ vi . mock ( '@linode/queries' , async ( ) => {
20+ const actual = await vi . importActual ( '@linode/queries' ) ;
21+ return {
22+ ...actual ,
23+ useImageQuery : queryMocks . useImageQuery ,
24+ useRegionsQuery : queryMocks . useRegionsQuery ,
25+ useTypeQuery : queryMocks . useTypeQuery ,
26+ } ;
27+ } ) ;
2828
2929describe ( 'LinodeSelectTableRow' , ( ) => {
3030 it ( 'should render a Radio that is labeled by the Linode label' , ( ) => {
3131 const linode = linodeFactory . build ( ) ;
3232
3333 const { getByLabelText } = renderWithThemeAndHookFormContext ( {
3434 component : wrapWithTableBody (
35- < LinodeSelectTableRow linode = { linode } onSelect = { vi . fn ( ) } selected />
35+ < LinodeSelectTableRow
36+ disabled = { false }
37+ isCloneable = { false }
38+ isShutdownable = { false }
39+ linode = { linode }
40+ onSelect = { vi . fn ( ) }
41+ selected
42+ />
3643 ) ,
3744 } ) ;
3845
@@ -44,7 +51,14 @@ describe('LinodeSelectTableRow', () => {
4451
4552 const { getByLabelText } = renderWithThemeAndHookFormContext ( {
4653 component : wrapWithTableBody (
47- < LinodeSelectTableRow linode = { linode } onSelect = { vi . fn ( ) } selected />
54+ < LinodeSelectTableRow
55+ disabled = { false }
56+ isCloneable = { false }
57+ isShutdownable = { false }
58+ linode = { linode }
59+ onSelect = { vi . fn ( ) }
60+ selected
61+ />
4862 ) ,
4963 } ) ;
5064
@@ -57,6 +71,9 @@ describe('LinodeSelectTableRow', () => {
5771 const { getByLabelText } = renderWithThemeAndHookFormContext ( {
5872 component : wrapWithTableBody (
5973 < LinodeSelectTableRow
74+ disabled = { false }
75+ isCloneable = { false }
76+ isShutdownable = { false }
6077 linode = { linode }
6178 onSelect = { vi . fn ( ) }
6279 selected = { false }
@@ -68,20 +85,16 @@ describe('LinodeSelectTableRow', () => {
6885 } ) ;
6986
7087 it ( 'should should call onSelect when a radio is selected' , async ( ) => {
71- queryMocks . userPermissions . mockReturnValue ( {
72- data : {
73- shutdown_linode : false ,
74- clone_linode : true ,
75- create_linode : true ,
76- } ,
77- } ) ;
7888 const linode = linodeFactory . build ( ) ;
7989
8090 const onSelect = vi . fn ( ) ;
8191
8292 const { getByLabelText } = renderWithThemeAndHookFormContext ( {
8393 component : wrapWithTableBody (
8494 < LinodeSelectTableRow
95+ disabled = { false }
96+ isCloneable = { true }
97+ isShutdownable = { false }
8598 linode = { linode }
8699 onSelect = { onSelect }
87100 selected = { false }
@@ -102,15 +115,20 @@ describe('LinodeSelectTableRow', () => {
102115 label : 'My Image Nice Label' ,
103116 } ) ;
104117
105- server . use (
106- http . get ( '*/v4/images/my-image' , ( ) => {
107- return HttpResponse . json ( image ) ;
108- } )
109- ) ;
118+ queryMocks . useImageQuery . mockReturnValue ( {
119+ data : image ,
120+ } ) ;
110121
111122 const { findByText } = renderWithThemeAndHookFormContext ( {
112123 component : wrapWithTableBody (
113- < LinodeSelectTableRow linode = { linode } onSelect = { vi . fn ( ) } selected />
124+ < LinodeSelectTableRow
125+ disabled = { false }
126+ isCloneable = { false }
127+ isShutdownable = { false }
128+ linode = { linode }
129+ onSelect = { vi . fn ( ) }
130+ selected
131+ />
114132 ) ,
115133 } ) ;
116134
@@ -124,19 +142,24 @@ describe('LinodeSelectTableRow', () => {
124142 label : 'US Test' ,
125143 } ) ;
126144
127- server . use (
128- http . get ( '*/v4*/regions' , ( ) => {
129- return HttpResponse . json ( makeResourcePage ( [ region ] ) ) ;
130- } )
131- ) ;
145+ queryMocks . useRegionsQuery . mockReturnValue ( {
146+ data : [ region ] ,
147+ } ) ;
132148
133149 const { findByText } = renderWithThemeAndHookFormContext ( {
134150 component : wrapWithTableBody (
135- < LinodeSelectTableRow linode = { linode } onSelect = { vi . fn ( ) } selected />
151+ < LinodeSelectTableRow
152+ disabled = { false }
153+ isCloneable = { false }
154+ isShutdownable = { false }
155+ linode = { linode }
156+ onSelect = { vi . fn ( ) }
157+ selected
158+ />
136159 ) ,
137160 } ) ;
138161
139- await findByText ( `US, ${ region . label } ` ) ;
162+ await findByText ( region . label ) ;
140163 } ) ;
141164
142165 it ( 'should render a Linode plan label' , async ( ) => {
@@ -146,15 +169,20 @@ describe('LinodeSelectTableRow', () => {
146169 label : 'Linode Type 1' ,
147170 } ) ;
148171
149- server . use (
150- http . get ( '*/v4/linode/types/linode-type-1' , ( ) => {
151- return HttpResponse . json ( type ) ;
152- } )
153- ) ;
172+ queryMocks . useTypeQuery . mockReturnValue ( {
173+ data : type ,
174+ } ) ;
154175
155176 const { findByText } = renderWithThemeAndHookFormContext ( {
156177 component : wrapWithTableBody (
157- < LinodeSelectTableRow linode = { linode } onSelect = { vi . fn ( ) } selected />
178+ < LinodeSelectTableRow
179+ disabled = { false }
180+ isCloneable = { false }
181+ isShutdownable = { false }
182+ linode = { linode }
183+ onSelect = { vi . fn ( ) }
184+ selected
185+ />
158186 ) ,
159187 } ) ;
160188
@@ -167,6 +195,9 @@ describe('LinodeSelectTableRow', () => {
167195 const { getByText } = renderWithThemeAndHookFormContext ( {
168196 component : wrapWithTableBody (
169197 < LinodeSelectTableRow
198+ disabled = { false }
199+ isCloneable = { false }
200+ isShutdownable = { false }
170201 linode = { linode }
171202 onPowerOff = { vi . fn ( ) }
172203 onSelect = { vi . fn ( ) }
@@ -180,17 +211,13 @@ describe('LinodeSelectTableRow', () => {
180211
181212 it ( 'should render an enabled power off button if the Linode is powered on, a onPowerOff function is passed, and the row is selected, if user has shutdown_linode permission' , async ( ) => {
182213 const linode = linodeFactory . build ( { status : 'running' } ) ;
183- queryMocks . userPermissions . mockReturnValue ( {
184- data : {
185- shutdown_linode : true ,
186- clone_linode : true ,
187- create_linode : true ,
188- } ,
189- } ) ;
190214
191215 const { getByText } = renderWithThemeAndHookFormContext ( {
192216 component : wrapWithTableBody (
193217 < LinodeSelectTableRow
218+ disabled = { false }
219+ isCloneable = { true }
220+ isShutdownable = { true }
194221 linode = { linode }
195222 onPowerOff = { vi . fn ( ) }
196223 onSelect = { vi . fn ( ) }
@@ -209,6 +236,9 @@ describe('LinodeSelectTableRow', () => {
209236 const { getByText } = renderWithThemeAndHookFormContext ( {
210237 component : wrapWithTableBody (
211238 < LinodeSelectTableRow
239+ disabled = { false }
240+ isCloneable = { true }
241+ isShutdownable = { true }
212242 linode = { linode }
213243 onPowerOff = { onPowerOff }
214244 onSelect = { vi . fn ( ) }
0 commit comments