@@ -237,6 +237,52 @@ describe('rate', () => {
237237 } ) ;
238238 } ) ;
239239
240+ describe ( 'showExactValue' , ( ) => {
241+ it . each ( [
242+ [ 3.8 , 3 , '80%' ] ,
243+ [ 4.9 , 4 , '90%' ] ,
244+ ] ) ( 'renders %s in disabled mode' , ( value , index , width ) => {
245+ const { container } = render ( < Rate value = { value } disabled showExactValue /> ) ;
246+ const star = getStar ( container , index ) ;
247+
248+ expect ( star . classList . contains ( 'rc-rate-star-half' ) ) . toBe ( true ) ;
249+ expect ( star . querySelector ( '.rc-rate-star-first' ) ) . toHaveStyle ( { width } ) ;
250+ } ) ;
251+
252+ it ( 'renders fraction in RTL' , ( ) => {
253+ const { container } = render ( < Rate value = { 3.8 } disabled showExactValue direction = "rtl" /> ) ;
254+ const star = getStar ( container , 3 ) ;
255+
256+ expect ( star . classList . contains ( 'rc-rate-star-half' ) ) . toBe ( true ) ;
257+ expect ( star . querySelector ( '.rc-rate-star-first' ) ) . toHaveStyle ( { width : '80%' } ) ;
258+ } ) ;
259+
260+ it ( 'only works in disabled mode' , ( ) => {
261+ const { container } = render ( < Rate value = { 3.8 } showExactValue /> ) ;
262+ const star = getStar ( container , 3 ) ;
263+
264+ expect ( star . classList . contains ( 'rc-rate-star-half' ) ) . toBe ( false ) ;
265+ expect ( star . classList . contains ( 'rc-rate-star-zero' ) ) . toBe ( true ) ;
266+ expect ( star . querySelector ( '.rc-rate-star-first' ) ) . not . toHaveAttribute ( 'style' ) ;
267+ } ) ;
268+
269+ it ( 'does not override allowHalf in interactive mode' , ( ) => {
270+ const { container } = render ( < Rate value = { 3.8 } allowHalf showExactValue /> ) ;
271+ const star = getStar ( container , 3 ) ;
272+
273+ expect ( star . classList . contains ( 'rc-rate-star-half' ) ) . toBe ( true ) ;
274+ expect ( star . querySelector ( '.rc-rate-star-first' ) ) . not . toHaveAttribute ( 'style' ) ;
275+ } ) ;
276+
277+ it ( 'takes precedence over allowHalf in disabled mode' , ( ) => {
278+ const { container } = render ( < Rate value = { 3.8 } disabled allowHalf showExactValue /> ) ;
279+ const star = getStar ( container , 3 ) ;
280+
281+ expect ( star . classList . contains ( 'rc-rate-star-half' ) ) . toBe ( true ) ;
282+ expect ( star . querySelector ( '.rc-rate-star-first' ) ) . toHaveStyle ( { width : '80%' } ) ;
283+ } ) ;
284+ } ) ;
285+
240286 describe ( 'allowClear' , ( ) => {
241287 it ( 'allowClear is false' , ( ) => {
242288 const handleChange = jest . fn ( ) ;
0 commit comments