def setUpClass(cls): httpretty.enable() dataset = {'dataset': DatasetFactory.build( database_code='NSE', dataset_code='OIL')} httpretty.register_uri(httpretty.GET, re.compile( 'https://www.quandl.com/api/v3/datasets/*'), body=json.dumps(dataset)) dataset_code = Dataset.get_code_from_meta(dataset['dataset']) cls.dataset_instance = Dataset(dataset_code, dataset['dataset'])
def test_meta_attributes_can_be_accessed(self): results = Dataset.all() self.assertEqual(results.meta['current_page'], 1) self.assertEqual(results.current_page, 1)
def test_values_exist(self): results = Dataset.all() self.assertIsInstance(results.values, list) self.assertIsInstance(results.values[0], Dataset)
def setupDatasetsTest(unit_test, httpretty): httpretty.reset() httpretty.enable() unit_test.dataset_data = {'dataset_data': DatasetDataFactory.build()} # mock out calls with column_index query param # NOTE: this will always return 'column.1' as the column name single_col_data = DatasetDataFactory.build( column_names=[six.u('Date'), six.u('column.1')], data=[['2015-07-11', 444.3], ['2015-07-13', 433.3], ['2015-07-14', 437.5], ['2015-07-15', 440.0]]) unit_test.single_dataset_data = {'dataset_data': single_col_data} dataset_data = DatasetDataFactory.build() d_values = dataset_data.pop('data') d_metadata = dataset_data unit_test.data_list_obj = DataList(Data, d_values, d_metadata) unit_test.nse_oil = { 'dataset': DatasetFactory.build(database_code='NSE', dataset_code='OIL') } unit_test.goog_aapl = { 'dataset': DatasetFactory.build(database_code='GOOG', dataset_code='NASDAQ_AAPL') } unit_test.goog_msft = { 'dataset': DatasetFactory.build(database_code='GOOG', dataset_code='NASDAQ_MSFT', newest_available_date='2015-07-30', oldest_available_date='2013-01-01') } unit_test.single_col = { 'dataset': DatasetFactory.build(database_code='SINGLE', dataset_code='COLUMN', newest_available_date='2015-07-30', oldest_available_date='2013-01-01') } unit_test.oil_obj = Dataset('NSE/OIL', unit_test.nse_oil['dataset']) unit_test.aapl_obj = Dataset('GOOG/AAPL', unit_test.goog_aapl['dataset']) unit_test.goog_obj = Dataset('GOOG/MSFT', unit_test.goog_msft['dataset']) unit_test.single_col_obj = Dataset('SINGLE/COLUMN', unit_test.single_col['dataset']) httpretty.register_uri( httpretty.GET, re.compile('https://www.quandl.com/api/v3/datasets/.*/metadata'), responses=[ httpretty.Response(body=json.dumps(dataset)) for dataset in [unit_test.nse_oil, unit_test.goog_aapl, unit_test.goog_msft] ]) # mock our query param column_index request httpretty.register_uri( httpretty.GET, "https://www.quandl.com/api/v3/datasets/SINGLE/COLUMN/data", body=json.dumps(unit_test.single_dataset_data)) httpretty.register_uri( httpretty.GET, "https://www.quandl.com/api/v3/datasets/GOOG/NASDAQ_AAPL/data", body=json.dumps(unit_test.dataset_data)) httpretty.register_uri( httpretty.GET, re.compile('https://www.quandl.com/api/v3/datasets/NSE/OIL/data'), body=json.dumps(unit_test.dataset_data)) httpretty.register_uri( httpretty.GET, re.compile( 'https://www.quandl.com/api/v3/datasets/GOOG/NASDAQ_MSFT/data'), body=json.dumps(unit_test.dataset_data))
def test_datasets_has_more_results(self): results = Dataset.all() self.assertFalse(results.has_more_results())
def test_datasets_return_dataset_objects(self): results = Dataset.all() self.assertEqual(len(results), 3) for result in results: self.assertIsInstance(result, Dataset)
def test_dataset_calls_connection(self, mock): d = Dataset('NSE/OIL') d.data_fields() expected = call('get', 'datasets/NSE/OIL/metadata', params={}) self.assertEqual(mock.call_args, expected)
def test_dataset_attributes_are_datetime_objects(self): dataset = Dataset('NSE/OIL') self.assertIsInstance(dataset.refreshed_at, datetime.datetime) self.assertIsInstance(dataset.newest_available_date, datetime.date)
def test_dataset_returns_dataset_object(self): dataset = Dataset('NSE/OIL') self.assertIsInstance(dataset, Dataset) self.assertEqual(dataset.dataset_code, 'OIL')
def test_to_list_returns_list(self): results = Dataset.all() data = results.to_list() self.assertIsInstance(data, list) self.assertIsInstance(data[0], list)
def test_dataset_column_names_match_expected(self): dataset = Dataset('NSE/OIL') six.assertCountEqual(self, dataset.column_names, ['Date', 'column.1', 'column.2', 'column.3'])
def test_datasets_calls_connection(self, mock): Dataset.all() expected = call('get', 'datasets', params={}) self.assertEqual(mock.call_args, expected)
def test_dataset_column_names_match_expected(self): dataset = Dataset('NSE/OIL') self.assertItemsEqual(dataset.column_names, ['Date', 'column.1', 'column.2', 'column.3'])