Replace CONST.* by getattribute/setattr for cli
[functest.git] / functest / tests / unit / cli / commands / test_cli_tier.py
1 #!/usr/bin/env python
2
3 # All rights reserved. This program and the accompanying materials
4 # are made available under the terms of the Apache License, Version 2.0
5 # which accompanies this distribution, and is available at
6 # http://www.apache.org/licenses/LICENSE-2.0
7
8
9 import logging
10 import unittest
11
12 import mock
13
14 from functest.cli.commands import cli_tier
15 from functest.utils.constants import CONST
16
17
18 class CliTierTesting(unittest.TestCase):
19
20     logging.disable(logging.CRITICAL)
21
22     def setUp(self):
23         self.tiername = 'tiername'
24         self.testnames = 'testnames'
25         with mock.patch('functest.cli.commands.cli_tier.tb'):
26             self.cli_tier = cli_tier.CliTier()
27
28     @mock.patch('functest.cli.commands.cli_tier.click.echo')
29     def test_list(self, mock_click_echo):
30         with mock.patch.object(self.cli_tier.tiers, 'get_tiers',
31                                return_value=[]):
32             self.cli_tier.list()
33             mock_click_echo.assert_called_with("")
34
35     @mock.patch('functest.cli.commands.cli_tier.click.echo')
36     def test_show_default(self, mock_click_echo):
37         with mock.patch.object(self.cli_tier.tiers, 'get_tier',
38                                return_value=self.tiername):
39             self.cli_tier.show(self.tiername)
40             mock_click_echo.assert_called_with(self.tiername)
41
42     @mock.patch('functest.cli.commands.cli_tier.click.echo')
43     def test_show_missing_tier(self, mock_click_echo):
44         with mock.patch.object(self.cli_tier.tiers, 'get_tier',
45                                return_value=None), \
46             mock.patch.object(self.cli_tier.tiers, 'get_tier_names',
47                               return_value='tiernames'):
48             self.cli_tier.show(self.tiername)
49             mock_click_echo.assert_called_with("The tier with name '%s' does "
50                                                "not exist. Available tiers are"
51                                                ":\n  %s\n" % (self.tiername,
52                                                               'tiernames'))
53
54     @mock.patch('functest.cli.commands.cli_tier.click.echo')
55     def test_gettests_default(self, mock_click_echo):
56         mock_obj = mock.Mock()
57         attrs = {'get_test_names.return_value': self.testnames}
58         mock_obj.configure_mock(**attrs)
59
60         with mock.patch.object(self.cli_tier.tiers, 'get_tier',
61                                return_value=mock_obj):
62             self.cli_tier.gettests(self.tiername)
63             mock_click_echo.assert_called_with("Test cases in tier "
64                                                "'%s':\n %s\n" % (self.tiername,
65                                                                  self.testnames
66                                                                  ))
67
68     @mock.patch('functest.cli.commands.cli_tier.click.echo')
69     def test_gettests_missing_tier(self, mock_click_echo):
70         with mock.patch.object(self.cli_tier.tiers, 'get_tier',
71                                return_value=None), \
72             mock.patch.object(self.cli_tier.tiers, 'get_tier_names',
73                               return_value='tiernames'):
74             self.cli_tier.gettests(self.tiername)
75             mock_click_echo.assert_called_with("The tier with name '%s' does "
76                                                "not exist. Available tiers are"
77                                                ":\n  %s\n" % (self.tiername,
78                                                               'tiernames'))
79
80     @mock.patch('functest.cli.commands.cli_tier.os.path.isfile',
81                 return_value=False)
82     @mock.patch('functest.cli.commands.cli_tier.click.echo')
83     def test_run_missing_env_file(self, mock_click_echo, mock_os):
84         self.cli_tier.run(self.tiername)
85         mock_click_echo.assert_called_with("Functest environment is not ready."
86                                            " Run first 'functest env prepare'")
87
88     @mock.patch('functest.cli.commands.cli_tier.os.path.isfile',
89                 return_value=True)
90     @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command')
91     def test_run_default(self, mock_ft_utils, mock_os):
92         cmd = ("python %s/functest/ci/run_tests.py "
93                "%s -t %s" %
94                (CONST.__getattribute__('dir_repo_functest'),
95                 "-n -r ", self.tiername))
96         self.cli_tier.run(self.tiername, noclean=True, report=True)
97         mock_ft_utils.assert_called_with(cmd)
98
99     @mock.patch('functest.cli.commands.cli_tier.os.path.isfile',
100                 return_value=True)
101     @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command')
102     def test_run_report_missing_noclean(self, mock_ft_utils, mock_os):
103         cmd = ("python %s/functest/ci/run_tests.py "
104                "%s -t %s" %
105                (CONST.__getattribute__('dir_repo_functest'),
106                 "-r ", self.tiername))
107         self.cli_tier.run(self.tiername, noclean=False, report=True)
108         mock_ft_utils.assert_called_with(cmd)
109
110     @mock.patch('functest.cli.commands.cli_tier.os.path.isfile',
111                 return_value=True)
112     @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command')
113     def test_run_noclean_missing_report(self, mock_ft_utils, mock_os):
114         cmd = ("python %s/functest/ci/run_tests.py "
115                "%s -t %s" %
116                (CONST.__getattribute__('dir_repo_functest'),
117                 "-n ", self.tiername))
118         self.cli_tier.run(self.tiername, noclean=True, report=False)
119         mock_ft_utils.assert_called_with(cmd)
120
121     @mock.patch('functest.cli.commands.cli_tier.os.path.isfile',
122                 return_value=True)
123     @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command')
124     def test_run_missing_noclean_report(self, mock_ft_utils, mock_os):
125         cmd = ("python %s/functest/ci/run_tests.py "
126                "%s -t %s" %
127                (CONST.__getattribute__('dir_repo_functest'),
128                 "", self.tiername))
129         self.cli_tier.run(self.tiername, noclean=False, report=False)
130         mock_ft_utils.assert_called_with(cmd)
131
132
133 if __name__ == "__main__":
134     unittest.main(verbosity=2)