()
| 60 | |
| 61 | |
| 62 | def test_inserts_deletes_updates(): |
| 63 | sxt = SpaceAndTime() |
| 64 | sxt.authenticate() |
| 65 | |
| 66 | tbl = SXTTable(name='SXTTemp.Test_DML1', from_file='./.env', SpaceAndTime_parent=sxt) |
| 67 | tbl.create_ddl = """ |
| 68 | CREATE TABLE {table_name} |
| 69 | ( MyID int |
| 70 | , MyName varchar |
| 71 | , MyNumber int |
| 72 | , Primary Key (MyID) |
| 73 | ) {with_statement} |
| 74 | """ |
| 75 | tbl.add_biscuit('admin',sxt.GRANT.ALL) |
| 76 | if not tbl.exists: |
| 77 | tbl.create() |
| 78 | else: |
| 79 | tbl.delete(where='1=1') |
| 80 | |
| 81 | data_in = [ {'MyID':1, 'MyName':'Abby', 'MyNumber':6} |
| 82 | ,{'MyID':2, 'MyName':'Bob', 'MyNumber':6} |
| 83 | ,{'MyID':3, 'MyName':'Chuck', 'MyNumber':6} |
| 84 | ,{'MyID':4, 'MyName':'Daria', 'MyNumber':6} |
| 85 | ] |
| 86 | tbl.insert.with_list_of_dicts(data_in) |
| 87 | success, data = tbl.select() |
| 88 | assert success |
| 89 | assert [r['MYNUMBER'] for r in data] == [6, 6, 6, 6] |
| 90 | pass |
| 91 | |
| 92 | tbl.update.with_sqltext('update {table_name} set MyNumber = 7') |
| 93 | success, data = tbl.select() |
| 94 | assert success |
| 95 | assert [r['MYNUMBER'] for r in data] == [7, 7, 7, 7] |
| 96 | |
| 97 | update_data = [{'MyID':r['MYID'], 'MyNumber':r['MYID']} for r in data] |
| 98 | tbl.update.with_list_of_dicts('MyID',update_data) |
| 99 | success, data = tbl.select() |
| 100 | assert success |
| 101 | assert sorted([r['MYNUMBER'] for r in data]) == [1, 2, 3, 4] |
| 102 | |
| 103 | update_data = [{'MyID':r['MYID'], 'MyNumber':r['MYID']+10} for r in data] |
| 104 | tbl.update.with_list_of_dicts('MyID', update_data) |
| 105 | success, data = tbl.select() |
| 106 | assert success |
| 107 | assert sorted([r['MYNUMBER'] for r in data]) == [11, 12, 13, 14] |
| 108 | |
| 109 | |
| 110 | # error states: |
| 111 | update_data = [{'MyNumber':r['MYID']+20} for r in data] # no PK |
| 112 | success, result = tbl.update.with_list_of_dicts('MyID', update_data) |
| 113 | assert not success |
| 114 | assert result['rows'] == 4 |
| 115 | assert result['errors'] == 4 |
| 116 | assert result['successes'] == 0 |
| 117 | |
| 118 | update_data = [{'MyID':r['MYID']} for r in data] # only PK |
| 119 | success, result = tbl.update.with_list_of_dicts('MyID', update_data) |
nothing calls this directly
no test coverage detected