@@ -169,6 +169,45 @@ describe("viewport positioner", (): void => {
169169 expect ( positioner . instance ( ) . state . disabled ) . toBe ( true ) ;
170170 } ) ;
171171
172+ test ( "initial state function returns correct initial state" , ( ) : void => {
173+ const anchorElement : React . RefObject < HTMLDivElement > = React . createRef <
174+ HTMLDivElement
175+ > ( ) ;
176+
177+ const rendered : any = mount (
178+ < div >
179+ < div ref = { anchorElement } />
180+ < ViewportPositioner
181+ viewport = { document . firstElementChild as HTMLElement }
182+ anchor = { anchorElement }
183+ managedClasses = { managedClasses }
184+ />
185+ </ div >
186+ ) ;
187+
188+ const positioner : any = rendered . find ( "BaseViewportPositioner" ) ;
189+ expect ( positioner . instance ( ) [ "generateInitialState" ] ( ) ) . toEqual ( {
190+ disabled : true ,
191+ noObserverMode : false ,
192+ xTransformOrigin : "left" ,
193+ yTransformOrigin : "top" ,
194+ xTranslate : 0 ,
195+ yTranslate : 0 ,
196+ top : null ,
197+ right : null ,
198+ bottom : null ,
199+ left : null ,
200+ currentHorizontalPosition : "undefined" ,
201+ currentVerticalPosition : "undefined" ,
202+ defaultHorizontalPosition : "undefined" ,
203+ defaultVerticalPosition : "bottom" ,
204+ horizontalSelectedPositionWidth : null ,
205+ verticalSelectedPositionHeight : null ,
206+ initialLayoutComplete : false ,
207+ validRefChecksRemaining : 2 ,
208+ } ) ;
209+ } ) ;
210+
172211 test ( "positioning values applied correctly for specified default position - adjacent + top + left" , ( ) : void => {
173212 const anchorElement : React . RefObject < HTMLDivElement > = React . createRef <
174213 HTMLDivElement
@@ -1606,4 +1645,49 @@ describe("viewport positioner", (): void => {
16061645 expect ( positionerDimension . width ) . toBe ( 110 ) ;
16071646 expect ( positionerDimension . height ) . toBe ( 110 ) ;
16081647 } ) ;
1648+
1649+ test ( "extractElementFromRef function returns element passed in directly" , ( ) : void => {
1650+ const anchorElement : React . RefObject < HTMLDivElement > = React . createRef <
1651+ HTMLDivElement
1652+ > ( ) ;
1653+
1654+ const rendered : any = mount (
1655+ < div >
1656+ < div ref = { anchorElement } />
1657+ < ViewportPositioner
1658+ viewport = { document . firstElementChild as HTMLElement }
1659+ anchor = { anchorElement }
1660+ managedClasses = { managedClasses }
1661+ />
1662+ </ div >
1663+ ) ;
1664+
1665+ const positioner : any = rendered . find ( "BaseViewportPositioner" ) ;
1666+ const testElement : Element = document . createElement ( "div" ) ;
1667+ expect ( positioner . instance ( ) [ "extractElementFromRef" ] ( testElement ) ) . toBe (
1668+ testElement
1669+ ) ;
1670+ } ) ;
1671+
1672+ test ( "extractElementFromRef function returns element passed in as a ref" , ( ) : void => {
1673+ const anchorElement : React . RefObject < HTMLDivElement > = React . createRef <
1674+ HTMLDivElement
1675+ > ( ) ;
1676+
1677+ const rendered : any = mount (
1678+ < div >
1679+ < div ref = { anchorElement } />
1680+ < ViewportPositioner
1681+ viewport = { document . firstElementChild as HTMLElement }
1682+ anchor = { anchorElement }
1683+ managedClasses = { managedClasses }
1684+ />
1685+ </ div >
1686+ ) ;
1687+
1688+ const positioner : any = rendered . find ( "BaseViewportPositioner" ) ;
1689+ expect ( positioner . instance ( ) [ "extractElementFromRef" ] ( anchorElement ) ) . toBe (
1690+ anchorElement . current
1691+ ) ;
1692+ } ) ;
16091693} ) ;
0 commit comments