Mercurial > hg > orthanc-tests
changeset 966:7e211998c2e2
wsi: added test_import_layer and test_import_features
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Mon, 07 Sep 2026 20:48:18 +0200 |
| parents | b6c3ee3da7ae |
| children | 8f29b8a52125 |
| files | Plugins/WSI/Annotations.py |
| diffstat | 1 files changed, 116 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/Plugins/WSI/Annotations.py Mon Sep 07 20:11:09 2026 +0200 +++ b/Plugins/WSI/Annotations.py Mon Sep 07 20:48:18 2026 +0200 @@ -142,7 +142,7 @@ for l in layers['imported-layers']: Execute('/wsi/api/remove-imported-layer', { - 'layer-id' : l['id'], + 'layer' : l['id'], 'project' : project, }, user = user) @@ -410,13 +410,24 @@ self.assertEqual(expected_author, s[0]['name']) for i in ALL_USERS: + import_body = { + 'author' : CREATED_USERS[i], + 'layer' : expected_layer, + } + if i == expected_author: s = Execute('/wsi/api/list-shared-layers', { 'author' : CREATED_USERS[i] }, user = viewer) self.assertEqual(1, len(s)) + + t = Execute('/wsi/api/import-layer', import_body, user = viewer) + Execute('/wsi/api/remove-imported-layer', { 'layer' : expected_layer }, user = viewer) else: s = Execute('/wsi/api/list-shared-layers', { 'author' : CREATED_USERS[i] }, user = viewer) self.assertEqual(0, len(s)) + self.assertRaises(Exception, lambda: Execute('/wsi/api/import-layer', import_body, user = viewer)) + + instructor = CREATED_USERS['instructor@uclouvain.be'] learner = CREATED_USERS['learner@uclouvain.be'] learner2 = CREATED_USERS['learner2@uclouvain.be'] @@ -512,6 +523,110 @@ Execute('/wsi/api/delete-user-layer', { 'layer-id' : a['id'] }, user = 'learner@uclouvain.be') + def test_import_layer(self): + a = Execute('/wsi/api/create-user-layer', user = 'learner@uclouvain.be') + a['public'] = True + + self.assertRaises(Exception, lambda: Execute('/wsi/api/save-user-layer', { 'layer' : a })) + Execute('/wsi/api/save-user-layer', { 'layer' : a }, user = 'learner@uclouvain.be') + + b = Execute('/wsi/api/list-user-layers') + self.assertEqual(0, len(b['imported-layers'])) + + Execute('/wsi/api/import-layer', { + 'author' : CREATED_USERS['learner@uclouvain.be'], + 'layer' : a['id'], + }) + + b = Execute('/wsi/api/list-user-layers') + self.assertEqual(1, len(b['imported-layers'])) + imported = b['imported-layers'][0] + + self.assertEqual(5, len(imported)) + self.assertEqual('learner@uclouvain.be', imported['author']['name']) + self.assertEqual(1, imported['author']['type']) + self.assertEqual('#e63946', imported['color']) + self.assertEqual(a['id'], imported['id']) + self.assertEqual('Default', imported['name']) + self.assertTrue(imported['visible']) + + Execute('/wsi/api/save-imported-layer', { + 'layer' : { + 'author' : imported['author'], + 'id' : a['id'], + 'color' : '#0000ff', + 'visible' : False, + 'name' : 'Hello', + } + }) + + b = Execute('/wsi/api/list-user-layers') + self.assertEqual(1, len(b['imported-layers'])) + imported = b['imported-layers'][0] + + self.assertEqual(5, len(imported)) + self.assertEqual('learner@uclouvain.be', imported['author']['name']) + self.assertEqual(1, imported['author']['type']) + self.assertEqual('#0000ff', imported['color']) + self.assertEqual(a['id'], imported['id']) + self.assertEqual('Hello', imported['name']) + self.assertFalse(imported['visible']) + + Execute('/wsi/api/remove-imported-layer', { 'layer' : a['id'] }) + + + def test_import_features(self): + a = Execute('/wsi/api/create-user-layer') + a['public'] = True + Execute('/wsi/api/save-user-layer', { 'layer' : a }) # Make layer "a" public + + b = Execute('/wsi/api/create-user-layer') # Layer "b" is private + + Execute('/wsi/api/import-layer', { + 'author' : CREATED_USERS['admin@uclouvain.be'], + 'layer' : a['id'], + }, user = 'learner@uclouvain.be') + + c = Execute('/wsi/api/load-imported-features', user = 'learner@uclouvain.be') + self.assertEqual(0, len(c['features'])) + + Execute('/wsi/api/save-user-features', { + 'features' : [ + # Those are the minimal fields enforced by the plugin, the rest is managed by the JavaScript + { 'type' : 'a', + 'layer-id' : a['id'] }, + { 'type' : 'b', + 'layer-id' : b['id'] }, + { 'type' : 'c', + 'layer-id' : a['id'] } + ] + }) + + c = Execute('/wsi/api/load-imported-features', user = 'learner@uclouvain.be') + self.assertEqual(2, len(c['features'])) + self.assertEqual('a', c['features'][0]['type']) + self.assertEqual(a['id'], c['features'][0]['layer-id']) + self.assertEqual('c', c['features'][1]['type']) + self.assertEqual(a['id'], c['features'][1]['layer-id']) + + Execute('/wsi/api/save-user-features', { + 'features' : [ + { 'type' : 'b', + 'layer-id' : a['id'] }, + ] + }) + + c = Execute('/wsi/api/load-imported-features', user = 'learner@uclouvain.be') + self.assertEqual(1, len(c['features'])) + self.assertEqual('b', c['features'][0]['type']) + self.assertEqual(a['id'], c['features'][0]['layer-id']) + + Execute('/wsi/api/remove-imported-layer', { 'layer' : a['id'] }, user = 'learner@uclouvain.be') + + c = Execute('/wsi/api/load-imported-features', user = 'learner@uclouvain.be') + self.assertEqual(0, len(c['features'])) + + try: print('\nStarting the tests...') unittest.main(argv = [ sys.argv[0] ] + args.options)
