def testFetchWithIOError(self, _, mock_open): fh = mock.MagicMock() mock_open.return_value = fh fh.read.side_effect = IOError('error') elf = experiments.ExperimentListFetcher('file') self.assertRaises(experiments.ExperimentsError, elf._Fetch) mock_open.assert_called_with('file', 'rb') self.assertIsNone(elf.data)
def testParseWithYamlError(self, _, mock_yaml_sl): mock_yaml_sl.side_effect = experiments.yaml.YAMLError elf = experiments.ExperimentListFetcher('file') elf.data = type('obj', (object, ), dict(data='data')) elf._Parse() mock_yaml_sl.assert_called_with('data') self.assertIsNone(elf.data.parsed) self.assertFalse(elf.data.valid)
def testFetch(self, mock_open): fh = mock.MagicMock() mock_open.return_value = fh fh.read.return_value = 'data' elf = experiments.ExperimentListFetcher('file') elf._Fetch() mock_open.assert_called_with('file', 'rb') self.assertEqual('data', elf.data.data)
def testParseWithMissingExperimentsField(self, _, mock_yaml_sl): mock_yaml_sl.return_value = {'serial': 42} elf = experiments.ExperimentListFetcher('file') elf.data = type('obj', (object, ), dict(data='data')) elf._Parse() mock_yaml_sl.assert_called_with('data') self.assertEqual({'serial': 42}, elf.data.parsed) self.assertTrue(elf.data.valid) self.assertEqual({}, elf.data.experiments)
def testParse(self, _, mock_yaml_sl): exp_dict = {'serial': 42, 'experiments': 'experiments'} mock_yaml_sl.return_value = exp_dict elf = experiments.ExperimentListFetcher('file') elf.data = type('obj', (object, ), dict(data='data')) elf._Parse() mock_yaml_sl.assert_called_with('data') self.assertDictEqual(exp_dict, elf.data.parsed) self.assertTrue(elf.data.valid) self.assertEqual('experiments', elf.data.experiments)
def testGetDataWithInvalidData(self, mock_parse, mock_fetch, _): def FetchSE(): elf.data = type('obj', (object, ), { 'valid': False, 'parsed': None }) mock_fetch.side_effect = FetchSE def ParseSE(): elf.data.valid = False mock_parse.side_effect = ParseSE elf = experiments.ExperimentListFetcher('file') self.assertRaises(experiments.InvalidData, elf.GetData) self.assertFalse(elf.data.valid)
def testGetData(self, mock_parse, mock_fetch): def FetchSE(): elf.data = type('obj', (object, ), { 'valid': False, 'parsed': None, 'data': 'data' }) mock_fetch.side_effect = FetchSE def ParseSE(): elf.data.valid = True elf.data.parsed = 'parsed' elf.data.serial = 1 mock_parse.side_effect = ParseSE elf = experiments.ExperimentListFetcher('file') elf.GetData() self.assertTrue(elf.data.valid)
def testGetDataRaisesErrorWithNoYaml(self, mock_fetch, _): mock_fetch.side_effect = experiments.ExperimentsError elf = experiments.ExperimentListFetcher('file') self.assertRaises(experiments.InvalidData, elf.GetData) self.assertIsNone(elf.data)
def testParseWithNoData(self, mock_logging): elf = experiments.ExperimentListFetcher('file') # elf.data = type('obj', (object,), dict(data='data')) elf._Parse() self.assertTrue(mock_logging.error.called) self.assertIsNone(elf.data)