@@ -17,6 +17,7 @@ import {
1717import { ComponentClassName } from '@aws-amplify/ui' ;
1818import { AUTO_GENERATED_ID_PREFIX } from '../../utils/useStableId' ;
1919import { ERROR_SUFFIX , DESCRIPTION_SUFFIX } from '../../../helpers/constants' ;
20+ import { Button } from '../../Button' ;
2021
2122// Jest uses JSDom, which apparently doesn't support the ResizeObserver API
2223// This will get around that API reference error in Jest
@@ -131,7 +132,14 @@ describe('SliderField:', () => {
131132 describe ( 'Slider' , ( ) => {
132133 const ControlledSliderField = ( ) => {
133134 const [ value , setValue ] = React . useState ( 5 ) ;
134- return < SliderField label = "slider" value = { value } onChange = { setValue } /> ;
135+ return (
136+ < >
137+ < SliderField label = "slider" value = { value } onChange = { setValue } />
138+ < Button testId = "test-button" onClick = { ( ) => setValue ( 10 ) } >
139+ Set to 10
140+ </ Button >
141+ </ >
142+ ) ;
135143 } ;
136144
137145 it ( 'should work as uncontrolled component' , async ( ) => {
@@ -151,15 +159,27 @@ describe('SliderField:', () => {
151159 it ( 'should work as controlled component' , async ( ) => {
152160 render ( < ControlledSliderField /> ) ;
153161 const slider = await screen . findByRole ( 'slider' ) ;
162+ const label = await screen . findByTestId ( SLIDER_LABEL_TEST_ID ) ;
154163 expect ( slider ) . toHaveAttribute ( 'aria-valuenow' , '5' ) ;
164+ expect ( label ) . toHaveTextContent ( '5' ) ;
155165 fireEvent . keyDown ( slider , { key : 'ArrowUp' , code : 'ArrowUp' } ) ;
156166 expect ( slider ) . toHaveAttribute ( 'aria-valuenow' , '6' ) ;
167+ expect ( label ) . toHaveTextContent ( '6' ) ;
157168 fireEvent . keyDown ( slider , { key : 'ArrowUp' , code : 'ArrowUp' } ) ;
158169 expect ( slider ) . toHaveAttribute ( 'aria-valuenow' , '7' ) ;
170+ expect ( label ) . toHaveTextContent ( '7' ) ;
159171 fireEvent . keyDown ( slider , { key : 'ArrowDown' , code : 'ArrowDown' } ) ;
160172 expect ( slider ) . toHaveAttribute ( 'aria-valuenow' , '6' ) ;
173+ expect ( label ) . toHaveTextContent ( '6' ) ;
161174 fireEvent . keyDown ( slider , { key : 'ArrowDown' , code : 'ArrowDown' } ) ;
162175 expect ( slider ) . toHaveAttribute ( 'aria-valuenow' , '5' ) ;
176+ expect ( label ) . toHaveTextContent ( '5' ) ;
177+
178+ // External update (remount) should work as well
179+ const button = await screen . findByTestId ( 'test-button' ) ;
180+ fireEvent . click ( button ) ;
181+ expect ( slider ) . toHaveAttribute ( 'aria-valuenow' , '10' ) ;
182+ expect ( label ) . toHaveTextContent ( '10' ) ;
163183 } ) ;
164184
165185 it ( 'should set step' , async ( ) => {
0 commit comments