@@ -184,6 +184,51 @@ def test_string_declaration_creates_column_and_catalog_variable(catalog) -> None
184184 )["valid" ] is True
185185
186186
187+ def test_delete_prunes_an_empty_multiple_response_set (catalog ) -> None :
188+ url , path , dataset_id , _table_name = catalog
189+ connection = sqlite3 .connect (path )
190+ variable_id = connection .execute (
191+ "select variable_id from variable where dataset_id = ?" ,
192+ (dataset_id ,),
193+ ).fetchone ()[0 ]
194+ response_set_id = "00000000-0000-0000-0000-000000000001"
195+ connection .execute (
196+ "insert into multiple_response_set "
197+ "(multiple_response_set_id, dataset_id, source_ordinal, set_name, "
198+ "set_kind, counted_value_kind, counted_numeric_value) "
199+ "values (?, ?, 1, '$scores', 'MD', 'numeric', 1.0)" ,
200+ (response_set_id , dataset_id ),
201+ )
202+ connection .execute (
203+ "insert into multiple_response_member "
204+ "(multiple_response_set_id, variable_id, source_ordinal) "
205+ "values (?, ?, 1)" ,
206+ (response_set_id , variable_id ),
207+ )
208+ connection .commit ()
209+ connection .close ()
210+
211+ openstatspec .apply_spss_in_place (
212+ database_url = url ,
213+ dataset_id = dataset_id ,
214+ source_text = "COMPUTE other = score. DELETE VARIABLES score." ,
215+ actor = "test-agent" ,
216+ )
217+
218+ connection = sqlite3 .connect (path )
219+ assert connection .execute (
220+ "select count(*) from multiple_response_set where dataset_id = ?" ,
221+ (dataset_id ,),
222+ ).fetchone () == (0 ,)
223+ assert connection .execute (
224+ "select count(*) from multiple_response_member"
225+ ).fetchone () == (0 ,)
226+ connection .close ()
227+ assert validate_wide_dataset (
228+ database_url = url , dataset_id = dataset_id ,
229+ )["valid" ] is True
230+
231+
187232def test_delete_then_recreate_same_name_resolves_operations_in_order (catalog ) -> None :
188233 url , path , dataset_id , table_name = catalog
189234
0 commit comments