1# frozen_string_literal: true
2
3module QA
4  module Page
5    module Group
6      module Settings
7        class General < QA::Page::Base
8          include ::QA::Page::Settings::Common
9          include Page::Component::VisibilitySetting
10
11          view 'app/views/groups/edit.html.haml' do
12            element :permission_lfs_2fa_content
13            element :advanced_settings_content
14          end
15
16          view 'app/views/groups/settings/_permissions.html.haml' do
17            element :save_permissions_changes_button
18          end
19
20          view 'app/views/groups/settings/_general.html.haml' do
21            element :group_name_field
22            element :save_name_visibility_settings_button
23          end
24
25          view 'app/views/groups/settings/_lfs.html.haml' do
26            element :lfs_checkbox
27          end
28
29          view 'app/views/shared/_allow_request_access.html.haml' do
30            element :request_access_checkbox
31          end
32
33          view 'app/views/groups/settings/_two_factor_auth.html.haml' do
34            element :require_2fa_checkbox
35          end
36
37          view 'app/views/groups/settings/_project_creation_level.html.haml' do
38            element :project_creation_level_dropdown
39          end
40
41          view 'app/views/groups/settings/_transfer.html.haml' do
42            element :select_group_dropdown
43            element :transfer_group_button
44          end
45
46          view 'app/helpers/dropdowns_helper.rb' do
47            element :dropdown_input_field
48            element :dropdown_list_content
49          end
50
51          def set_group_name(name)
52            find_element(:group_name_field).send_keys([:command, 'a'], :backspace)
53            find_element(:group_name_field).set name
54          end
55
56          def click_save_name_visibility_settings_button
57            click_element(:save_name_visibility_settings_button)
58          end
59
60          def set_lfs_enabled
61            expand_content(:permission_lfs_2fa_content)
62            check_element(:lfs_checkbox, true)
63            click_element(:save_permissions_changes_button)
64          end
65
66          def set_lfs_disabled
67            expand_content(:permission_lfs_2fa_content)
68            uncheck_element(:lfs_checkbox, true)
69            click_element(:save_permissions_changes_button)
70          end
71
72          def set_request_access_enabled
73            expand_content(:permission_lfs_2fa_content)
74            check_element(:request_access_checkbox, true)
75            click_element(:save_permissions_changes_button)
76          end
77
78          def set_request_access_disabled
79            expand_content(:permission_lfs_2fa_content)
80            uncheck_element(:request_access_checkbox, true)
81            click_element(:save_permissions_changes_button)
82          end
83
84          def set_require_2fa_enabled
85            expand_content(:permission_lfs_2fa_content)
86            check_element(:require_2fa_checkbox, true)
87            click_element(:save_permissions_changes_button)
88          end
89
90          def set_require_2fa_disabled
91            expand_content(:permission_lfs_2fa_content)
92            uncheck_element(:require_2fa_checkbox, true)
93            click_element(:save_permissions_changes_button)
94          end
95
96          def set_project_creation_level(value)
97            expand_content(:permission_lfs_2fa_content)
98            select_element(:project_creation_level_dropdown, value)
99            click_element(:save_permissions_changes_button)
100          end
101
102          def toggle_request_access
103            expand_content(:permission_lfs_2fa_content)
104
105            if find_element(:request_access_checkbox, visible: false).checked?
106              uncheck_element(:request_access_checkbox, true)
107            else
108              check_element(:request_access_checkbox, true)
109            end
110
111            click_element(:save_permissions_changes_button)
112          end
113
114          def transfer_group(target_group)
115            expand_content :advanced_settings_content
116
117            click_element :select_group_dropdown
118            fill_element(:dropdown_input_field, target_group)
119
120            within_element(:dropdown_list_content) do
121              click_on target_group
122            end
123
124            click_element :transfer_group_button
125          end
126        end
127      end
128    end
129  end
130end
131
132QA::Page::Group::Settings::General.prepend_mod_with('Page::Group::Settings::General', namespace: QA)
133