# -*- 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\\\"]]\"}}", ] }] ]})