/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
776.3.3 by Curtis Hovey
Save point before mergining tip.
1
# Copyright (C) 2012 Curtis Hovey <sinzui.is@verizon.net>
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
"""Test the ui functionality."""
18
19
from gi.repository import Gtk
20
21
from bzrlib import (
776.3.11 by Curtis Hovey
Added test to verify that DivergedBranches is handled.
22
    errors,
776.3.3 by Curtis Hovey
Save point before mergining tip.
23
    tests,
776.3.6 by Curtis Hovey
Added tests for push __init__.
24
    ui,
776.3.3 by Curtis Hovey
Save point before mergining tip.
25
    )
26
776.3.9 by Curtis Hovey
Added a simple test for _on_push_clicked.
27
from bzrlib.plugins.gtk import (
28
    push,
29
    set_ui_factory,
776.3.3 by Curtis Hovey
Save point before mergining tip.
30
    )
776.3.9 by Curtis Hovey
Added a simple test for _on_push_clicked.
31
from bzrlib.plugins.gtk.tests import MockMethod
776.3.7 by Curtis Hovey
Added test for _build_history.
32
from bzrlib.plugins.gtk.history import UrlHistory
776.3.6 by Curtis Hovey
Added tests for push __init__.
33
from bzrlib.plugins.gtk.ui import ProgressPanel
776.3.3 by Curtis Hovey
Save point before mergining tip.
34
35
776.3.5 by Curtis Hovey
Replace deprecated hbox with box.
36
class PushTestCase(tests.TestCaseWithMemoryTransport):
37
776.3.7 by Curtis Hovey
Added test for _build_history.
38
    def make_push_branch(self):
39
        tree = self.make_branch_and_memory_tree('test')
40
        return tree.branch
41
776.3.5 by Curtis Hovey
Replace deprecated hbox with box.
42
    def test_init(self):
43
        set_ui_factory()
776.3.7 by Curtis Hovey
Added test for _build_history.
44
        branch = self.make_push_branch()
776.3.9 by Curtis Hovey
Added a simple test for _on_push_clicked.
45
        dialog = push.PushDialog(
776.3.5 by Curtis Hovey
Replace deprecated hbox with box.
46
            repository=None, revid=None, branch=branch, parent=None)
47
        self.assertIs(None, dialog.props.parent)
48
        self.assertIs(None, dialog.repository)
49
        self.assertIs(None, dialog.revid)
50
        self.assertIs(branch, dialog.branch)
776.3.15 by Curtis Hovey
Follow GNOME HIG.
51
        # Layout rules to match HIG.
776.3.5 by Curtis Hovey
Replace deprecated hbox with box.
52
        self.assertIsInstance(dialog._label_location, Gtk.Label)
53
        self.assertIsInstance(dialog._combo, Gtk.ComboBox)
54
        self.assertIsInstance(dialog._button_push, Gtk.Button)
55
        self.assertIsInstance(dialog._hbox_location, Gtk.Box)
776.3.6 by Curtis Hovey
Added tests for push __init__.
56
        self.assertIsInstance(dialog._progress_widget, ProgressPanel)
776.3.15 by Curtis Hovey
Follow GNOME HIG.
57
        self.assertIsInstance(dialog._push_message, Gtk.Label)
58
        self.assertIsInstance(dialog._history, UrlHistory)
776.3.6 by Curtis Hovey
Added tests for push __init__.
59
        self.assertIs(
60
            ui.ui_factory._progress_bar_widget, dialog._progress_widget)
776.3.15 by Curtis Hovey
Follow GNOME HIG.
61
        self.assertEqual(
62
            Gtk.Orientation.HORIZONTAL,
63
            dialog._hbox_location.props.orientation)
64
        self.assertEqual(0.0, dialog._push_message.props.xalign)
65
        self.assertEqual(6, dialog.props.border_width)
66
        self.assertEqual(6, dialog._hbox_location.props.spacing)
67
        self.assertEqual(6, dialog.get_content_area().props.spacing)
68
        # Show rules.
776.3.6 by Curtis Hovey
Added tests for push __init__.
69
        self.assertIs(True, dialog._combo.props.visible)
70
        self.assertIs(False, dialog._progress_widget.props.visible)
71
        self.assertIs(False, dialog._push_message.props.visible)
776.3.7 by Curtis Hovey
Added test for _build_history.
72
73
    def test_build_history(self):
74
        set_ui_factory()
75
        branch = self.make_push_branch()
