From b2d24f416a38b073dc8d4417b60a81588fd6d346 Mon Sep 17 00:00:00 2001 From: Ferit Date: Thu, 8 Oct 2026 04:45:54 +0300 Subject: [PATCH] fix: set parents for all variadic inserted nodes --- src/__tests__/container.mjs | 14 ++++++++++++++ src/selectors/container.js | 2 ++ 2 files changed, 16 insertions(+) diff --git a/src/__tests__/container.mjs b/src/__tests__/container.mjs index 4c58eea..fc7af28 100644 --- a/src/__tests__/container.mjs +++ b/src/__tests__/container.mjs @@ -2,6 +2,20 @@ import test from "./util/runner.mjs"; import parser from "../../dist/index.js"; import { parse } from "./util/helpers.mjs"; +for (const method of ["insertBefore", "insertAfter"]) { + test(`container#${method} sets parents of every inserted node`, (t) => { + const selector = parser().astSync("a").first; + const first = parser.className({ value: "first" }); + const second = parser.className({ value: "second" }); + selector[method](selector.first, first, second); + t.is(first.parent, selector); + t.is(second.parent, selector); + second.remove(); + t.is(selector.nodes.includes(second), false); + t.is(second.parent, undefined); + }); +} + test("container#append", (t) => { let out = parse("h1", (selectors) => { let selector = selectors.first; diff --git a/src/selectors/container.js b/src/selectors/container.js index 8f6f286..96d3771 100644 --- a/src/selectors/container.js +++ b/src/selectors/container.js @@ -81,6 +81,7 @@ export default class Container extends Node { let oldIndex = this.index(oldNode); const resetNode = []; for (let i = 2; i < arguments.length; i++) { + arguments[i].parent = this; resetNode.push(arguments[i]); } this.nodes.splice(oldIndex + 1, 0, newNode, ...resetNode); @@ -103,6 +104,7 @@ export default class Container extends Node { let oldIndex = this.index(oldNode); const resetNode = []; for (let i = 2; i < arguments.length; i++) { + arguments[i].parent = this; resetNode.push(arguments[i]); } this.nodes.splice(oldIndex, 0, newNode, ...resetNode);