From ff6aa2ab53271740a0b2fd73859af785f7765f32 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Wed, 30 May 2018 16:38:56 -0400 Subject: [PATCH] LP#1750894 Workstation/Cascade setting pgtap tests Signed-off-by: Bill Erickson Signed-off-by: Kathy Lussier --- .../Pg/t/lp1750894-workststation-settings.pg | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Open-ILS/src/sql/Pg/t/lp1750894-workststation-settings.pg diff --git a/Open-ILS/src/sql/Pg/t/lp1750894-workststation-settings.pg b/Open-ILS/src/sql/Pg/t/lp1750894-workststation-settings.pg new file mode 100644 index 0000000000..5a3384f031 --- /dev/null +++ b/Open-ILS/src/sql/Pg/t/lp1750894-workststation-settings.pg @@ -0,0 +1,84 @@ +BEGIN; + +SELECT plan(5); + +INSERT INTO actor.workstation (name, owning_lib) values ('test', 1); + +INSERT INTO actor.workstation_setting (workstation, name, value) +VALUES ( + (SELECT id FROM actor.workstation WHERE name = 'test'), + 'eg.search.adv_pane', '"test-workstation"' +); + + +-- duplicate the setting type as an org setting to verify precedence +INSERT INTO config.org_unit_setting_type (name, grp, datatype, label) +VALUES ( + 'eg.search.adv_pane', 'gui', 'string', + oils_i18n_gettext( + 'eg.search.adv_pane', + 'Catalog Advanced Search Default Pane', + 'cwst', 'label' + ) +); + +INSERT INTO actor.org_unit_setting (org_unit, name, value) + VALUES (1, 'eg.search.adv_pane', '"test-org-unit"'); + +SELECT is( + ( SELECT value::TEXT + FROM actor.get_cascade_setting('eg.search.adv_pane', + 1, 1, (SELECT id FROM actor.workstation WHERE name = 'test'))), + '"test-workstation"', + 'Workstation setting takes precedence over org setting' +); + +DELETE FROM actor.workstation_setting WHERE name = 'eg.search.adv_pane'; + +SELECT is( + ( SELECT value::TEXT + FROM actor.get_cascade_setting('eg.search.adv_pane', + 1, 1, (SELECT id FROM actor.workstation WHERE name = 'test'))), + '"test-org-unit"', + 'Org unit setting should now work' +); + +PREPARE user_setting_insert AS + INSERT INTO config.usr_setting_type (name, grp, datatype, label) + VALUES ( + 'eg.search.adv_pane', 'gui', 'string', + oils_i18n_gettext( + 'eg.search.adv_pane', + 'Catalog Advanced Search Default Pane', + 'cwst', 'label' + ) + ); + +SELECT throws_like( + 'user_setting_insert', + '%Cannot be used as both a user setting and a workstation setting.', + 'User settings cannot also be workstation settings' +); + +DELETE FROM config.workstation_setting_type WHERE name = 'eg.search.adv_pane'; + +SELECT lives_ok( + 'user_setting_insert', + 'User settings can now be created' +); + +INSERT INTO actor.usr_setting (usr, name, value) + VALUES (1, 'eg.search.adv_pane', '"test-user"'); + +SELECT is( + ( SELECT value::TEXT + FROM actor.get_cascade_setting('eg.search.adv_pane', + 1, 1, (SELECT id FROM actor.workstation WHERE name = 'test'))), + '"test-user"', + 'User setting takes precedence over org setting' +); + + +-- Finish the tests and clean up. +SELECT * FROM finish(); +ROLLBACK; -- 2.43.2