@@ -146,6 +146,69 @@ def test_keys(t, collection_name):
146
146
t .error (f'key_sort({ collection_name } , { filtered_keys } , { sort_expr } ), ({ q } ) Expected { k } (title "{ obj1 ["title" ]} ) got { keys [i ]} (title "{ obj2 ["title" ]} ")' )
147
147
148
148
149
+ #
150
+ # test_issue12() https://github.com/caltechlibrary/py_dataset/issues/12
151
+ # delete_frame() returns True but frame metadata still in memory.
152
+ #
153
+ def test_issue12 (t , c_name ):
154
+ src = '''[
155
+ {"id": "1", "c1": 1, "c2": 2, "c3": 3 },
156
+ {"id": "2", "c1": 2, "c2": 2, "c3": 3 },
157
+ {"id": "3", "c1": 3, "c2": 3, "c3": 3 },
158
+ {"id": "4", "c1": 1, "c2": 1, "c3": 1 },
159
+ {"id": "5", "c1": 6, "c2": 6, "c3": 6 }
160
+ ]'''
161
+ #dataset.verbose_on() # DEBUG
162
+ #dataset.use_strict_dotpath(True) # DEBUG
163
+ if dataset .status (c_name ) == False :
164
+ if not dataset .init (c_name ):
165
+ err = dataset .error_message ()
166
+ t .error (f'failed to create { c_name } ' )
167
+ return
168
+ objects = json .loads (src )
169
+ for obj in objects :
170
+ key = obj ['id' ]
171
+ if dataset .has_key (c_name , key ):
172
+ dataset .update (c_name , key , obj )
173
+ else :
174
+ dataset .create (c_name , key , obj )
175
+ f_names = dataset .frames (c_name )
176
+ for f_name in f_names :
177
+ ok = dataset .delete_frame (c_name , f_name )
178
+ if ok == False :
179
+ err = dataset .error_message ()
180
+ t .error (f'Failed to delete { f_name } from { c_name } -> "{ err } "' )
181
+ return
182
+ if dataset .has_frame (c_name , f_name ) == True :
183
+ t .error (f'Failed to delete frame { c_name } from { c_name } , frame still exists' )
184
+ return
185
+ f_name = 'issue12'
186
+ dot_paths = [ ".c1" , "c3" ]
187
+ labels = [ ".col1" , ".col3" ]
188
+ keys = dataset .keys (c_name )
189
+ if not dataset .frame_create (c_name , f_name , keys , dot_paths , labels ):
190
+ err = dataset .error_message ()
191
+ t .error (f'failed to create { f_name } from { c_name } , { err } ' )
192
+ if not dataset .has_frame (c_name , f_name ):
193
+ err = dataset .error_message ()
194
+ t .error (f'expected frame { f_name } to exists, { err } ' )
195
+ return
196
+ f_keys = dataset .frame_keys (c_name , f_name )
197
+ if len (f_keys ) == 0 :
198
+ err = dataset .error_message ()
199
+ t .error (f'expected keys in { f_name } , got zero, { err } ' )
200
+ return
201
+ f_objects = dataset .frame_objects (c_name , f_name )
202
+ if len (f_objects ) == 0 :
203
+ err = dataset .error_message ()
204
+ t .error (f'expected objects in { f_name } , got zero, { err } ' )
205
+ return
206
+ if not dataset .delete_frame (c_name , f_name ):
207
+ err = dataset .error_message ()
208
+ t .error (f'expected to delete { f_name } in { c_name } , { err } ' )
209
+
210
+
211
+
149
212
#
150
213
# test_issue32() make sure issue 32 stays fixed.
151
214
#
@@ -704,6 +767,7 @@ def run(self):
704
767
test_runner .add (test_frame_objects , ["test_frame.ds" ])
705
768
test_runner .add (test_sync_csv , ["test_sync_csv.ds" ])
706
769
test_runner .add (test_check_repair , ["test_check_and_repair.ds" ])
770
+ test_runner .add (test_issue12 , ['test_issue12.ds' ])
707
771
708
772
test_runner .run ()
709
773
0 commit comments