776.3.9 by Curtis Hovey
Added a simple test for _on_push_clicked.
76
        branch.set_push_location('lp:~user/fnord/trunk')
77
        dialog = push.PushDialog(None, None, branch)
776.3.7 by Curtis Hovey
Added test for _build_history.
78
        dialog._history.add_entry('lp:~user/fnord/test1')
79
        dialog._history.add_entry('lp:~user/fnord/test2')
80
        dialog._build_history()
81
        self.assertEqual(
82
            'lp:~user/fnord/trunk', dialog._combo.get_child().props.text)
83
        self.assertIsInstance(dialog._combo_model, Gtk.ListStore)
84
        self.assertIs(dialog._combo.get_model(), dialog._combo_model)
85
        locations = [row[0] for row in dialog._combo_model]
86
        self.assertEqual(
87
            ['lp:~user/fnord/test1', 'lp:~user/fnord/test2'], locations)
776.3.8 by Curtis Hovey
Added tests for _on_close_clicked.
88
89
    def test_on_close_clicked(self):
90
        # The ui_factory's progress bar widget is set to None.
91
        set_ui_factory()
92
        branch = self.make_push_branch()
776.3.9 by Curtis Hovey
Added a simple test for _on_push_clicked.
93
        dialog = push.PushDialog(None, None, branch)
776.3.8 by Curtis Hovey
Added tests for _on_close_clicked.
94
        dialog._on_close_clicked(None)
95
        self.assertIs(None, ui.ui_factory._progress_bar_widget)
776.3.9 by Curtis Hovey
Added a simple test for _on_push_clicked.
96
97
    def test_on_push_clicked_without_errors(self):
776.3.16 by Curtis Hovey
Added comments.
98
        # Verify the dialog's and branch's final states after a push.
776.3.9 by Curtis Hovey
Added a simple test for _on_push_clicked.
99
        MockMethod.bind(self, push, 'do_push', "test success")
776.3.11 by Curtis Hovey
Added test to verify that DivergedBranches is handled.
100
        set_ui_factory()
101
        branch = self.make_push_branch()
102
        dialog = push.PushDialog(None, None, branch)
776.3.10 by Curtis Hovey
Verified that the progress widget was called.
103
        MockMethod.bind(self, dialog._progress_widget, 'tick')
776.3.9 by Curtis Hovey
Added a simple test for _on_push_clicked.
104
        dialog._combo.get_child().props.text = 'lp:~user/fnord/test'
105
        dialog._on_push_clicked(None)
776.3.10 by Curtis Hovey
Verified that the progress widget was called.
106
        self.assertIs(True, dialog._progress_widget.tick.called)
107
        self.assertIs(False, dialog._progress_widget.props.visible)
776.3.9 by Curtis Hovey
Added a simple test for _on_push_clicked.
108
        self.assertIs(True, push.do_push.called)
109
        self.assertEqual(
110
            (branch, 'lp:~user/fnord/test'), push.do_push.args)
111
        self.assertEqual(
112
            {'overwrite': False}, push.do_push.kwargs)
113
        self.assertIs(True, dialog._push_message.props.visible)
114
        self.assertEqual('test success', dialog._push_message.props.label)
115
        self.assertEqual(
116
            'lp:~user/fnord/test', dialog._history.get_entries()[-1])
117
        self.assertEqual('lp:~user/fnord/test', branch.get_push_location())
776.3.11 by Curtis Hovey
Added test to verify that DivergedBranches is handled.
118
119
    def test_on_push_clicked_with_divered_branches(self):
776.3.16 by Curtis Hovey
Added comments.
120
        # Verify that when DivergedBranches is raise, the user can choose
121
        # to overwrite the branch.
776.3.11 by Curtis Hovey
Added test to verify that DivergedBranches is handled.
122
        error = errors.DivergedBranches(None, None)
123
        MockMethod.bind(self, push, 'do_push', raise_error=error)
124
        MockMethod.bind(self, push, 'question_dialog', Gtk.ResponseType.YES)
125
        set_ui_factory()
126
        branch = self.make_push_branch()
127
        dialog = push.PushDialog(None, None, branch)
128
        dialog._combo.get_child().props.text = 'lp:~user/fnord/test'
129
        dialog._on_push_clicked(None)
130
        self.assertIs(True, push.do_push.called)
131
        self.assertEqual(2, push.do_push.call_count)
132
        self.assertEqual(
133
            (branch, 'lp:~user/fnord/test'), push.do_push.args)
134
        self.assertEqual(
135
            {'overwrite': True}, push.do_push.kwargs)