Skip to content

test: スクリプトスコープ伝播・分離とlayoutBeforeRenderのインテグレーションテスト追加#126

Merged
mitonize merged 2 commits into
develop-2.0from
feature/integration-test-enhancement
Mar 29, 2026
Merged

test: スクリプトスコープ伝播・分離とlayoutBeforeRenderのインテグレーションテスト追加#126
mitonize merged 2 commits into
develop-2.0from
feature/integration-test-enhancement

Conversation

@mitonize

@mitonize mitonize commented Mar 29, 2026

Copy link
Copy Markdown
Collaborator

概要

m:insert / m:extends によるページ間スコープ伝播・分離の動作を体系的に検証するインテグレーションテストを追加する。

テストは旧パーサー・新パーサーの両方 (@ValueSource(booleans = { false, true })) で実行し、パーサー実装差異による退行が起きないことも同時に確認する。


追加テストクラス

ScriptScopeIntegrationTest (+1324行)

m:insert / m:extends を組み合わせたページ間スコープ動作を網羅的に検証する。

# テスト観点 ケース名
1 beforeRender 変数が m:insert コンポーネント内で参照できる scope-propagate-to-insert
2 複数の兄弟 m:insert コンポーネントから共通祖先スコープの変数を参照できる scope-propagate-to-sibling-inserts
3 コンポーネント A の beforeRender 変数はコンポーネント B から参照できない(スコープ分離) scope-isolation-between-sibling-inserts
4 m:extends レイアウトの beforeRender 変数をコンテンツテンプレートから参照できる layout-extends-layout-var-to-content
5 m:extends ターゲットの beforeRender 変数をレイアウトテンプレートから参照できる layout-extends-target-var-to-layout
6 m:extendsbeforeRender 内で load() した JS が同スコープに展開され、layout / content 双方から参照できる layout-extends-with-load
7 target と layout で同名変数を宣言した場合、後から積まれる layout の値が優先される(シャドウイング) scope-shadow-target-vs-layout
8 target の beforeRender 変数が 3 段ネスト m:insert コンポーネントから参照できる scope-propagate-3-level-nest
9 コンポーネント A が var なしで祖先変数を書き換えると兄弟 B にも変更が見える(スコープ Mutation) scope-mutation-by-component
10 m:insert のインフォーマルプロパティが binding スコープ経由で参照できる scope-insert-informal-property
11 未定義のインフォーマルプロパティ参照でフォールバック値を使える scope-insert-informal-property-missing
12 3 段 m:extends チェーンで全階層の beforeRender 変数が参照できる layout-extends-3level-chain
13 3 段チェーンで中間階層 (layout1) 変数が未定義でも他階層は参照できる layout-extends-3level-chain-missing-l1
14 3 段チェーンで最上位階層 (layout2) 変数が未定義でも他階層は参照できる layout-extends-3level-chain-missing-l2
15 コンポーネントが var 宣言で同名変数をシャドウしても親スコープは不変 scope-component-local-shadow

LayoutBeforeRenderIntegrationTest (+380行)

m:extends レイアウト共有時の beforeRender スクリプト実行動作を検証する。

# テスト観点 ケース名
1 レイアウトページの beforeRender スクリプトが実行され、値がテンプレートに反映される layout-before-render-basic
2 ターゲットとレイアウト双方の beforeRender が実行される layout-and-target-before-render
3 beforeRender の実行順序が target → layout の順に固定されている layout-before-render-order
4 target / layout が同名 request キーに代入した場合、後から実行される layout 側で上書きされる layout-before-render-request-shadow
5 request 以外(target の var 変数)もレイアウトテンプレートから参照できる layout-before-render-non-request-scope

備考

  • テストケースはすべてインメモリ登録 (DynamicRegisteredSourceHolder) を使用しているため、テスト用 HTML / mayaa ファイルの追加は不要。
  • 各テストは @ParameterizedTest で旧・新パーサー両方を実行する。

確認済み観点:
- m:insert/m:extendsでのスコープ伝播・分離
- 同名変数のシャドウイング優先順位
- var有無による祖先スコープへの影響
- bindingインフォーマルプロパティ(正常/未定義フォールバック)
- 3段m:extendsの成功系と欠損系(layout1/layout2未定義)
確認したテスト観点:
- layout beforeRender単体実行での値反映
- target/layout両beforeRender実行時の値可視性
- beforeRender実行順序(target→layout)の固定化
- 同名requestキー競合時の優先順位(layout上書き)
- request以外(varスコープ)のlayout側参照可否
@mitonize mitonize changed the base branch from master to develop-2.0 March 29, 2026 07:00
@mitonize mitonize changed the title Feature/integration test enhancement test: スクリプトスコープ伝播・分離とlayoutBeforeRenderのインテグレーションテスト追加 Mar 29, 2026
@mitonize mitonize marked this pull request as ready for review March 29, 2026 07:18
@mitonize mitonize merged commit f63c1c9 into develop-2.0 Mar 29, 2026
0 of 2 checks passed
@mitonize mitonize deleted the feature/integration-test-enhancement branch March 29, 2026 07:19
@mitonize mitonize added this to the v2.0.0 milestone Apr 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant