@@ -107,6 +107,33 @@ def test_removes_model_scope_from_name_and_id
107107 assert_selector "label[for=ultimate_answer]"
108108 end
109109
110+ def test_removes_model_scope_from_name_and_id_using_namespace
111+ model = DeepThought . new ( 42 )
112+
113+ render_in_view_context do
114+ primer_form_with ( model : model , url : "/foo" , namespace : "baz" ) do |f |
115+ render ( NoModelScopeForm . new ( f ) )
116+ end
117+ end
118+
119+ assert_selector "input#baz_ultimate_answer[name=ultimate_answer]"
120+ end
121+
122+ def test_label_removes_model_scope_from_name_and_id_using_namespace
123+ # See upstream issue: https://github.com/rails/rails/pull/51237
124+ skip "Broken in Rails versions prior to 8.0.3" unless Rails ::VERSION ::STRING >= "8.0.3"
125+
126+ model = DeepThought . new ( 42 )
127+
128+ render_in_view_context do
129+ primer_form_with ( model : model , url : "/foo" , namespace : "baz" ) do |f |
130+ render ( NoModelScopeForm . new ( f ) )
131+ end
132+ end
133+
134+ assert_selector "label[for=baz_ultimate_answer]"
135+ end
136+
110137 def test_uses_given_id
111138 model = DeepThought . new ( 42 )
112139
@@ -119,4 +146,31 @@ def test_uses_given_id
119146 assert_selector "input#foobar[name=ultimate_answer]"
120147 assert_selector "label[for=foobar]"
121148 end
149+
150+ def test_uses_given_id_and_namespace
151+ model = DeepThought . new ( 42 )
152+
153+ render_in_view_context do
154+ primer_form_with ( model : model , url : "/foo" , namespace : "baz" ) do |f |
155+ render ( NoModelScopeForm . new ( f , id : "foobar" ) )
156+ end
157+ end
158+
159+ assert_selector "input#baz_foobar[name=ultimate_answer]"
160+ end
161+
162+ def test_label_uses_given_id_and_namespace
163+ # See upstream issue: https://github.com/rails/rails/pull/51237
164+ skip "Broken in Rails versions prior to 8.0.3" unless Rails ::VERSION ::STRING >= "8.0.3"
165+
166+ model = DeepThought . new ( 42 )
167+
168+ render_in_view_context do
169+ primer_form_with ( model : model , url : "/foo" , namespace : "baz" ) do |f |
170+ render ( NoModelScopeForm . new ( f , id : "foobar" ) )
171+ end
172+ end
173+
174+ assert_selector "label[for=baz_foobar]"
175+ end
122176end
0 commit comments