def test_data_calls_connection_get(self, mock): datatable = Datatable('ZACKS/FC') Data.page(datatable, params={'ticker': ['AAPL', 'MSFT'], 'per_end_date': {'gte': '2015-01-01'}, 'qopts': {'columns': ['ticker', 'per_end_date']}}) expected = call('get', 'datatables/ZACKS/FC', params={'ticker[]': ['AAPL', 'MSFT'], 'per_end_date.gte': '2015-01-01', 'qopts.columns[]': ['ticker', 'per_end_date']}) self.assertEqual(mock.call_args, expected)
def test_data_calls_connection_post(self, mock): RequestType.USE_GET_REQUEST = False datatable = Datatable('ZACKS/FC') Data.page(datatable, params={'ticker': ['AAPL', 'MSFT'], 'per_end_date': {'gte': '2015-01-01'}, 'qopts': {'columns': ['ticker', 'per_end_date']}}) expected = call('post', 'datatables/ZACKS/FC', json={'ticker': ['AAPL', 'MSFT'], 'per_end_date.gte': '2015-01-01', 'qopts.columns': ['ticker', 'per_end_date']}) self.assertEqual(mock.call_args, expected)
def test_to_numpy_returns_numpy_object(self, request_method): if request_method == 'POST': RequestType.USE_GET_REQUEST = False datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) data = results.to_numpy() self.assertIsInstance(data, numpy.core.records.recarray)
def test_to_numpy_returns_numpy_object(self): results = Data.all(params={ 'database_code': 'NSE', 'dataset_code': 'OIL' }) data = results.to_numpy() self.assertIsInstance(data, numpy.core.records.recarray)
def test_pandas_dataframe_index_is_none(self, request_method): if request_method == 'POST': RequestType.USE_GET_REQUEST = False datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) df = results.to_pandas() self.assertEqual(df.index.name, 'None')
def test_data_to_list(self): list_data = Data.all( params={'database_code': 'NSE', 'dataset_code': 'OIL'}).to_list() self.assertItemsEqual(list_data[0], self.expected_list_values[0]) self.assertItemsEqual(list_data[1], self.expected_list_values[1]) self.assertItemsEqual(list_data[2], self.expected_list_values[2]) self.assertItemsEqual(list_data[3], self.expected_list_values[3])
def test_to_pandas_returns_pandas_dataframe_object(self, request_method): if request_method == 'POST': RequestType.USE_GET_REQUEST = False datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) df = results.to_pandas() self.assertIsInstance(df, pandas.core.frame.DataFrame)
def test_values_and_meta_exist(self, request_method): if request_method == 'POST': RequestType.USE_GET_REQUEST = False datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) self.assertIsNotNone(results.values) self.assertIsNotNone(results.meta)
def test_to_csv_returns_expected_csv(self): results = Data.all( params={'database_code': 'NSE', 'dataset_code': 'OIL'}) data = results.to_csv() expected = "Date,column.1,column.2,column.3\n2015-07-11,444.3,10,3\n" + \ "2015-07-13,433.3,4,3\n2015-07-14,437.5,3,3\n2015-07-15,440.0,2,3\n" self.assertEqual(data, expected)
def test_values_and_meta_exist(self): results = Data.all(params={ 'database_code': 'NSE', 'dataset_code': 'OIL' }) self.assertIsNotNone(results.values) self.assertIsNotNone(results.meta)
def test_column_names_match(self): results = Data.all(params={ 'database_code': 'NSE', 'dataset_code': 'OIL' }) six.assertCountEqual(self, results.column_names, ['Date', 'column.1', 'column.2', 'column.3'])
def test_raw_data_is_zip_of_column_names_and_data(self): results = Data.all( params={'database_code': 'NSE', 'dataset_code': 'OIL'}) self.assertItemsEqual(results[0].__get_raw_data__(), self.expected_list_values[0]) self.assertItemsEqual(results[1].__get_raw_data__(), self.expected_list_values[1]) self.assertItemsEqual(results[2].__get_raw_data__(), self.expected_list_values[2]) self.assertItemsEqual(results[3].__get_raw_data__(), self.expected_list_values[3])
def test_to_pandas_returns_pandas_dataframe_object(self): results = Data.all(params={ 'database_code': 'NSE', 'dataset_code': 'OIL' }) df = results.to_pandas() self.assertIsInstance(df, pandas.core.frame.DataFrame)
def test_pandas_dataframe_date_field_is_datetime(self): datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) df = results.to_pandas() self.assertIsInstance(df['per_end_date'][0], pandas.datetime) self.assertIsInstance(df['per_end_date'][1], pandas.datetime) self.assertIsInstance(df['per_end_date'][2], pandas.datetime) self.assertIsInstance(df['per_end_date'][3], pandas.datetime)
def test_exception_raised_if_column_and_data_row_mistmatch(self): dataset_data = { 'dataset_data': DatasetDataFactory.build(column_names=['blah'])} httpretty.register_uri(httpretty.GET, re.compile( 'https://www.quandl.com/api/v3/datasets*'), body=json.dumps(dataset_data)) self.assertRaises(InvalidDataError, lambda: Data.all())
def test_data_returned_are_data_objects(self): results = Data.all(params={ 'database_code': 'NSE', 'dataset_code': 'OIL' }) self.assertEqual(len(results), 4) for result in results: self.assertIsInstance(result, Data)
def test_pandas_dataframe_index_is_datetime(self): results = Data.all(params={ 'database_code': 'NSE', 'dataset_code': 'OIL' }) df = results.to_pandas() self.assertEqual(df.index.name, 'Date') self.assertIsInstance(df.index, pandas.DatetimeIndex)
def test_to_csv_returns_expected_csv(self): results = Data.all(params={ 'database_code': 'NSE', 'dataset_code': 'OIL' }) data = results.to_csv() expected = "Date,column.1,column.2,column.3\n2015-07-11,444.3,10,3\n" + \ "2015-07-13,433.3,4,3\n2015-07-14,437.5,3,3\n2015-07-15,440.0,2,3\n" self.assertEqual(data, expected)
def test_data_to_list(self): list_data = Data.all(params={ 'database_code': 'NSE', 'dataset_code': 'OIL' }).to_list() six.assertCountEqual(self, list_data[0], self.expected_list_values[0]) six.assertCountEqual(self, list_data[1], self.expected_list_values[1]) six.assertCountEqual(self, list_data[2], self.expected_list_values[2]) six.assertCountEqual(self, list_data[3], self.expected_list_values[3])
def test_exception_raised_if_column_and_data_row_mistmatch(self): dataset_data = { 'dataset_data': DatasetDataFactory.build(column_names=['blah']) } httpretty.register_uri( httpretty.GET, re.compile('https://www.quandl.com/api/v3/datasets*'), body=json.dumps(dataset_data)) self.assertRaises(InvalidDataError, lambda: Data.all())
def test_to_csv_returns_expected_csv(self): datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) data = results.to_csv() expected = "None,per_end_date,ticker,tot_oper_exp\n" + \ "0,2015-07-11,AAPL,456.9\n" + \ "1,2015-07-13,433.3,\n" + \ "2,2015-07-14,AAPL,419.1\n" + \ "3,2015-07-15,476.5,\n" self.assertEqual(data, expected)
def test_pandas_dataframe_date_field_is_datetime(self, request_method): if request_method == 'POST': RequestType.USE_GET_REQUEST = False datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) df = results.to_pandas() self.assertIsInstance(df['per_end_date'][0], pandas.datetime) self.assertIsInstance(df['per_end_date'][1], pandas.datetime) self.assertIsInstance(df['per_end_date'][2], pandas.datetime) self.assertIsInstance(df['per_end_date'][3], pandas.datetime)
def setUpClass(cls): cls.expected_column_names = [ six.u('Date'), six.u('column.1'), six.u('column.2'), six.u('column.3') ] cls.data_object = Data( ['2015-07-15', 440.0, 2, 3], meta={'column_names': cls.expected_column_names})
def test_data_calls_connection_get(self, mock): datatable = Datatable('ZACKS/FC') Data.page(datatable, params={ 'ticker': ['AAPL', 'MSFT'], 'per_end_date': { 'gte': '2015-01-01' }, 'qopts': { 'columns': ['ticker', 'per_end_date'] } }) expected = call('get', 'datatables/ZACKS/FC', params={ 'ticker[]': ['AAPL', 'MSFT'], 'per_end_date.gte': '2015-01-01', 'qopts.columns[]': ['ticker', 'per_end_date'] }) self.assertEqual(mock.call_args, expected)
def test_to_csv_returns_expected_csv(self, request_method): if request_method == 'POST': RequestType.USE_GET_REQUEST = False datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) data = results.to_csv() expected = "None,per_end_date,ticker,tot_oper_exp\n" + \ "0,2015-07-11,AAPL,456.9\n" + \ "1,2015-07-13,433.3,\n" + \ "2,2015-07-14,AAPL,419.1\n" + \ "3,2015-07-15,476.5,\n" self.assertEqual(data, expected)
def test_data_calls_connection_post(self, mock): RequestType.USE_GET_REQUEST = False datatable = Datatable('ZACKS/FC') Data.page(datatable, params={ 'ticker': ['AAPL', 'MSFT'], 'per_end_date': { 'gte': '2015-01-01' }, 'qopts': { 'columns': ['ticker', 'per_end_date'] } }) expected = call('post', 'datatables/ZACKS/FC', json={ 'ticker': ['AAPL', 'MSFT'], 'per_end_date.gte': '2015-01-01', 'qopts.columns': ['ticker', 'per_end_date'] }) self.assertEqual(mock.call_args, expected)
def test_raw_data_is_zip_of_column_names_and_data(self): results = Data.all(params={ 'database_code': 'NSE', 'dataset_code': 'OIL' }) six.assertCountEqual(self, results[0].__get_raw_data__(), self.expected_list_values[0]) six.assertCountEqual(self, results[1].__get_raw_data__(), self.expected_list_values[1]) six.assertCountEqual(self, results[2].__get_raw_data__(), self.expected_list_values[2]) six.assertCountEqual(self, results[3].__get_raw_data__(), self.expected_list_values[3])
def setUpClass(cls): cls.expected_column_names = [ six.u('per_end_date'), six.u('ticker'), six.u('tot_oper_exp') ] cls.expected_column_types = [ six.u('Date'), six.u('String'), six.u('String') ] cls.data_object = Data( ['2015-07-11', 'AAPL', 440.0], meta={ 'columns': cls.expected_column_names, 'column_types': cls.expected_column_types })
def test_values_and_meta_exist(self): datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) self.assertIsNotNone(results.values) self.assertIsNotNone(results.meta)
def test_to_numpy_returns_numpy_object(self): results = Data.all( params={'database_code': 'NSE', 'dataset_code': 'OIL'}) data = results.to_numpy() self.assertIsInstance(data, numpy.core.records.recarray)
def test_to_numpy_returns_numpy_object(self): datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) data = results.to_numpy() self.assertIsInstance(data, numpy.core.records.recarray)
def test_to_pandas_returns_pandas_dataframe_object(self): datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) df = results.to_pandas() self.assertIsInstance(df, pandas.core.frame.DataFrame)
def test_pandas_dataframe_index_is_none(self): datatable = Datatable('ZACKS/FC') results = Data.page(datatable, params={}) df = results.to_pandas() self.assertEqual(df.index.name, 'None')
def test_data_returned_are_data_objects(self): results = Data.all( params={'database_code': 'NSE', 'dataset_code': 'OIL'}) self.assertEqual(len(results), 4) for result in results: self.assertIsInstance(result, Data)
def test_data_calls_connection(self, mock): Data.all(params={'database_code': 'NSE', 'dataset_code': 'OIL'}) expected = call('get', 'datasets/NSE/OIL/data', params={}) self.assertEqual(mock.call_args, expected)
def test_values_and_meta_exist(self): results = Data.all( params={'database_code': 'NSE', 'dataset_code': 'OIL'}) self.assertIsNotNone(results.values) self.assertIsNotNone(results.meta)
def test_column_names_match(self): results = Data.all( params={'database_code': 'NSE', 'dataset_code': 'OIL'}) self.assertItemsEqual( results.column_names, ['Date', 'column.1', 'column.2', 'column.3'])
def test_to_pandas_returns_pandas_dataframe_object(self): results = Data.all( params={'database_code': 'NSE', 'dataset_code': 'OIL'}) df = results.to_pandas() self.assertIsInstance(df, pandas.core.frame.DataFrame)
def test_pandas_dataframe_index_is_datetime(self): results = Data.all( params={'database_code': 'NSE', 'dataset_code': 'OIL'}) df = results.to_pandas() self.assertEqual(df.index.name, 'Date') self.assertIsInstance(df.index, pandas.DatetimeIndex)