changeset 962:e585dc076aa5

wsi: added test_update_layer
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 04 Sep 2026 18:13:38 +0200
parents abc7e0de479f
children 9866889be864
files Plugins/WSI/Annotations.py
diffstat 1 files changed, 40 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/Plugins/WSI/Annotations.py	Fri Sep 04 17:56:09 2026 +0200
+++ b/Plugins/WSI/Annotations.py	Fri Sep 04 18:13:38 2026 +0200
@@ -24,14 +24,11 @@
 
 
 import argparse
+import copy
 import os
 import pprint
-import re
-import subprocess
 import sys
-import tempfile
 import unittest
-from shutil import copyfile
 
 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'Tests'))
 from Toolbox import *
@@ -259,6 +256,45 @@
         self.assertEqual(0, GetNumberOfLayers('hello'))
 
 
+    def test_update_layer(self):
+        user = Execute('/wsi/api/create-standard-user', { 'name' : 'world' })
+        self.assertEqual(2, len(user))
+        self.assertEqual('world', user['name'])
+        self.assertEqual(1, user['type'])  # This corresponds to int(OrthancWSI::UserId::Type_Standard) in C++ code
+
+        a = Execute('/wsi/api/create-user-layer')
+
+        layers = Execute('/wsi/api/list-user-layers')
+        self.assertEqual(json.dumps(a), json.dumps(layers['user-layers'][0]))
+
+        Execute('/wsi/api/save-user-layer', { 'layer' : a })
+        self.assertEqual(json.dumps(a), json.dumps(layers['user-layers'][0]))  # No change
+
+        b = copy.copy(a)
+        b['id'] = 'nope'
+        self.assertRaises(Exception, lambda: Execute('/wsi/api/save-user-layer', { 'layer' : b }))
+
+        self.assertEqual(json.dumps(a), json.dumps(layers['user-layers'][0]))  # No change
+
+        b = {
+            'id' : a['id'],
+            'color' : '#112233',
+            'name' : 'Hello',
+            'public' : True,
+            'shared_with' : [ user ],
+            'visible' : False,
+        }
+
+        Execute('/wsi/api/save-user-layer', { 'layer' : b })
+
+        layers = Execute('/wsi/api/list-user-layers')
+        self.assertEqual(json.dumps(b, sort_keys=True),
+                         json.dumps(layers['user-layers'][0], sort_keys=True))
+
+
+        b['color'] = 'invalid'
+        self.assertRaises(Exception, lambda: Execute('/wsi/api/save-user-layer', { 'layer' : b }))
+
 try:
     print('\nStarting the tests...')
     unittest.main(argv = [ sys.argv[0] ] + args.options)