예제 #1
0
 def setUpClass(cls):
     httpretty.enable()
     database = {'database': DatabaseFactory.build(database_code='NSE')}
     httpretty.register_uri(httpretty.GET,
                            re.compile(
                                'https://www.quandl.com/api/v3/databases/*'),
                            body=json.dumps(database))
     cls.db_instance = Database(Database.get_code_from_meta(
         database['database']), database['database'])
    def setUp(self):
        httpretty.enable()
        httpretty.register_uri(
            httpretty.GET,
            re.compile('https://www.quandl.com/api/v3/databases/*'),
            adding_headers={
                'Location': 'https://www.blah.com/download/db.zip'
            },
            body='{}',
            status=302)
        httpretty.register_uri(httpretty.GET,
                               re.compile('https://www.blah.com/'),
                               body='{}')

        database = {'database': DatabaseFactory.build(database_code='NSE')}
        self.database = Database(database['database']['database_code'],
                                 database['database'])
        ApiConfig.api_key = 'api_token'
        ApiConfig.api_version = '2015-04-09'
예제 #3
0
    def setUp(self):
        httpretty.enable()
        httpretty.register_uri(httpretty.GET,
                               re.compile(
                                   'https://www.quandl.com/api/v3/databases/*'),
                               adding_headers={
                                   'Location': 'https://www.blah.com/download/db.zip'
                               },
                               body='{}', status=302)
        httpretty.register_uri(httpretty.GET,
                               re.compile('https://www.blah.com/'), body='{}')

        database = {'database': DatabaseFactory.build(database_code='NSE')}
        self.database = Database(database['database']['database_code'], database['database'])
        ApiConfig.api_key = 'api_token'
        ApiConfig.api_version = '2015-04-09'
예제 #4
0
 def test_databases_has_meta(self):
     results = Database.all()
     self.assertIsNotNone(results.meta)
예제 #5
0
 def test_databases_returns_database_objects(self):
     results = Database.all()
     self.assertEqual(len(results), 10)
     for result in results:
         self.assertIsInstance(result, Database)
예제 #6
0
 def test_databases_calls_connection(self, mock):
     Database.all()
     expected = call('get', 'databases', params={})
     self.assertEqual(mock.call_args, expected)
예제 #7
0
 def test_database_returns_database_object(self):
     database = Database('NSE')
     self.assertIsInstance(database, Database)
     self.assertEqual(database.database_code, 'NSE')
예제 #8
0
 def test_database_calls_connection(self, mock):
     database = Database('NSE')
     database.data_fields()
     expected = call('get', 'databases/NSE', params={})
     self.assertEqual(mock.call_args, expected)
예제 #9
0
 def setUp(self):
     database = {'database': DatabaseFactory.build(database_code='NSE')}
     self.database = Database(database['database']['database_code'], database['database'])
     ApiConfig.api_key = 'api_token'
     ApiConfig.api_version = '2015-04-09'
예제 #10
0
class BulkDownloadDatabaseTest(unittest2.TestCase):

    @classmethod
    def setUpClass(cls):
        httpretty.enable()
        httpretty.register_uri(httpretty.GET,
                               re.compile(
                                   'https://www.quandl.com/api/v3/databases/*'),
                               adding_headers={
                                   'Location': 'https://www.blah.com/download/db.zip'
                               },
                               body='{}', status=302)
        httpretty.register_uri(httpretty.GET,
                               re.compile('https://www.blah.com/'), body='{}')

    @classmethod
    def tearDownClass(cls):
        httpretty.disable()
        httpretty.reset()

    def setUp(self):
        database = {'database': DatabaseFactory.build(database_code='NSE')}
        self.database = Database(database['database']['database_code'], database['database'])
        ApiConfig.api_key = 'api_token'
        ApiConfig.api_version = '2015-04-09'

    def test_get_bulk_downnload_url_with_download_type(self):
        url = self.database.bulk_download_url(params={'download_type': 'partial'})
        parsed_url = urlparse(url)
        self.assertEqual(parsed_url.scheme, 'https')
        self.assertEqual(parsed_url.netloc, 'www.quandl.com')
        self.assertEqual(parsed_url.path, '/api/v3/databases/NSE/data')
        self.assertDictEqual(parse_qs(parsed_url.query), {
                             'download_type': ['partial'],
                             'api_key': ['api_token'], 'api_version': ['2015-04-09']})

    def test_get_bulk_download_url_without_download_type(self):
        url = self.database.bulk_download_url()
        parsed_url = urlparse(url)
        self.assertDictEqual(parse_qs(parsed_url.query), {
                             'api_key': ['api_token'], 'api_version': ['2015-04-09']})

    def test_bulk_download_to_fileaccepts_download_type(self):
        m = mock_open()
        with patch.object(Connection, 'request') as mock_method:
            mock_method.return_value.url = 'https://www.blah.com/download/db.zip'
            with patch('quandl.model.database.open', m, create=True):
                self.database.bulk_download_to_file(
                    '.', params={'download_type': 'partial'})

        expected = call('get',
                        'databases/NSE/data',
                        params={'download_type': 'partial'},
                        stream=True)
        self.assertEqual(mock_method.call_args, expected)

    def test_bulk_download_to_file_writes_to_file(self):
        m = mock_open()
        with patch('quandl.model.database.open', m, create=True):
            self.database.bulk_download_to_file('.')

        m.assert_called_once_with(six.u('./db.zip'), 'wb')
        m().write.assert_called_once_with(six.b('{}'))

    def test_bulk_download_raises_exception_when_no_path(self):
        self.assertRaises(
            QuandlError, lambda: self.database.bulk_download_to_file(None))

    def test_bulk_download_raises_exception_when_error_response(self):
        httpretty.register_uri(httpretty.GET,
                               re.compile(
                                   'https://www.quandl.com/api/v3/databases/*'),
                               body=json.dumps(
                                   {'quandl_error':
                                    {'code': 'QEMx01', 'message': 'something went wrong'}}),
                               status=500)
        self.assertRaises(
            InternalServerError, lambda: self.database.bulk_download_to_file('.'))
예제 #11
0
 def test_databases_has_more(self):
     results = Database.all()
     self.assertTrue(results.has_more_results())
예제 #12
0
 def test_databases_returns_expected_ids(self):
     results = Database.all()
     self.assertEqual(len(results), 10)
     self.assertItemsEqual([x.id for x in results],
                           [x['id'] for x in self.expected_databases['databases']])