1
0
Fork 0
libreoffice/sw/qa/uitest/writer_tests5/DropDownFormFieldPropertiesDialog.py
Daniel Baumann 8e63e14cf6
Adding upstream version 4:25.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 16:20:04 +02:00

234 lines
13 KiB
Python

# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
from uitest.framework import UITestCase
from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
from libreoffice.uno.propertyvalue import mkPropertyValues
class dropDownFormFieldDialog(UITestCase):
def test_add_new_items(self):
# open a file with an empty form field
with self.ui_test.load_file(get_url_for_data_file("empty_drop_down_form_field.odt")):
# open the dialog (cursor is at the field)
with self.ui_test.execute_dialog_through_command(".uno:ControlProperties") as xDialog:
itemEntry = xDialog.getChild("item_entry")
addButton = xDialog.getChild("add_button")
itemsList = xDialog.getChild("items_treeview")
# initial state
self.assertEqual(get_state_as_dict(itemEntry)["Text"], "")
self.assertEqual(get_state_as_dict(addButton)["Enabled"], "false")
self.assertEqual(get_state_as_dict(itemsList)["Children"], "0")
# add some new items
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"1000"}))
self.assertEqual(get_state_as_dict(addButton)["Enabled"], "true")
addButton.executeAction("CLICK", tuple())
self.assertEqual(get_state_as_dict(addButton)["Enabled"], "false")
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"2000"}))
addButton.executeAction("CLICK", tuple())
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"3000"}))
addButton.executeAction("CLICK", tuple())
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"4000"}))
addButton.executeAction("CLICK", tuple())
# check whether the items are there in the list
self.assertEqual(get_state_as_dict(itemsList)["Children"], "4")
self.assertEqual(get_state_as_dict(itemsList.getChild("0"))["Text"], "1000")
self.assertEqual(get_state_as_dict(itemsList.getChild("1"))["Text"], "2000")
self.assertEqual(get_state_as_dict(itemsList.getChild("2"))["Text"], "3000")
self.assertEqual(get_state_as_dict(itemsList.getChild("3"))["Text"], "4000")
# check whether items are the same after reopening
with self.ui_test.execute_dialog_through_command(".uno:ControlProperties") as xDialog:
itemsList = xDialog.getChild("items_treeview")
self.assertEqual(get_state_as_dict(itemsList)["Children"], "4")
self.assertEqual(get_state_as_dict(itemsList.getChild("0"))["Text"], "1000")
self.assertEqual(get_state_as_dict(itemsList.getChild("1"))["Text"], "2000")
self.assertEqual(get_state_as_dict(itemsList.getChild("2"))["Text"], "3000")
self.assertEqual(get_state_as_dict(itemsList.getChild("3"))["Text"], "4000")
def test_remove_items(self):
# open a file with an empty form field
with self.ui_test.load_file(get_url_for_data_file("empty_drop_down_form_field.odt")):
# open the dialog (cursor is at the field)
with self.ui_test.execute_dialog_through_command(".uno:ControlProperties") as xDialog:
itemEntry = xDialog.getChild("item_entry")
addButton = xDialog.getChild("add_button")
itemsList = xDialog.getChild("items_treeview")
removeButton = xDialog.getChild("remove_button")
# initial state
self.assertEqual(get_state_as_dict(itemEntry)["Text"], "")
self.assertEqual(get_state_as_dict(addButton)["Enabled"], "false")
self.assertEqual(get_state_as_dict(itemsList)["Children"], "0")
self.assertEqual(get_state_as_dict(removeButton)["Enabled"], "false")
# add some new items
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"1000"}))
self.assertEqual(get_state_as_dict(addButton)["Enabled"], "true")
addButton.executeAction("CLICK", tuple())
self.assertEqual(get_state_as_dict(removeButton)["Enabled"], "true")
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"2000"}))
addButton.executeAction("CLICK", tuple())
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"3000"}))
addButton.executeAction("CLICK", tuple())
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"4000"}))
addButton.executeAction("CLICK", tuple())
# check whether the items are there in the list
self.assertEqual(get_state_as_dict(itemsList)["Children"], "4")
self.assertEqual(get_state_as_dict(itemsList.getChild("0"))["Text"], "1000")
self.assertEqual(get_state_as_dict(itemsList.getChild("1"))["Text"], "2000")
self.assertEqual(get_state_as_dict(itemsList.getChild("2"))["Text"], "3000")
self.assertEqual(get_state_as_dict(itemsList.getChild("3"))["Text"], "4000")
# select an item from the list and remove it
itemsList.getChild("1").executeAction("SELECT", tuple())
removeButton.executeAction("CLICK", tuple())
# check whether the right item was removed
self.assertEqual(get_state_as_dict(itemsList)["Children"], "3")
self.assertEqual(get_state_as_dict(itemsList.getChild("0"))["Text"], "1000")
self.assertEqual(get_state_as_dict(itemsList.getChild("1"))["Text"], "3000")
self.assertEqual(get_state_as_dict(itemsList.getChild("2"))["Text"], "4000")
# check whether items are the same after reopening
with self.ui_test.execute_dialog_through_command(".uno:ControlProperties") as xDialog:
itemsList = xDialog.getChild("items_treeview")
removeButton = xDialog.getChild("remove_button")
self.assertEqual(get_state_as_dict(itemsList)["Children"], "3")
self.assertEqual(get_state_as_dict(itemsList.getChild("0"))["Text"], "1000")
self.assertEqual(get_state_as_dict(itemsList.getChild("1"))["Text"], "3000")
self.assertEqual(get_state_as_dict(itemsList.getChild("2"))["Text"], "4000")
# remove all items
itemsList.getChild("1").executeAction("SELECT", tuple())
removeButton.executeAction("CLICK", tuple())
removeButton.executeAction("CLICK", tuple())
removeButton.executeAction("CLICK", tuple())
self.assertEqual(get_state_as_dict(removeButton)["Enabled"], "false")
self.assertEqual(get_state_as_dict(itemsList)["Children"], "0")
def test_move_items(self):
# open a file with an empty form field
with self.ui_test.load_file(get_url_for_data_file("empty_drop_down_form_field.odt")):
# open the dialog (cursor is at the field)
with self.ui_test.execute_dialog_through_command(".uno:ControlProperties") as xDialog:
itemEntry = xDialog.getChild("item_entry")
addButton = xDialog.getChild("add_button")
itemsList = xDialog.getChild("items_treeview")
upButton = xDialog.getChild("up_button")
downButton = xDialog.getChild("down_button")
# initial state
self.assertEqual(get_state_as_dict(itemEntry)["Text"], "")
self.assertEqual(get_state_as_dict(addButton)["Enabled"], "false")
self.assertEqual(get_state_as_dict(itemsList)["Children"], "0")
self.assertEqual(get_state_as_dict(upButton)["Enabled"], "false")
self.assertEqual(get_state_as_dict(downButton)["Enabled"], "false")
# add some new items
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"1000"}))
self.assertEqual(get_state_as_dict(addButton)["Enabled"], "true")
addButton.executeAction("CLICK", tuple())
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"2000"}))
addButton.executeAction("CLICK", tuple())
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"3000"}))
addButton.executeAction("CLICK", tuple())
itemEntry.executeAction("TYPE", mkPropertyValues({"TEXT":"4000"}))
addButton.executeAction("CLICK", tuple())
# check whether the items are there in the list
self.assertEqual(get_state_as_dict(itemsList)["Children"], "4")
self.assertEqual(get_state_as_dict(itemsList.getChild("0"))["Text"], "1000")
self.assertEqual(get_state_as_dict(itemsList.getChild("1"))["Text"], "2000")
self.assertEqual(get_state_as_dict(itemsList.getChild("2"))["Text"], "3000")
self.assertEqual(get_state_as_dict(itemsList.getChild("3"))["Text"], "4000")
# select an item from the list and move it up
itemsList.getChild("1").executeAction("SELECT", tuple())
self.assertEqual(get_state_as_dict(upButton)["Enabled"], "true")
self.assertEqual(get_state_as_dict(downButton)["Enabled"], "true")
upButton.executeAction("CLICK", tuple())
self.assertEqual(get_state_as_dict(upButton)["Enabled"], "false")
self.assertEqual(get_state_as_dict(downButton)["Enabled"], "true")
# check whether the item was correctly moved
self.assertEqual(get_state_as_dict(itemsList)["Children"], "4")
self.assertEqual(get_state_as_dict(itemsList.getChild("0"))["Text"], "2000")
self.assertEqual(get_state_as_dict(itemsList.getChild("1"))["Text"], "1000")
self.assertEqual(get_state_as_dict(itemsList.getChild("2"))["Text"], "3000")
self.assertEqual(get_state_as_dict(itemsList.getChild("3"))["Text"], "4000")
# move down the selected item
downButton.executeAction("CLICK", tuple())
downButton.executeAction("CLICK", tuple())
downButton.executeAction("CLICK", tuple())
self.assertEqual(get_state_as_dict(upButton)["Enabled"], "true")
self.assertEqual(get_state_as_dict(downButton)["Enabled"], "false")
# check whether the item was correctly moved
self.assertEqual(get_state_as_dict(itemsList)["Children"], "4")
self.assertEqual(get_state_as_dict(itemsList.getChild("0"))["Text"], "1000")
self.assertEqual(get_state_as_dict(itemsList.getChild("1"))["Text"], "3000")
self.assertEqual(get_state_as_dict(itemsList.getChild("2"))["Text"], "4000")
self.assertEqual(get_state_as_dict(itemsList.getChild("3"))["Text"], "2000")
# check whether items are the same after reopening
with self.ui_test.execute_dialog_through_command(".uno:ControlProperties") as xDialog:
itemsList = xDialog.getChild("items_treeview")
self.assertEqual(get_state_as_dict(itemsList)["Children"], "4")
self.assertEqual(get_state_as_dict(itemsList.getChild("0"))["Text"], "1000")
self.assertEqual(get_state_as_dict(itemsList.getChild("1"))["Text"], "3000")
self.assertEqual(get_state_as_dict(itemsList.getChild("2"))["Text"], "4000")
self.assertEqual(get_state_as_dict(itemsList.getChild("3"))["Text"], "2000")
def test_drop_down_after_import(self):
files = ["drop_down_form_field.odt", "drop_down_form_field.doc", "drop_down_form_field.docx"]
for file in files:
# open a file with a drop-down for field with items and selection
with self.ui_test.load_file(get_url_for_data_file(file)):
# open the dialog (cursor is at the field)
with self.ui_test.execute_dialog_through_command(".uno:ControlProperties") as xDialog:
itemsList = xDialog.getChild("items_treeview")
# check whether the items are there in the list
self.assertEqual(get_state_as_dict(itemsList)["Children"], "4")
self.assertEqual(get_state_as_dict(itemsList.getChild("0"))["Text"], "1000")
self.assertEqual(get_state_as_dict(itemsList.getChild("1"))["Text"], "2000")
self.assertEqual(get_state_as_dict(itemsList.getChild("2"))["Text"], "3000")
self.assertEqual(get_state_as_dict(itemsList.getChild("3"))["Text"], "4000")
self.assertEqual(get_state_as_dict(itemsList)["SelectEntryText"], "3000")
# vim: set shiftwidth=4 softtabstop=4 expandtab: