changeset 815:1aa6cfc19cc8

delete cascade multiple instances
author Alain Mazy <am@orthanc.team>
date Tue, 20 May 2025 10:53:53 +0200 (2 weeks ago)
parents 11068aac2270
children b359461f750d 276a054d7c32
files Tests/Tests.py
diffstat 1 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/Tests/Tests.py	Mon May 12 11:41:02 2025 +0200
+++ b/Tests/Tests.py	Tue May 20 10:53:53 2025 +0200
@@ -538,6 +538,32 @@
         self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
 
 
+    def test_delete_cascade_with_multiple_instances(self):
+        # make sure deleting the last instance of a study deletes the series, study and patient
+
+        self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))  # make sure orthanc is empty when starting the test
+        a = UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0001.dcm')
+        b = UploadInstance(_REMOTE, 'Knix/Loc/IM-0001-0002.dcm')
+
+        self.assertEqual(2, len(DoGet(_REMOTE, '/instances')))
+        self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
+        self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
+        self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
+
+        DoDelete(_REMOTE, '/instances/%s' % b['ID'])        
+
+        self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
+        self.assertEqual(1, len(DoGet(_REMOTE, '/series')))
+        self.assertEqual(1, len(DoGet(_REMOTE, '/studies')))
+        self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
+
+        DoDelete(_REMOTE, '/instances/%s' % a['ID'])        
+
+        self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))
+        self.assertEqual(0, len(DoGet(_REMOTE, '/series')))
+        self.assertEqual(0, len(DoGet(_REMOTE, '/studies')))
+        self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
+
     def test_multiframe(self):
         i = UploadInstance(_REMOTE, 'Multiframe.dcm')['ID']
         self.assertEqual(76, len(DoGet(_REMOTE, '/instances/%s/frames' % i)))