qubes-installer-qubes-os/anaconda/tests/gui/inside/summary.py
Marek Marczykowski-Górecki 701ced5ddb anaconda: update to 22.20.13-1
Apply diff anaconda-21.48.21-1..anaconda-22.20.13-1
2016-03-22 02:27:17 +13:00

83 lines
4.0 KiB
Python

# Copyright (C) 2014 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Author: Chris Lumens <clumens@redhat.com>
from dogtail.predicate import GenericPredicate
from dogtail.utils import doDelay
from . import UITestCase
# This test case handles the livecd case on the summary hub where everything
# works as intended. On this spoke, we are testing the following:
#
# * Clicking the Quit button brings up a dialog asking if you're sure, though
# we're not going to test that confirming actually quits.
# * The Begin Installation button is insensitive, since no disks have yet
# been selected.
# * Only the Date & Time, Keyboard, Installation Destination, and Network Config
# spoke selectors are visible.
class LiveCDSummaryTestCase(UITestCase):
def check_quit_button(self, spoke):
self.click_button("Quit", node=spoke)
dlg = self.check_dialog_displayed("Quit")
self.click_button("No", node=dlg)
def check_begin_installation_button(self, spoke):
button = self.find("Begin Installation", "push button", node=spoke)
self.assertIsNotNone(button, msg="Begin Installation button not found")
self.assertTrue(button.showing, msg="Begin Installation button should be displayed")
self.assertFalse(button.sensitive, msg="Begin Installation button should not be sensitive")
def check_shown_spoke_selectors(self, spoke):
# FIXME: This forces English.
validSelectors = ["TIME & DATE", "KEYBOARD", "INSTALLATION DESTINATION", "NETWORK & HOST NAME"]
selectors = spoke.findChildren(GenericPredicate(roleName="spoke selector"))
self.assertEqual(len(selectors), len(validSelectors), msg="Incorrect number of spoke selectors shown")
# Validate that only the spoke selectors we expect are shown. At the same time,
# we can also validate the status of each selector. This only validates the
# initial state of everything. Once we start clicking on spokes, things are
# going to change.
# FIXME: This encodes default information.
for selector in selectors:
if selector.name == "TIME & DATE":
self.assertEqual(selector.description, "Americas/New York timezone")
elif selector.name == "KEYBOARD":
self.assertEqual(selector.description, "English (US)")
elif selector.name == "INSTALLATION DESTINATION":
# We don't know how many disks are going to be involved - if there's
# just one, anaconda selects it by default. If there's more than
# one, it selects none.
self.assertIn(selector.description, ["Automatic partitioning selected",
"No disks selected"])
elif selector.name == "NETWORK & HOST NAME":
self.assertTrue(selector.description.startswith("Connected:"))
else:
self.fail("Invalid spoke selector shown on livecd: %s" % selector.name)
def _run(self):
# Before doing anything, verify we are on the right screen.
doDelay(5)
w = self.check_window_displayed("INSTALLATION SUMMARY")
# And now we can check everything else on the screen.
self.check_help_button(w)
self.check_quit_button(w)
self.check_begin_installation_button(w)
self.check_shown_spoke_selectors(w)
self.check_warning_bar(node=w)