示例#1
0
    def setup(self):
        super(TestController, self).setup()
        self.controller = Controller()

        self.saved_stdout = sys.stdout
        self.mock_stdout = StringIO.StringIO()
        sys.stdout = self.mock_stdout
示例#2
0
class TestController(BaseTestCase):

    def setup(self):
        super(TestController, self).setup()
        self.controller = Controller()

        self.saved_stdout = sys.stdout
        self.mock_stdout = StringIO.StringIO()
        sys.stdout = self.mock_stdout

    def teardown(self):
        sys.stdout = self.saved_stdout

    def test_parse_input_two_nums(self):
        self.controller.parse_input('23-33bar')
        assert self.controller.lower_num == 23
        assert self.controller.upper_num == 33
        assert self.controller.cmd == 'bar'

    def test_parse_input_one_num(self):
        self.controller.parse_input('3bar')
        assert self.controller.lower_num == 3
        assert self.controller.upper_num == 4
        assert self.controller.cmd == 'bar'

    def test_parse_input_one_num_to_end(self):
        self.controller.parse_input('3-bar')
        assert self.controller.lower_num == 3
        assert self.controller.upper_num == 25
        assert self.controller.cmd == 'bar'

    def test_parse_input_no_num(self):
        self.controller.parse_input('o')
        assert self.controller.lower_num == 0
        assert self.controller.upper_num == 1
        assert self.controller.cmd == 'o'

    def test_extract_commands(self):
        self.controller.parse_input('1-2aoxr')
        assert self.controller.extract_commands() == {'o': [], 'r': []}

    def test_process_commands_change_subreddit(self):
        self.controller.act_on_input('r(pics)')
        assert self.controller.subreddit == '/r/pics'

    def test_extract_commands_with_arguments(self):
        self.controller.parse_input('3g(arg1, arg2)')
        assert self.controller.extract_commands() == {'g': ['arg1', 'arg2']}

    def test_extract_commands_when_multiple_with_arguments(self):
        self.controller.parse_input('1-23og(arg1, arg2)c(arg3)')
        assert self.controller.extract_commands() == {
                'o': [], 'g': ['arg1', 'arg2'], 'c': ['arg3']}

    def test_open_url_in_browser(self):
        self.controller.act_on_input('1o')
        assert mod.webbrowser.calls('open_new_tab').once()

    def test_open_url_in_browser_range_one_link(self):
        self.controller.act_on_input('1-2o')
        assert mod.webbrowser.calls('open_new_tab').once()

    def test_open_url_in_browser_range_two_links(self):
        self.controller.act_on_input('1-3o')
        assert not mod.webbrowser.calls('open_new_tab').once()
        assert mod.webbrowser.calls('open_new_tab')
        assert len(mod.webbrowser.calls) == 2

    def test_open_comments_in_browser(self):
        self.controller.act_on_input('1h')
        assert mod.webbrowser.calls('open_new_tab').once()

    def test_printing_names(self):
        self.controller.act_on_input('1-n')
        printed = self.mock_stdout.getvalue()
        sys.stdout = self.saved_stdout
        assert 'Canada' in printed

    def test_view_helper(self):
        self.controller.view_helper(['ignored'])
        printed = self.mock_stdout.getvalue()
        sys.stdout = self.saved_stdout
        assert 'Canada' in printed

    def test_view(self):
        # TODO:
        self.controller.view()
        printed = self.mock_stdout.getvalue()
        sys.stdout = self.saved_stdout
        assert 'Canada' in printed

    def test_load_comments(self):
        assert self.controller.reddit.comment_page == None
        self.controller.act_on_input('.hi')
        assert self.controller.reddit.comment_page

    def test_default_number_range_setting(self):
        self.controller.act_on_input('o')
        sys.stdout = self.saved_stdout
        print mod.webbrowser.calls
        assert mod.webbrowser.calls('open_new_tab')