示例#1
0
文件: main.py 项目: rknuus/caspr
def main(args, stdout, stderr):
    ''' Parses the arguments and prepares each cache. '''
    arguments = _parse_args(args, _load_defaults())
    try:
        _save_defaults(arguments)
        caches = Caches(site=GeocachingSite(user=arguments.user, password=arguments.password),
                        parser=PageParser(table_parser=TableParser(),
                                          description_parser=DescriptionParser()),
                        factory=WorksheetFactory(keyfile=arguments.keyfile))
        # TODO(KNR): can I prevent argparse from returning a list of lists?
        for codes in arguments.cache_codes:
            caches.prepare(codes=codes)
    except Exception:
        traceback.print_exc()
示例#2
0
    def test_prepares_a_cache(self, publish_mock, factory_mock, parser_mock, site_mock):
        code = 'ABCDEF'
        name = 'foo'
        site_mock.fetch = MagicMock(return_value='<html></html>')
        stages_mock = MagicMock()
        parser_mock.parse = MagicMock(return_value={'name': name, 'stages': stages_mock})

        caches = Caches(site=site_mock, parser=parser_mock, factory=factory_mock)
        caches.prepare([code])

        self.assertTrue(site_mock.fetch.called)
        self.assertEqual(site_mock.mock_calls, [call.fetch(code=code)])

        self.assertTrue(parser_mock.parse.called)
        self.assertIn(call.parse(page=site_mock.fetch.return_value), parser_mock.mock_calls)

        self.assertTrue(publish_mock.called)
        self.assertEqual(publish_mock.mock_calls, [call.publish_mock(name=name,
                                                                     stages=stages_mock,
                                                                     factory=factory_mock)])