mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
3112433a58
Summary: Dropdown conditions let you specify a predicate formula that's used to filter choices and references in their respective autocomplete dropdown menus. Test Plan: Python and browser tests (WIP). Reviewers: jarek, paulfitz Reviewed By: jarek Subscribers: dsagal, paulfitz Differential Revision: https://phab.getgrist.com/D4235
109 lines
4.0 KiB
Python
109 lines
4.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
# pylint:disable=line-too-long
|
|
import json
|
|
|
|
import test_engine
|
|
|
|
class TestDropdownConditionUserActions(test_engine.EngineTestCase):
|
|
def test_dropdown_condition_col_actions(self):
|
|
self.apply_user_action(['AddTable', 'Table1', [
|
|
{'id': 'A', 'type': 'Text'},
|
|
{'id': 'B', 'type': 'Text'},
|
|
{'id': 'C', 'type': 'Text'},
|
|
]])
|
|
|
|
# Check that setting dropdownCondition.text automatically sets a parsed version.
|
|
out_actions = self.apply_user_action(['UpdateRecord', '_grist_Tables_column', 1, {
|
|
"widgetOptions": json.dumps({
|
|
"dropdownCondition": {
|
|
"text": 'choice.Role == "Manager"',
|
|
},
|
|
}),
|
|
}])
|
|
self.assertPartialOutActions(out_actions, { "stored": [
|
|
["UpdateRecord", "_grist_Tables_column", 1, {
|
|
"widgetOptions": "{\"dropdownCondition\": {\"text\": "
|
|
+ "\"choice.Role == \\\"Manager\\\"\", \"parsed\": "
|
|
+ "\"[\\\"Eq\\\", [\\\"Attr\\\", [\\\"Name\\\", \\\"choice\\\"], "
|
|
+ "\\\"Role\\\"], [\\\"Const\\\", \\\"Manager\\\"]]\"}}"
|
|
}]
|
|
]})
|
|
out_actions = self.apply_user_action(['BulkUpdateRecord', '_grist_Tables_column', [2, 3], {
|
|
"widgetOptions": [
|
|
json.dumps({
|
|
"dropdownCondition": {
|
|
"text": 'choice == "Manager"',
|
|
},
|
|
}),
|
|
json.dumps({
|
|
"dropdownCondition": {
|
|
"text": '$Role == "Manager"',
|
|
},
|
|
}),
|
|
],
|
|
}])
|
|
self.assertPartialOutActions(out_actions, { "stored": [
|
|
["BulkUpdateRecord", "_grist_Tables_column", [2, 3], {
|
|
"widgetOptions": [
|
|
"{\"dropdownCondition\": {\"text\": \"choice == "
|
|
+ "\\\"Manager\\\"\", \"parsed\": \"[\\\"Eq\\\", "
|
|
+ "[\\\"Name\\\", \\\"choice\\\"], [\\\"Const\\\", \\\"Manager\\\"]]\"}}",
|
|
"{\"dropdownCondition\": {\"text\": \"$Role == "
|
|
+ "\\\"Manager\\\"\", \"parsed\": \"[\\\"Eq\\\", "
|
|
+ "[\\\"Attr\\\", [\\\"Name\\\", \\\"rec\\\"], \\\"Role\\\"], "
|
|
+ "[\\\"Const\\\", \\\"Manager\\\"]]\"}}",
|
|
]
|
|
}]
|
|
]})
|
|
|
|
def test_dropdown_condition_field_actions(self):
|
|
self.apply_user_action(['AddTable', 'Table1', [
|
|
{'id': 'A', 'type': 'Text'},
|
|
{'id': 'B', 'type': 'Text'},
|
|
{'id': 'C', 'type': 'Text'},
|
|
]])
|
|
|
|
# Check that setting dropdownCondition.text automatically sets a parsed version.
|
|
out_actions = self.apply_user_action(['UpdateRecord', '_grist_Views_section_field', 1, {
|
|
"widgetOptions": json.dumps({
|
|
"dropdownCondition": {
|
|
"text": 'choice.Role == "Manager"',
|
|
},
|
|
}),
|
|
}])
|
|
self.assertPartialOutActions(out_actions, { "stored": [
|
|
["UpdateRecord", "_grist_Views_section_field", 1, {
|
|
"widgetOptions": "{\"dropdownCondition\": {\"text\": "
|
|
+ "\"choice.Role == \\\"Manager\\\"\", \"parsed\": "
|
|
+ "\"[\\\"Eq\\\", [\\\"Attr\\\", [\\\"Name\\\", \\\"choice\\\"], "
|
|
+ "\\\"Role\\\"], [\\\"Const\\\", \\\"Manager\\\"]]\"}}"
|
|
}]
|
|
]})
|
|
out_actions = self.apply_user_action(['BulkUpdateRecord', '_grist_Views_section_field', [2, 3], {
|
|
"widgetOptions": [
|
|
json.dumps({
|
|
"dropdownCondition": {
|
|
"text": 'choice == "Manager"',
|
|
},
|
|
}),
|
|
json.dumps({
|
|
"dropdownCondition": {
|
|
"text": '$Role == "Manager"',
|
|
},
|
|
}),
|
|
],
|
|
}])
|
|
self.assertPartialOutActions(out_actions, { "stored": [
|
|
["BulkUpdateRecord", "_grist_Views_section_field", [2, 3], {
|
|
"widgetOptions": [
|
|
"{\"dropdownCondition\": {\"text\": \"choice == "
|
|
+ "\\\"Manager\\\"\", \"parsed\": \"[\\\"Eq\\\", "
|
|
+ "[\\\"Name\\\", \\\"choice\\\"], [\\\"Const\\\", \\\"Manager\\\"]]\"}}",
|
|
"{\"dropdownCondition\": {\"text\": \"$Role == "
|
|
+ "\\\"Manager\\\"\", \"parsed\": \"[\\\"Eq\\\", "
|
|
+ "[\\\"Attr\\\", [\\\"Name\\\", \\\"rec\\\"], \\\"Role\\\"], "
|
|
+ "[\\\"Const\\\", \\\"Manager\\\"]]\"}}",
|
|
]
|
|
}]
|
|
]})
|