diff Tests/Tests.py @ 521:8114f67e0f7f

labels: doc
author Alain Mazy <am@osimis.io>
date Fri, 07 Apr 2023 15:04:59 +0200
parents b1991073e4d1
children fce9e90acdc2
line wrap: on
line diff
--- a/Tests/Tests.py	Fri Apr 07 10:48:04 2023 +0200
+++ b/Tests/Tests.py	Fri Apr 07 15:04:59 2023 +0200
@@ -9342,17 +9342,53 @@
                           '/series/%s' % series,
                           '/studies/%s' % study,
                           '/patients/%s' % patient ]:
+
+                # no tags by default
                 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels']))
+                
+                # 404 if requesting a tag that does apply for a resource
                 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base))
+                
+                # delete a non existing tag does not generate an error
                 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/hello' % base))
                 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels']))
-                self.assertRaises(Exception, lambda: DoPut(_REMOTE, '%s/labels/@' % base)) # Not an alphanumeric label
+                
+                # Not an alphanumeric label -> 400
+                self.assertRaises(Exception, lambda: DoPut(_REMOTE, '%s/labels/@' % base))
+
+                # add a tag
                 self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base))
-                self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base))  # Ignore double tagging
+                self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels']))
+                self.assertEqual('hello', DoGet(_REMOTE, base) ['Labels'][0])
+
+                # double tagging does not generate any error
+                self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base))
+                self.assertEqual('', DoGet(_REMOTE, '%s/labels/hello' % base))
+                self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels']))
+                self.assertEqual('hello', DoGet(_REMOTE, base) ['Labels'][0])
+
+                # add a second tag
+                self.assertEqual('', DoPut(_REMOTE, '%s/labels/world' % base))
+                self.assertEqual('', DoGet(_REMOTE, '%s/labels/world' % base))
                 self.assertEqual('', DoGet(_REMOTE, '%s/labels/hello' % base))
+                self.assertEqual(2, len(DoGet(_REMOTE, base) ['Labels']))
+                self.assertIn(DoGet(_REMOTE, base) ['Labels'][0], ['hello', 'world'])
+                self.assertIn(DoGet(_REMOTE, base) ['Labels'][1], ['hello', 'world'])
+
+                # list all tags defined in the system (not only on this resource)
+
+                # delete the first tag
                 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/hello' % base))
+                self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels']))
+                self.assertEqual('world', DoGet(_REMOTE, base) ['Labels'][0])
+                self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base))
+
+                # delete the second tag
+                self.assertEqual('', DoDelete(_REMOTE, '%s/labels/world' % base))
                 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels']))
-                self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base))
+                self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/world' % base))
+
+                # test all valid chars
                 self.assertEqual('', DoPut(_REMOTE, '%s/labels/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-.' % base))
         else:
             print("Your database backend doesn't support labels")