Skip to content

Commit 1653b95

Browse files
committed
adding specs for action confirm option #257
1 parent 0d82948 commit 1653b95

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed

spec/usage/components/action_spec.rb

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,125 @@ def page2
384384

385385
end
386386

387+
specify "Example 7 - Async delete request with confirm option" do
388+
389+
class ActionTestController < TestController
390+
def destroy
391+
render json: {}, status: 200
392+
end
393+
end
394+
395+
Rails.application.routes.append do
396+
delete '/action_test', to: 'action_test#destroy', as: 'action_destroy_test'
397+
end
398+
Rails.application.reload_routes!
399+
400+
class ExamplePage < Matestack::Ui::Page
401+
402+
def response
403+
components {
404+
action action_config do
405+
button text: "Click me!"
406+
end
407+
async show_on: "my_action_success", hide_after: 300 do
408+
plain "Well done!"
409+
end
410+
}
411+
end
412+
413+
def action_config
414+
return {
415+
method: :delete,
416+
path: :action_destroy_test_path,
417+
data: {
418+
foo: "bar"
419+
},
420+
confirm: {
421+
text: "Are you sure?"
422+
},
423+
success: {
424+
emit: "my_action_success"
425+
}
426+
}
427+
end
428+
429+
end
430+
431+
visit "/example"
432+
433+
# https://stackoverflow.com/a/34888404/2066546
434+
# https://github.com/teamcapybara/capybara#modals
435+
dismiss_confirm do
436+
click_button "Click me!"
437+
end
438+
439+
expect(page).to have_no_text "Well done!"
440+
441+
accept_confirm do
442+
click_button "Click me!"
443+
end
444+
445+
expect(page).to have_text "Well done!"
446+
end
447+
448+
end
449+
450+
it 'does not require a confirm text option' do
451+
# When no confirm text is given, the default "Are you sure?" will be used.
452+
453+
class ActionTestController < TestController
454+
def destroy
455+
render json: {}, status: 200
456+
end
457+
end
458+
459+
Rails.application.routes.append do
460+
delete '/action_test', to: 'action_test#destroy', as: 'action_destroy_test'
461+
end
462+
Rails.application.reload_routes!
463+
464+
class ExamplePage < Matestack::Ui::Page
465+
466+
def response
467+
components {
468+
action action_config do
469+
button text: "Click me!"
470+
end
471+
async show_on: "my_action_success", hide_after: 300 do
472+
plain "Well done!"
473+
end
474+
}
475+
end
476+
477+
def action_config
478+
return {
479+
method: :delete,
480+
path: :action_destroy_test_path,
481+
data: {
482+
foo: "bar"
483+
},
484+
confirm: true,
485+
success: {
486+
emit: "my_action_success"
487+
}
488+
}
489+
end
490+
491+
end
492+
493+
visit "/example"
494+
495+
dismiss_confirm do
496+
click_button "Click me!"
497+
end
498+
499+
expect(page).to have_no_text "Well done!"
500+
501+
accept_confirm do
502+
click_button "Click me!"
503+
end
504+
505+
expect(page).to have_text "Well done!"
387506
end
388507

389508
it 'accepts class and id attributes and returns them as the corresponding HTML attributes' do

0 commit comments

Comments
 (0)