~diegosarmentero/ubuntuone-windows-installer/setup-button-fix

« back to all changes in this revision

Viewing changes to ubuntuone_installer/gui/qt/tests/test_gui.py

  • Committer: Tarmac
  • Author(s): ralsina
  • Date: 2011-08-23 14:01:04 UTC
  • mfrom: (30.2.35 local-folders-fixes)
  • Revision ID: tarmac-20110823140104-d41b1xjjj4amnnjo
Implement the "Computer-to-cloud" page of the installer according to spec and discussions.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
"""Tests for the Qt UI."""
21
21
 
22
22
import os
23
 
import Queue
24
 
import shutil
25
 
import tempfile
26
23
 
27
24
from twisted.internet import defer
28
25
from PyQt4 import QtGui, QtCore
32
29
from ubuntuone_installer.gui.qt import gui
33
30
from ubuntuone_installer.gui.qt.tests import BaseTestCase
34
31
from ubuntuone_installer.gui.qt import forgotten
35
 
from ubuntuone_installer.gui.qt import local_folders
36
32
from ubuntuone_installer.gui.qt import setup_account
37
33
from ubuntuone_installer.gui.qt.ui import (
38
34
    setup_account_ui,
217
213
        self.ui.restart()
218
214
        self.ui.show()
219
215
 
 
216
        # pylint: disable=W0212
220
217
        preferences_page._button_clicked(QtGui.QWizard.CustomButton2)
221
218
        self.assertEqual(
222
219
            preferences_page.preferences_widget.restore_button_clicked, True)
245
242
        self.assertEqual(tree_folders.isHeaderHidden(), True)
246
243
        tree_folders = folders_page.folders_widget.ui.folders
247
244
        self.assertEqual(tree_folders.isColumnHidden(2), True)
 
245
        # pylint: disable=W0212
248
246
        self.assertEqual(self.ui._next_id, self.ui.CONGRATULATIONS_PAGE)
249
247
 
250
248
    def test_folders_page_next_id(self):
571
569
        self.shown = True
572
570
 
573
571
 
574
 
class FakeCPBackend(object):
575
 
    """Fake Control Panel backend."""
576
 
 
577
 
    def account_info(self, *args):
578
 
        """Fake account info."""
579
 
        return defer.succeed({"quota_total": 1000})
580
 
 
581
 
 
582
 
class FakeAddFolderButton(object):
583
 
    """Fake Control Panel "Add Folder" button."""
584
 
    backend = FakeCPBackend()
585
 
 
586
 
 
587
 
class LocalFoldersTestCase(BaseTestCase):
588
 
    """Test the LocalFoldersPage code."""
589
 
 
590
 
    class_ui = local_folders.LocalFoldersPage
591
 
 
592
 
    def setUp(self):
593
 
        """Initialize this test instance."""
594
 
        # Create a test folder with a known size
595
 
        self.tmpdir = tempfile.mkdtemp()
596
 
        f = open(os.path.join(self.tmpdir, 'test_file'), 'wb')
597
 
        f.write(" " * 600)
598
 
        f.close()
599
 
        os.mkdir(os.path.join(self.tmpdir, 'test_dir'))
600
 
        f = open(os.path.join(self.tmpdir, 'test_dir', 'test_file_2'), 'wb')
601
 
        f.write(" " * 737)
602
 
        f.close()
603
 
        super(LocalFoldersTestCase, self).setUp()
604
 
 
605
 
    def tearDown(self):
606
 
        """Remove the temporary tree."""
607
 
        shutil.rmtree(self.tmpdir)
608
 
        BaseTestCase.tearDown(self)
609
 
 
610
 
    def test_size_calculation(self):
611
 
        """Test the recursive folder size calculation."""
612
 
        queue = Queue.Queue()
613
 
        csize = local_folders.CalculateSize(self.tmpdir, queue)
614
 
        csize.run()
615
 
        path, size = queue.get()
616
 
        self.assertEqual(path, self.tmpdir)
617
 
        self.assertEqual(size, 1337)
618
 
 
619
 
    def test_item_addition(self):
620
 
        """Add an item (plus the default one), then remove them."""
621
 
        self.ui.add_folder(self.tmpdir)
622
 
        self.assertEqual(4, self.ui.ui.folder_list.topLevelItemCount())
623
 
 
624
 
    def test_total_size(self):
625
 
        """Test that the header reflects the change in item sizes."""
626
 
        while self.ui.ui.folder_list.topLevelItemCount():
627
 
            self.ui.on_folder_list_itemClicked(
628
 
                self.ui.ui.folder_list.topLevelItem(0), 2)
629
 
        self.assertEqual(0, self.ui.ui.folder_list.topLevelItemCount())
630
 
        item = self.ui.add_folder(self.tmpdir)
631
 
        item.size = 1337
632
 
        item.thread.run()
633
 
        item.thread.join()
634
 
        self.ui.update_sizes()
635
 
        self.assertEqual(unicode(self.ui.ui.folder_list.headerItem().text(1)),
636
 
            u"Space (1337)")
637
 
 
638
 
    def test_add_twice(self):
639
 
        """Behaviour for adding the same folder twice.
640
 
 
641
 
        * It's added only once.
642
 
        """
643
 
        while self.ui.ui.folder_list.topLevelItemCount():
644
 
            self.ui.on_folder_list_itemClicked(
645
 
                self.ui.ui.folder_list.topLevelItem(0), 2)
646
 
        self.assertEqual(0, self.ui.ui.folder_list.topLevelItemCount())
647
 
        self.ui.add_folder(self.tmpdir)
648
 
        self.ui.add_folder(self.tmpdir)
649
 
        self.assertEqual(1, self.ui.ui.folder_list.topLevelItemCount())
650
 
 
651
 
    def test_add_missing_folder(self):
652
 
        """Behaviour for adding a folder that doesn't exist.
653
 
 
654
 
        * It's added.
655
 
        * Has size 0.
656
 
        """
657
 
 
658
 
        while self.ui.ui.folder_list.topLevelItemCount():
659
 
            self.ui.on_folder_list_itemClicked(
660
 
                self.ui.ui.folder_list.topLevelItem(0), 2)
661
 
        self.assertEqual(0, self.ui.ui.folder_list.topLevelItemCount())
662
 
        item = self.ui.add_folder(os.path.join("xyzzy", "xyzzy", "xyzzy"))
663
 
        self.assertEqual(1, self.ui.ui.folder_list.topLevelItemCount())
664
 
        item.thread.run()
665
 
        item.thread.join()
666
 
        self.ui.update_sizes()
667
 
        self.assertEqual(0, item.size)
668
 
        # world did not explode
669
 
 
670
 
    def test_over_quota(self):
671
 
        """After removing all folders, offer_frame should be hidden.
672
 
 
673
 
        Push the user over quota, it should be visible.
674
 
        """
675
 
        self.patch(self.ui.ui.offer_frame, "setVisible", self._set_called)
676
 
        while self.ui.ui.folder_list.topLevelItemCount():
677
 
            self.ui.on_folder_list_itemClicked(
678
 
                self.ui.ui.folder_list.topLevelItem(0), 2)
679
 
        self.assertEqual(0, self.ui.ui.folder_list.topLevelItemCount())
680
 
        self.ui.update_sizes()
681
 
        self.assertEqual(self._called, ((False,), {}))
682
 
        self.ui.show_hide_offer(self.ui.quota() + 1)
683
 
        self.assertEqual(self._called, ((True,), {}))
684
 
 
685
 
 
686
 
LocalFoldersTestCase.skip = 'We need to re-write this test case entirely,' \
687
 
                            'see bug #824675 for reference.'
 
572
class FakeWizard(object):
 
573
    """Replace wizard() function on wizard pages."""
 
574
 
 
575
    params = None
 
576
 
 
577
    # Invalid name "setButtonLayout"
 
578
    # pylint: disable=C0103
 
579
 
 
580
    def setButtonLayout(self, *args, **kwargs):
 
581
        """Fake the functionality of setButtonLayout on QWizard class."""
 
582
        FakeWizard.params = (args, kwargs)
 
583
 
 
584
    # pylint: enable=C0103
688
585
 
689
586
 
690
587
class FakeWizard(object):