Skip to content

Commit 2f2e4de

Browse files
test liveSocket.owner with rootViewSelector
1 parent 04ed4eb commit 2f2e4de

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

assets/test/live_socket_test.js

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,22 @@ import LiveSocket from "phoenix_live_view/live_socket"
33

44
let 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", () => {
@@ -21,6 +27,8 @@ let prepareLiveViewDOM = (document) => {
2127
}, 200)
2228
})
2329
document.body.appendChild(div)
30+
31+
document.body.appendChild(createRootViewDiv(2, "extra"))
2432
}
2533

2634
describe("LiveSocket", () => {
@@ -156,6 +164,19 @@ describe("LiveSocket", () => {
156164
liveSocket.owner(btn, (view) => expect(view.id).toBe(_view.id))
157165
})
158166

167+
test("owner with rootViewSelector option", async () => {
168+
let liveSocket = new LiveSocket("/live", Socket, {rootViewSelector: ".main"})
169+
liveSocket.connect()
170+
171+
let _view = liveSocket.getViewByEl(container(1))
172+
173+
let btn = document.querySelector(".main button")
174+
liveSocket.owner(btn, (view) => expect(view.id).toBe(_view.id))
175+
176+
let btnExtra = document.querySelector(".extra button")
177+
liveSocket.owner(btnExtra, (view) => expect(view).toBe(null))
178+
})
179+
159180
test("getActiveElement default before LiveSocket activeElement is set", async () => {
160181
let liveSocket = new LiveSocket("/live", Socket)
161182

0 commit comments

Comments
 (0)