@@ -150,68 +150,56 @@ diag "Bulk update";
150150 $p -> text_unlike( qr { Asset \d +: Asset \d +:'} , ' Bulk update messages do not have duplicated prefix' );
151151}
152152
153- diag " People update " ;
153+ diag " People inline edit " ;
154154{
155155 my $asset = create_asset( Name => " Test asset" , Catalog => $catalog -> Id );
156- my $page = $p -> {page };
157-
158- $p -> get_ok( ' /Asset/Display.html?id=' . $asset -> Id );
159- my $people_link = $p -> find_element(q{ //a[@id='page-people']} );
160- $p -> get_ok( $people_link -> getAttribute(' href' ) );
161-
162- my $dom = $p -> dom;
163- my $owner_input = $dom -> at(' input[name="SetRoleMember-Owner"]' );
164- ok( $owner_input , ' Found owner input' );
165- is( $owner_input -> attr(' value' ), ' Nobody' , ' Default owner is Nobody' );
166-
167- # submit_form_ok sets hidden input values directly, bypassing TomSelect UI
168- $p -> submit_form_ok(
169- {
170- form => ' #ModifyAssetPeople' ,
171- fields => {
172- ' SetRoleMember-Owner' => ' root' ,
173- },
174- button => ' Update' ,
175- },
176- ' Set owner to root'
177- );
178- $p -> text_contains(' Owner set to root' );
179-
180- $dom = $p -> dom;
181- $owner_input = $dom -> at(' input[name="SetRoleMember-Owner"]' );
182- ok( $owner_input , ' Found owner input' );
183- is( $owner_input -> attr(' value' ), ' root' , ' Input value of owner is root' );
184-
156+ my $page = $p -> {page };
157+ my $id = $asset -> Id;
185158 my $staff = RT::Test-> load_or_create_group(' Staff' );
159+ my $alice = RT::Test-> load_or_create_user( Name => ' alice@localhost' );
186160
161+ $p -> get_ok( ' /Asset/Display.html?id=' . $id );
162+
163+ # Open People inline edit and submit all changes at once
164+ $page -> click(' div.asset-people a.inline-edit-toggle' );
187165 $p -> submit_form_ok(
188166 {
189- form => ' #ModifyAssetPeople ' ,
167+ form => ' div.asset-people form.inline-edit ' ,
190168 fields => {
169+ ' SetRoleMember-Owner' => ' root' ,
191170 ' AddUserRoleMember-Role' => ' Contact' ,
192171 ' AddUserRoleMember' => ' alice@localhost' ,
193172 ' AddGroupRoleMember-Role' => ' HeldBy' ,
194173 ' AddGroupRoleMember' => ' Staff' ,
195174 },
196- button => ' Update' ,
197175 },
198- ' Add contact and held by '
176+ ' Submit people inline edit '
199177 );
178+
179+ $p -> wait_for_notifications(3);
180+ $p -> wait_for_element(' div.asset-people .inline-edit-display span.user:has-text("root")' );
181+
182+ my $dom = $p -> dom;
183+ like( $dom -> at(' div.asset-people .inline-edit-display' )-> all_text, qr / root/ , ' Display shows owner root' );
184+ $p -> text_contains(' Owner set to root' );
200185 $p -> text_contains(' Member added: alice@localhost' );
201186 $p -> text_contains(' Member added: Staff' );
187+ $p -> close_jgrowl;
202188
203- # Remove the members we just added
204- my $alice = RT::Test-> load_or_create_user( Name => ' alice@localhost' );
189+ # Reopen inline edit to remove members
190+ $page -> click(' div.asset-people a.inline-edit-toggle' );
191+ $p -> wait_for_element( ' input#checkbox-RemoveRoleMember-Contact-' . $alice -> PrincipalId );
205192 $page -> click( ' input#checkbox-RemoveRoleMember-Contact-' . $alice -> PrincipalId );
206193 $page -> click( ' input#checkbox-RemoveRoleMember-HeldBy-' . $staff -> PrincipalId );
207194 $p -> submit_form_ok(
208195 {
209- form => ' #ModifyAssetPeople' ,
210- button => ' Update' ,
196+ form => ' div.asset-people form.inline-edit' ,
211197 },
212198 ' Remove contact and held by'
213199 );
200+ $p -> wait_for_notifications(2);
214201 $p -> text_contains(' Member deleted' );
202+ $p -> close_jgrowl;
215203
216204 # Add manager custom role and test it
217205 my $manager = RT::CustomRole-> new( RT-> SystemUser );
@@ -224,22 +212,26 @@ diag "People update";
224212 );
225213 ok( $manager -> AddToObject( $catalog -> Id ) );
226214
227- $p -> get_ok( ' /Asset/ModifyPeople.html?id=' . $asset -> Id );
215+ # Reload to pick up the new custom role
216+ $p -> get_ok( ' /Asset/Display.html?id=' . $id );
217+ $page -> click(' div.asset-people a.inline-edit-toggle' );
218+
228219 $dom = $p -> dom;
229220 my $manager_input = $dom -> at( ' input[name="SetRoleMember-' . $manager -> GroupType . ' "]' );
230221 ok( $manager_input , ' Found manager input' );
231222 is( $manager_input -> attr(' value' ), ' Nobody' , ' Default manager is Nobody' );
232223
224+ my $group_type = $manager -> GroupType;
233225 $p -> submit_form_ok(
234226 {
235- form => ' #ModifyAssetPeople ' ,
227+ form => ' div.asset-people form.inline-edit ' ,
236228 fields => {
237- ' SetRoleMember-' . $manager -> GroupType => ' root' ,
229+ " SetRoleMember-$group_type " => ' root' ,
238230 },
239- button => ' Update' ,
240231 },
241232 ' Set manager to root'
242233 );
234+ $p -> wait_for_notifications(1);
243235 $p -> text_contains(' Manager set to root' );
244236}
245237
0 commit comments