def test_formjson_with_metric_override(self): expected_json = tuple(([{'dataType': 'INTEGER', 'name': 'id_int'}, {'dataType': 'STRING', 'name': 'id_str'}, {'dataType': 'STRING', 'name': 'first_name '}, {'dataType': 'STRING', 'name': 'last_name'}, {'dataType': 'INTEGER', 'name': 'age'}, {'dataType': 'DOUBLE', 'name': 'weight'}, {'dataType': 'STRING', 'name': 'state'}, {'dataType': 'INTEGER', 'name': 'salary'}], [{'attributeForms': [{'category': 'ID', 'expressions': [{'formula': 'TEST.first_name '}]}], 'name': 'first_name '}, {'attributeForms': [{'category': 'ID', 'expressions': [{'formula': 'TEST.last_name'}]}], 'name': 'last_name'}, {'attributeForms': [{'category': 'ID', 'expressions': [{'formula': 'TEST.state'}]}], 'name': 'state'}], [{'dataType': 'number', 'expressions': [{'formula': 'TEST.id_int'}], 'name': 'id_int'}, {'dataType': 'number', 'expressions': [{'formula': 'TEST.id_str'}], 'name': 'id_str'}, {'dataType': 'number', 'expressions': [{'formula': 'TEST.age'}], 'name': 'age'}, {'dataType': 'number', 'expressions': [{'formula': 'TEST.weight'}], 'name': 'weight'}, {'dataType': 'number', 'expressions': [{'formula': 'TEST.salary'}], 'name': 'salary'}])) created_json = formjson(df=make_df(), table_name='TEST', as_metrics=['id_str']) self.assertEquals(created_json, expected_json)
def test_metric_list(self): column_headers, attribute_list, metric_list = formjson( df=make_df(), table_name='TEST') testcase = [{ 'name': 'id_int', 'dataType': 'number', 'expressions': [{ 'formula': 'TEST.id_int' }] }, { 'name': 'age', 'dataType': 'number', 'expressions': [{ 'formula': 'TEST.age' }] }, { 'name': 'weight', 'dataType': 'number', 'expressions': [{ 'formula': 'TEST.weight' }] }, { 'name': 'salary', 'dataType': 'number', 'expressions': [{ 'formula': 'TEST.salary' }] }] self.assertListEqual(metric_list, testcase)
def test_column_headers(self): column_headers, attribute_list, metric_list = formjson( df=make_df(), table_name='TEST') testcase = [{ 'name': 'id_int', 'dataType': 'INTEGER' }, { 'name': 'id_str', 'dataType': 'STRING' }, { 'name': 'first_name', 'dataType': 'STRING' }, { 'name': 'last_name', 'dataType': 'STRING' }, { 'name': 'age', 'dataType': 'INTEGER' }, { 'name': 'weight', 'dataType': 'DOUBLE' }, { 'name': 'state', 'dataType': 'STRING' }, { 'name': 'salary', 'dataType': 'INTEGER' }] self.assertListEqual(column_headers, testcase)
def test_formjson_with_metric_override(self): # in this test, the element 'id_str' from the data frame needs to be converted to a metric in the data model. # to accomplish this, simply check that id_str is present in the model json when it is specified as the override column_headers, attribute_list, metric_list = formjson( df=make_df(), table_name='TEST', as_metrics=['id_str']) # check that id_str is in metric list metrics = [i['name'] for i in metric_list] self.assertIn('id_str', metrics)
def test_formjson_with_64_bit_metrics(self): # create df and change types as needed df = make_df() df.weight = df.weight.astype('float64') df.id_int = df.id_int.astype('int64') df.age = df.age.astype('int64') df.salary = df.salary.astype('int64') # generate json string model from the test dataframe column_headers, attribute_list, metric_list = formjson( df=df, table_name='TEST') for col in column_headers: if col['name'] == 'weight': self.assertEqual(col['dataType'], 'DOUBLE') if col['name'] in ['id_int', 'age', 'salary']: self.assertEqual(col['dataType'], 'INTEGER')
def test_attribute_list(self): column_headers, attribute_list, metric_list = formjson( df=make_df(), table_name='TEST') testcase = [{ 'name': 'id_str', 'attributeForms': [{ 'category': 'ID', 'expressions': [{ 'formula': 'TEST.id_str' }] }] }, { 'name': 'first_name', 'attributeForms': [{ 'category': 'ID', 'expressions': [{ 'formula': 'TEST.first_name' }] }] }, { 'name': 'last_name', 'attributeForms': [{ 'category': 'ID', 'expressions': [{ 'formula': 'TEST.last_name' }] }] }, { 'name': 'state', 'attributeForms': [{ 'category': 'ID', 'expressions': [{ 'formula': 'TEST.state' }] }] }] self.assertListEqual(attribute_list, testcase)