summaryrefslogtreecommitdiff
path: root/qa/qa/page/component/members/invite_members_modal.rb
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/page/component/members/invite_members_modal.rb')
-rw-r--r--qa/qa/page/component/members/invite_members_modal.rb92
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