@@ -2,6 +2,7 @@ import { cleanup, fireEvent, render } from '@testing-library/react';
22import React from 'react' ;
33import Trigger , { UniqueProvider } from '../src' ;
44import { awaitFakeTimer } from './util' ;
5+ import type { TriggerProps } from '../src' ;
56
67// Mock FloatBg to check if open props changed
78global . openChangeLog = [ ] ;
@@ -27,6 +28,34 @@ jest.mock('../src/UniqueProvider/FloatBg', () => {
2728 } ;
2829} ) ;
2930
31+ async function setupAndOpenPopup ( triggerProps : Partial < TriggerProps > = { } ) {
32+ const { container } = render (
33+ < UniqueProvider >
34+ < Trigger
35+ action = { [ 'click' ] }
36+ popup = { < strong className = "x-content" > tooltip</ strong > }
37+ unique
38+ { ...triggerProps }
39+ >
40+ < div className = "target" > click me</ div >
41+ </ Trigger >
42+ </ UniqueProvider > ,
43+ ) ;
44+
45+ // Initially no popup should be visible
46+ expect ( document . querySelector ( '.rc-trigger-popup' ) ) . toBeFalsy ( ) ;
47+
48+ // Click trigger to show popup
49+ fireEvent . click ( container . querySelector ( '.target' ) ) ;
50+ await awaitFakeTimer ( ) ;
51+
52+ // Check that popup exists
53+ const popup = document . querySelector ( '.rc-trigger-popup' ) ;
54+ expect ( popup ) . toBeTruthy ( ) ;
55+
56+ return { container, popup } ;
57+ }
58+
3059describe ( 'Trigger.Unique' , ( ) => {
3160 beforeEach ( ( ) => {
3261 jest . useFakeTimers ( ) ;
@@ -152,4 +181,34 @@ describe('Trigger.Unique', () => {
152181 expect ( popup . className ) . toContain ( 'custom-align' ) ;
153182 expect ( popup . className ) . toContain ( 'rc-trigger-popup-unique-controlled' ) ;
154183 } ) ;
184+
185+ it ( 'should apply uniqueBgClassName to FloatBg component' , async ( ) => {
186+ await setupAndOpenPopup ( { uniqueBgClassName : 'custom-bg-class' } ) ;
187+
188+ // Check that FloatBg has the custom background className
189+ const floatBg = document . querySelector ( '.rc-trigger-popup-float-bg' ) ;
190+ expect ( floatBg ) . toBeTruthy ( ) ;
191+ expect ( floatBg . className ) . toContain ( 'custom-bg-class' ) ;
192+ } ) ;
193+
194+ it ( 'should apply uniqueBgStyle to FloatBg component' , async ( ) => {
195+ await setupAndOpenPopup ( { uniqueBgStyle : { backgroundColor : 'red' , border : '1px solid blue' } } ) ;
196+
197+ // Check that FloatBg has the custom background style
198+ const floatBg = document . querySelector ( '.rc-trigger-popup-float-bg' ) ;
199+ expect ( floatBg ) . toBeTruthy ( ) ;
200+ expect ( floatBg ) . toHaveStyle ( {
201+ backgroundColor : 'red' ,
202+ border : '1px solid blue' ,
203+ } ) ;
204+ } ) ;
205+
206+ it ( 'should not apply any additional className to FloatBg when uniqueBgClassName is not provided' , async ( ) => {
207+ await setupAndOpenPopup ( ) ;
208+
209+ // Check that FloatBg exists but does not have custom background className
210+ const floatBg = document . querySelector ( '.rc-trigger-popup-float-bg' ) ;
211+ expect ( floatBg ) . toBeTruthy ( ) ;
212+ expect ( floatBg . className ) . not . toContain ( 'undefined' ) ;
213+ } ) ;
155214} ) ;
0 commit comments