Coverage for /home/runner/work/pycax/pycax/pycax/tables/test_tables.py: 100%

63 statements  

« prev     ^ index     » next       coverage.py v7.4.0, created at 2024-01-26 00:27 +0000

1"""Tests for tables module methods""" 

2import requests 

3import json 

4import unittest 

5 

6from pycax import tables 

7from pycax import hli 

8 

9def test_tables_tableid(): 

10 """ 

11 tables.tableid - test that only one value returned 

12 """ 

13 for val in hli.HLI_SHORT: 

14 res = tables.tableid(hli.return_tablename(val, "base")) 

15 assert "ndarray" == res.__class__.__name__ 

16 assert 1 == len(res) 

17 assert str == res[0].__class__ 

18 

19class MyTestCase(unittest.TestCase): 

20 def test_tables_tableid_exception(self): 

21 self.assertRaises(ValueError, tables.tableid, "badname") 

22 

23 def test_tables_get_exception(self): 

24 self.assertRaises(TypeError, tables.get, "NOSA", **{'fargs': 'a'}) 

25 

26 

27def test_tables_get(): 

28 """ 

29 tables.get - basic test for data, check type, size and other methods 

30 """ 

31 query = tables.get("NOSA", qargs={'limit': 2}) 

32 assert "TablesResponse" == query.__class__.__name__ 

33 assert not query.data 

34 assert str == query.api_url.__class__ 

35 assert "NOSA" == query.tablename 

36 assert str == query.tableid.__class__ 

37 query.execute() 

38 assert dict == query.data.__class__ 

39 assert 6 == len(query.data) 

40 assert dict == query.data["records"][0].__class__ 

41 assert int == query.data["records"][0]["popid"].__class__ 

42 assert 2 == len(query.data["records"]) 

43 assert query.to_pandas().__class__.__name__ == "DataFrame" 

44 

45def test_dict_to_json(): 

46 """ 

47 tables.dict_to_json - basic test for structure 

48 """ 

49 res = tables.dict_to_json({'popid': '7'}) 

50 assert "str" == res.__class__.__name__ 

51 dictlist = json.loads(res) 

52 assert "list" == dictlist.__class__.__name__ 

53 assert "dict" == dictlist[0].__class__.__name__ 

54 assert 3 == len(dictlist[0]) 

55 dictkeys = [key for key in dictlist[0]] 

56 dictvals = [dictlist[0][key] for key in dictlist[0]] 

57 assert dictkeys == ['field', 'value', 'type'] 

58 assert dictvals == ['popid', '7', 'string'] 

59 res = tables.dict_to_json({'popid': [7, 8]}) 

60 dictlist = json.loads(res) 

61 dictvals = [dictlist[0][key] for key in dictlist[0]] 

62 assert "list" == dictvals[2] 

63 res = tables.dict_to_json({'popid': [7, 8], 'species': 'Chinook, salmon'}) 

64 dictlist = json.loads(res) 

65 assert 2 == len(dictlist) 

66 

67def test_tables_getdf(): 

68 """ 

69 tables.getdf - test that data frame returned 

70 """ 

71 df = tables.getdf("NOSA", qargs={'limit': 1}) 

72 assert "DataFrame" == df.__class__.__name__ 

73 assert 1 == df.shape[0] 

74 id = df['popid'][0] 

75 df = hli.getdf("NOSA", qargs={'limit': 1}, fargs={'popid':id}) 

76 assert 1 == df.shape[0] 

77 assert id == df['popid'][0] 

78 df = hli.getdf("NOSA", tabletype = "base", qargs={'limit': 1}) 

79 assert "DataFrame" == df.__class__.__name__ 

80 assert 1 == df.shape[0] 

81 id = df['popid'][0] 

82 df = hli.getdf("NOSA", qargs={'limit': 1}, fargs={'popid':id}) 

83 assert 1 == df.shape[0] 

84 assert id == df['popid'][0]