diff options
Diffstat (limited to 'qa/qa/page/component/members/invite_members_modal.rb')
-rw-r--r-- | qa/qa/page/component/members/invite_members_modal.rb | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/qa/qa/page/component/members/invite_members_modal.rb b/qa/qa/page/component/members/invite_members_modal.rb new file mode 100644 index 00000000000..0220bb1e4fc --- /dev/null +++ b/qa/qa/page/component/members/invite_members_modal.rb @@ -0,0 +1,92 @@ +# frozen_string_literal: true + +module QA + module Page + module Component + module Members + module InviteMembersModal + extend QA::Page::PageConcern + + def self.included(base) + super + + base.view 'app/assets/javascripts/invite_members/components/invite_modal_base.vue' do + element :invite_button + element :access_level_dropdown + element :invite_members_modal_content + end + + base.view 'app/assets/javascripts/invite_members/components/group_select.vue' do + element :group_select_dropdown_search_field + element :group_select_dropdown_item + end + + base.view 'app/assets/javascripts/invite_members/components/members_token_select.vue' do + element :members_token_select_input + end + + base.view 'app/assets/javascripts/invite_members/components/invite_group_trigger.vue' do + element :invite_a_group_button + end + + base.view 'app/assets/javascripts/invite_members/constants.js' do + element :invite_members_button + end + end + + def open_invite_members_modal + click_element :invite_members_button + end + + def open_invite_group_modal + click_element :invite_a_group_button + end + + def add_member(username, access_level = 'Developer', refresh_page: true) + open_invite_members_modal + + within_element(:invite_members_modal_content) do + fill_element(:members_token_select_input, username) + Support::WaitForRequests.wait_for_requests + click_button(username, match: :prefer_exact) + set_access_level(access_level) + end + + send_invite(refresh_page) + end + + def invite_group(group_name, access_level = 'Guest', refresh_page: true) + open_invite_group_modal + + within_element(:invite_members_modal_content) do + click_button 'Select a group' + + Support::Waiter.wait_until { has_element?(:group_select_dropdown_item) } + + fill_element :group_select_dropdown_search_field, group_name + Support::WaitForRequests.wait_for_requests + click_button group_name + + set_access_level(access_level) + end + + send_invite(refresh_page) + end + + def send_invite(refresh = false) + click_element :invite_button + Support::WaitForRequests.wait_for_requests + page.refresh if refresh + end + + private + + def set_access_level(access_level) + # Guest option is selected by default, skipping these steps if desired option is 'Guest' + select_element(:access_level_dropdown, access_level) unless access_level == 'Guest' + end + end + end + end + end +end |