示例#1
0
class TestDownload(TestCase):

    @patch('getgist.__main__.Gist.curl')
    @patch('getgist.__main__.Gist.query_api')
    @patch('getgist.__main__.Gist.authenticated')
    def setUp(self, authenticated, query_api, curl):
        authenticated.return_value = False
        query_api.return_value = config['gists']
        curl.return_value = config['content']
        self.gist = Gist(config['user'], config['file'])

    def tearDown(self):
        for name in os.listdir(self.gist.local_dir):
            if search(r'^({})(\.bkp(.\d)?)?$'.format(config['file']), name):
                os.remove(os.path.join(self.gist.local_dir, name))

    @patch('getgist.__main__.Gist.ask')
    def test_local_dir(self, mocked_ask):
        mocked_ask.return_value = 'y'
        self.assertTrue(os.path.exists(self.gist.local_dir))
        self.assertTrue(os.path.isdir(self.gist.local_dir))

    @patch('getgist.__main__.Gist.ask')
    @patch('getgist.__main__.Gist.curl')
    def test_download(self, curl, ask):
        ask.return_value = 'y'
        curl.return_value = config['content']
        self.gist.save()
        self.assertTrue(os.path.exists(self.gist.local_path))
        self.assertEqual(open(self.gist.local_path).read(), config['content'])

    @patch('getgist.__main__.Gist.ask')
    @patch('getgist.__main__.Gist.curl')
    def test_backup(self, curl,  ask):

        # mock input value
        ask.return_value = 'n'
        curl.return_value = config['content']

        # backup filenames
        backup1 = '{}.bkp'.format(self.gist.local_path)
        backup2 = '{}.bkp1'.format(self.gist.local_path)
        backup3 = '{}.bkp2'.format(self.gist.local_path)

        # 1st download
        self.gist.save()
        self.assertTrue(os.path.exists(self.gist.local_path))
        self.assertEqual(config['content'], open(self.gist.local_path).read())

        # 2nd download
        self.gist.save()
        self.assertTrue(os.path.exists(backup1))
        self.assertEqual(config['content'], open(backup1).read())

        # 3rd download
        self.gist.save()
        self.assertTrue(os.path.exists(backup2))
        self.assertEqual(config['content'], open(backup2).read())

        # 4th download
        self.gist.save()
        self.assertTrue(os.path.exists(backup3))
        self.assertEqual(config['content'], open(backup3).read())