Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions apps/dashboard/app/javascript/dynamic_forms.js
Original file line number Diff line number Diff line change
Expand Up @@ -771,12 +771,10 @@ function idFromToken(str) {

// you matched multiple things. For example you're searching for
// ClusterFilesystem and matched against both 'Cluster' and 'ClusterFilesystem'.
// The correrct element id ends with cluster_filesystem.
// The correrct element id is the longer one.
} else if(elements.length > 1) {
const snake_case_str = snakeCaseWords(str);
return elements.filter((element) => {
return element.endsWith(snake_case_str);
})[0];
let longest = elements.reduce((a, b) => a.length > b.length ? a : b);
return longest;
}
}

Expand Down
64 changes: 64 additions & 0 deletions apps/dashboard/test/system/batch_connect_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -918,6 +918,70 @@ def check_visibility(hidden_id, expect_hidden)
data_hide_checkbox_test(form, 'checkbox_test', 'gpus', true)
end

test 'hiding when form element names have a shared prefix' do
form = <<~HEREDOC
---
cluster:
- owens
form:
- cluster
- cluster_file_system
- checkbox_hide_cluster
- checkbox_hide_cluster_file_system
attributes:
cluster:
widget: 'text_area'
cluster_file_system:
widget: 'text_area'
checkbox_hide_cluster:
widget: 'check_box'
html_options:
data:
hide-cluster-when-checked: true
checkbox_hide_cluster_file_system:
widget: 'check_box'
html_options:
data:
hide-cluster-file-system-when-checked: true
HEREDOC
Dir.mktmpdir do |dir|
"#{dir}/app".tap { |d| Dir.mkdir(d) }
SysRouter.stubs(:base_path).returns(Pathname.new(dir))
stub_scontrol
stub_sacctmgr
stub_git("#{dir}/app")

Pathname.new("#{dir}/app/").join('form.yml').write(form)
visit new_batch_connect_session_context_url('sys/app')

# defaults
refute(find("##{bc_ele_id("checkbox_hide_cluster")}").checked?)
refute(find("##{bc_ele_id("checkbox_hide_cluster_file_system")}").checked?)
check_visibility("cluster", false)
check_visibility("cluster_file_system", false)

# check the checkbox, and 'cluster' is hidden
check(bc_ele_id("checkbox_hide_cluster"))
check_visibility("cluster", true)
check_visibility("cluster_file_system", false)

# un-check the checkbox, and 'cluster' is back to being visible
uncheck(bc_ele_id("checkbox_hide_cluster"))
check_visibility("cluster", false)
check_visibility("cluster_file_system", false)

# check the checkbox, and 'cluster_file_system' is hidden
check(bc_ele_id("checkbox_hide_cluster_file_system"))
check_visibility("cluster", false)
check_visibility("cluster_file_system", true)

# un-check the checkbox, and 'cluster_file_system' is back to being visible
uncheck(bc_ele_id("checkbox_hide_cluster_file_system"))
check_visibility("cluster", false)
check_visibility("cluster_file_system", false)
end
end

def basic_default_hide_check_hidden(invert = false)
if invert
assert_selector("##{bc_ele_id('gpus')}")
Expand Down
Loading