MCPcopy
hub / github.com/spaceandtimefdn/SxT-Python-SDK / test_inserts_deletes_updates

Function test_inserts_deletes_updates

tests/test_sxtresource.py:62–161  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

60
61
62def 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)

Callers

nothing calls this directly

Calls 11

authenticateMethod · 0.95
deleteMethod · 0.95
SpaceAndTimeClass · 0.90
SXTTableClass · 0.90
add_biscuitMethod · 0.80
createMethod · 0.80
selectMethod · 0.80
list_of_dicts_batchMethod · 0.80
dropMethod · 0.80
with_list_of_dictsMethod · 0.45
with_sqltextMethod · 0.45

Tested by

no test coverage detected