source: qesdi/graphplotter/trunk/graphplotter/tests/unit/test_df_config_reader.py @ 6313

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/qesdi/graphplotter/trunk/graphplotter/tests/unit/test_df_config_reader.py@6313
Revision 6313, 2.7 KB checked in by pnorton, 10 years ago (diff)

First attempt at getting the buildplot action to work.

Line 
1'''
2Created on 14 Jan 2010
3
4@author: pnorton
5'''
6
7import graphplotter.lib.df_config_reader as df_config_reader
8from graphplotter.lib.df_config_reader import DFConfigReader
9
10from mock import Mock, patch, patch_object
11from pprint import pprint
12import ConfigParser
13
14class TestDFConfigReader(object):
15   
16    def setUp(self):
17        self.oldConfig = df_config_reader.config
18        self.newConfig = {'df_config_dir':'/some/path/to/config/dir'} 
19        df_config_reader.config = self.newConfig
20       
21        self.oldCP = df_config_reader.SafeConfigParser
22       
23    def tearDown(self):
24        df_config_reader.config = self.oldConfig
25   
26   
27    @patch('os.path.exists')
28    def test_001_readsConfigFile(self, mockOsPath):
29       
30        #bypass the test to make sure the config file exists
31        mockOsPath.return_value = True
32       
33       
34        reader = DFConfigReader()
35        reader.cp = Mock(spec=ConfigParser.SafeConfigParser)
36       
37        self.config_data = {
38            'DataFile':{'path':'/path/to/data/file.nc'},
39            'AxisLookups':{'param1':'one', 'param2':'two',}
40            }
41       
42        def conf_get(section,option):
43            return self.config_data[section][option] 
44       
45        def conf_opts(section):
46            return self.config_data[section].keys()
47       
48       
49        reader.cp.has_section.return_value = True
50        reader.cp.has_option.return_value = True
51        reader.cp.get.side_effect = conf_get
52        reader.cp.options.side_effect = conf_opts
53       
54        config = reader.getConfig('co2')
55       
56        assert config['name'] == 'co2'
57        assert config['path'] == self.config_data['DataFile']['path']
58        assert config['axisLookup'] == self.config_data['AxisLookups']
59       
60        pprint(config)
61   
62    @patch('os.path.isdir')
63    @patch('os.listdir')
64    def test_002_getDataFileList(self, mockListDir, mockIsDir):
65
66        # say that no files are directories appart from the 'a_directory.ini' file
67        def isDir(path):
68            if path == self.newConfig['df_config_dir'] + '/a_directory.ini':
69                return True
70            return False
71       
72        mockIsDir.side_effect = isDir
73       
74        configFiles = ['co2', 'temp', 'sea_level']
75        allFiles = [x + '.ini' for x in configFiles] + ['.hiddenFile', 'a_directory.ini']
76       
77        mockListDir.return_value = allFiles
78       
79        reader = DFConfigReader()
80       
81        dfList = reader.getDataFileList()
82       
83        assert dfList == configFiles, "Data files found (%s) didn't match expected (%s)" % (dfList, configFiles)
84       
85        assert mockListDir.called
86        assert mockListDir.call_args == ((self.newConfig['df_config_dir'],),{}) 
87       
88       
89   
Note: See TracBrowser for help on using the repository browser.