@@ -3,16 +3,22 @@ import LiveSocket from "phoenix_live_view/live_socket"
33
44let container = ( num ) => global . document . getElementById ( `container${ num } ` )
55
6- let prepareLiveViewDOM = ( document ) => {
6+ let createRootViewDiv = ( containerNum , cssClass ) => {
77 const div = document . createElement ( "div" )
8- div . setAttribute ( "data-phx-session" , "abc123" )
9- div . setAttribute ( "data-phx-root-id" , "container1" )
10- div . setAttribute ( "id" , "container1" )
8+ div . setAttribute ( "data-phx-session" , `abc-${ containerNum } ` )
9+ div . setAttribute ( "data-phx-root-id" , `container${ containerNum } ` )
10+ div . setAttribute ( "id" , `container${ containerNum } ` )
11+ if ( cssClass ) div . classList . add ( cssClass ) ;
1112 div . innerHTML = `
1213 <label for="plus">Plus</label>
1314 <input id="plus" value="1" />
1415 <button phx-click="inc_temperature">Inc Temperature</button>
1516 `
17+ return div
18+ }
19+
20+ let prepareLiveViewDOM = ( document ) => {
21+ const div = createRootViewDiv ( 1 , "main" )
1622 const button = div . querySelector ( "button" )
1723 const input = div . querySelector ( "input" )
1824 button . addEventListener ( "click" , ( ) => {
@@ -156,6 +162,19 @@ describe("LiveSocket", () => {
156162 liveSocket . owner ( btn , ( view ) => expect ( view . id ) . toBe ( _view . id ) )
157163 } )
158164
165+ test ( "owner with rootViewSelector option" , async ( ) => {
166+ let liveSocket = new LiveSocket ( "/live" , Socket , { rootViewSelector : ".main" } )
167+ liveSocket . connect ( )
168+
169+ let _view = liveSocket . getViewByEl ( container ( 1 ) )
170+
171+ let btn = document . querySelector ( ".main button" )
172+ liveSocket . owner ( btn , ( view ) => expect ( view . id ) . toBe ( _view . id ) )
173+
174+ let btnExtra = document . querySelector ( ".extra button" )
175+ liveSocket . owner ( btnExtra , ( view ) => expect ( view ) . toBe ( null ) )
176+ } )
177+
159178 test ( "getActiveElement default before LiveSocket activeElement is set" , async ( ) => {
160179 let liveSocket = new LiveSocket ( "/live" , Socket )
161180
0 commit comments