1
1
import renderer from 'react-test-renderer' ;
2
+ import { cleanup , screen , fireEvent , render } from '@testing-library/react' ;
3
+ import userEvent from '@testing-library/user-event' ;
2
4
import { ReValue } from './value' ;
3
5
4
6
it ( 'renders <ReValue /> type="string" test case' , ( ) => {
@@ -144,4 +146,88 @@ it('renders <ReValue /> onDelete test case', () => {
144
146
expect ( child1 ) . toHaveProperty ( 'props.fill' , 'var(--w-rjv-delete-color, #dc3545)' ) ;
145
147
expect ( child1 ) . toHaveProperty ( 'props.viewBox' , '0 0 40 40' ) ;
146
148
}
147
- } ) ;
149
+ } ) ;
150
+
151
+ it ( 'renders <ReValue /> `onEdit` test case' , async ( ) => {
152
+ const user = userEvent . setup ( ) ;
153
+ const { container } = render (
154
+ < ReValue
155
+ type = "string"
156
+ displayDataTypes
157
+ quotes = "'"
158
+ value = "test"
159
+ visible = { true }
160
+ editableValue = { true }
161
+ onEdit = { ( ) => true }
162
+ />
163
+ ) ;
164
+ expect ( container . firstElementChild ) . toBeInstanceOf ( Element ) ;
165
+ expect ( container . firstElementChild ) . toHaveProperty ( 'style' ) ;
166
+ expect ( container . firstElementChild ) . toHaveProperty ( 'style.opacity' , '0.8' ) ;
167
+ expect ( container . firstElementChild ) . toHaveProperty ( 'style.padding-right' , '4px' ) ;
168
+ expect ( container . firstElementChild ) . toHaveProperty ( 'style.font-size' , '11px' ) ;
169
+ expect ( container . firstElementChild ?. nextElementSibling ) . toHaveProperty ( 'children' ) ;
170
+ expect ( screen . getAllByText ( "'" ) [ 0 ] ) . toBeInstanceOf ( Element ) ;
171
+ const $contentEditable = container . firstElementChild ?. nextElementSibling ?. nextElementSibling ;
172
+ expect ( $contentEditable ?. getAttribute ( 'contentEditable' ) ) . toBeNull ( ) ;
173
+ await user . click ( container . lastElementChild ! ) ;
174
+ expect ( $contentEditable ?. getAttribute ( 'contentEditable' ) ) . toEqual ( 'true' ) ;
175
+ expect ( $contentEditable ?. getAttribute ( 'spellcheck' ) ) . toEqual ( 'false' ) ;
176
+ expect ( $contentEditable ?. getAttribute ( 'style' ) ) . toEqual ( 'min-width: 34px; min-height: 18px; padding-inline: 3px; display: inline-block;' ) ;
177
+ await user . keyboard ( '{Enter}' ) ;
178
+ expect ( $contentEditable ?. getAttribute ( 'contentEditable' ) ) . toEqual ( 'false' ) ;
179
+ await user . click ( container . lastElementChild ! ) ;
180
+ expect ( $contentEditable ?. getAttribute ( 'contentEditable' ) ) . toEqual ( 'true' ) ;
181
+ await user . tab ( ) // blur
182
+ expect ( $contentEditable ?. getAttribute ( 'contentEditable' ) ) . toEqual ( 'false' ) ;
183
+ // screen.debug();
184
+ } ) ;
185
+
186
+ it ( 'renders <ReValue /> `type=boolean` test case' , async ( ) => {
187
+ const user = userEvent . setup ( ) ;
188
+ const { container } = render (
189
+ < ReValue
190
+ type = "boolean"
191
+ displayDataTypes
192
+ quotes = "'"
193
+ value = "false"
194
+ visible = { true }
195
+ editableValue = { true }
196
+ onEdit = { ( ) => true }
197
+ />
198
+ ) ;
199
+ expect ( screen . getAllByText ( "'" ) [ 0 ] ) . toBeInstanceOf ( Element ) ;
200
+ const $contentEditable = container . firstElementChild ?. nextElementSibling ?. nextElementSibling ;
201
+ expect ( $contentEditable ?. getAttribute ( 'contentEditable' ) ) . toBeNull ( ) ;
202
+ await user . click ( container . lastElementChild ! ) ;
203
+ await user . type ( $contentEditable ! , '123{Enter}' ) ;
204
+ expect ( screen . getByText ( 'false123' ) ) . toBeInstanceOf ( Element ) ;
205
+ expect ( $contentEditable ?. getAttribute ( 'contentEditable' ) ) . toEqual ( 'false' ) ;
206
+ await user . tab ( ) // blur
207
+ expect ( screen . getByText ( 'false123' ) ) . toBeInstanceOf ( Element ) ;
208
+ } ) ;
209
+
210
+ it ( 'renders <ReValue /> `onEdit={() => false}` test case' , async ( ) => {
211
+ const user = userEvent . setup ( ) ;
212
+ const { container } = render (
213
+ < ReValue
214
+ type = "boolean"
215
+ displayDataTypes
216
+ quotes = "'"
217
+ value = "false"
218
+ visible = { true }
219
+ editableValue = { true }
220
+ onEdit = { ( ) => false }
221
+ />
222
+ ) ;
223
+ expect ( screen . getAllByText ( "'" ) [ 0 ] ) . toBeInstanceOf ( Element ) ;
224
+ const $contentEditable = container . firstElementChild ?. nextElementSibling ?. nextElementSibling ;
225
+ expect ( $contentEditable ?. getAttribute ( 'contentEditable' ) ) . toBeNull ( ) ;
226
+ await user . click ( container . lastElementChild ! ) ;
227
+ await user . type ( $contentEditable ! , '123{Enter}' ) ;
228
+ expect ( screen . getByText ( 'false123' ) ) . toBeInstanceOf ( Element ) ;
229
+ expect ( $contentEditable ?. getAttribute ( 'contentEditable' ) ) . toEqual ( 'false' ) ;
230
+ await user . tab ( ) // blur
231
+ expect ( screen . getByText ( '"false"' ) ) . toBeInstanceOf ( Element ) ;
232
+ // screen.debug();
233
+ } ) ;
0 commit comments