admin_module 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +14 -0
  5. data/Guardfile +24 -0
  6. data/LICENSE +22 -0
  7. data/README.md +281 -0
  8. data/Rakefile +98 -0
  9. data/admin_module.gemspec +34 -0
  10. data/bin/admin_module +13 -0
  11. data/lib/admin_module.rb +260 -0
  12. data/lib/admin_module/cli.rb +54 -0
  13. data/lib/admin_module/cli/cli_guideline.rb +80 -0
  14. data/lib/admin_module/cli/cli_lock.rb +149 -0
  15. data/lib/admin_module/cli/cli_parameter.rb +66 -0
  16. data/lib/admin_module/cli/cli_task.rb +149 -0
  17. data/lib/admin_module/cli_old.rb +92 -0
  18. data/lib/admin_module/client.rb +146 -0
  19. data/lib/admin_module/command.rb +25 -0
  20. data/lib/admin_module/command/client_access.rb +43 -0
  21. data/lib/admin_module/command/config.rb +310 -0
  22. data/lib/admin_module/command/dc.rb +110 -0
  23. data/lib/admin_module/command/gdl.rb +71 -0
  24. data/lib/admin_module/command/lock.rb +110 -0
  25. data/lib/admin_module/command/ppm.rb +142 -0
  26. data/lib/admin_module/command/rule.rb +77 -0
  27. data/lib/admin_module/command/ruleset.rb +56 -0
  28. data/lib/admin_module/command/snapshot.rb +110 -0
  29. data/lib/admin_module/command/stage.rb +131 -0
  30. data/lib/admin_module/command/task.rb +110 -0
  31. data/lib/admin_module/config_helper.rb +33 -0
  32. data/lib/admin_module/dc.rb +133 -0
  33. data/lib/admin_module/guideline.rb +86 -0
  34. data/lib/admin_module/locks.rb +142 -0
  35. data/lib/admin_module/page_factory.rb +55 -0
  36. data/lib/admin_module/pages.rb +120 -0
  37. data/lib/admin_module/pages/dc_definitions_page.rb +73 -0
  38. data/lib/admin_module/pages/dc_detail_page.rb +187 -0
  39. data/lib/admin_module/pages/guideline_page.rb +35 -0
  40. data/lib/admin_module/pages/guideline_version_page.rb +140 -0
  41. data/lib/admin_module/pages/guidelines_page.rb +59 -0
  42. data/lib/admin_module/pages/guidelines_version_all_page.rb +116 -0
  43. data/lib/admin_module/pages/lock_definition_page.rb +178 -0
  44. data/lib/admin_module/pages/lock_definitions_page.rb +69 -0
  45. data/lib/admin_module/pages/login_page.rb +75 -0
  46. data/lib/admin_module/pages/parameter_page.rb +62 -0
  47. data/lib/admin_module/pages/parameters_page.rb +46 -0
  48. data/lib/admin_module/pages/ppms_page.rb +110 -0
  49. data/lib/admin_module/pages/rule_page.rb +68 -0
  50. data/lib/admin_module/pages/rules_page.rb +74 -0
  51. data/lib/admin_module/pages/ruleset_page.rb +64 -0
  52. data/lib/admin_module/pages/rulesets_page.rb +60 -0
  53. data/lib/admin_module/pages/select_list_syncable.rb +64 -0
  54. data/lib/admin_module/pages/snapshot_definitions_page.rb +73 -0
  55. data/lib/admin_module/pages/snapshot_detail_page.rb +246 -0
  56. data/lib/admin_module/pages/workflow_detail_page.rb +451 -0
  57. data/lib/admin_module/pages/workflow_detail_task_addl_detail_page.rb +172 -0
  58. data/lib/admin_module/pages/workflow_detail_task_mappings_page.rb +163 -0
  59. data/lib/admin_module/pages/workflow_detail_task_screens_page.rb +75 -0
  60. data/lib/admin_module/pages/workflow_details_page.rb +67 -0
  61. data/lib/admin_module/pages/workflow_task_page.rb +107 -0
  62. data/lib/admin_module/pages/workflow_tasks_page.rb +111 -0
  63. data/lib/admin_module/ppms.rb +78 -0
  64. data/lib/admin_module/rake.rb +22 -0
  65. data/lib/admin_module/rake/dc_tasks.rb +185 -0
  66. data/lib/admin_module/rake/deploy_task.rb +59 -0
  67. data/lib/admin_module/rake/gdl_tasks.rb +189 -0
  68. data/lib/admin_module/rake/lock_tasks.rb +189 -0
  69. data/lib/admin_module/rake/parameter_task.rb +86 -0
  70. data/lib/admin_module/rake/ppm_tasks.rb +248 -0
  71. data/lib/admin_module/rake/rule_tasks.rb +157 -0
  72. data/lib/admin_module/rake/snapshot_tasks.rb +223 -0
  73. data/lib/admin_module/rake/stage_tasks.rb +197 -0
  74. data/lib/admin_module/rake/stages_task.rb +197 -0
  75. data/lib/admin_module/rake/task_tasks.rb +189 -0
  76. data/lib/admin_module/rules.rb +50 -0
  77. data/lib/admin_module/rulesets.rb +42 -0
  78. data/lib/admin_module/snapshots.rb +133 -0
  79. data/lib/admin_module/stages.rb +171 -0
  80. data/lib/admin_module/tasks.rb +147 -0
  81. data/lib/admin_module/version.rb +3 -0
  82. data/old_spec/lib/admin_module/cli_configuration_spec.rb +126 -0
  83. data/old_spec/lib/admin_module/cli_create_stage_spec.rb +89 -0
  84. data/old_spec/lib/admin_module/cli_delete_rule_spec.rb +57 -0
  85. data/old_spec/lib/admin_module/cli_deploy_spec.rb +57 -0
  86. data/old_spec/lib/admin_module/cli_export_locks_spec.rb +62 -0
  87. data/old_spec/lib/admin_module/cli_export_stages_spec.rb +62 -0
  88. data/old_spec/lib/admin_module/cli_guidelines_version_all_spec.rb +58 -0
  89. data/old_spec/lib/admin_module/cli_import_locks_spec.rb +153 -0
  90. data/old_spec/lib/admin_module/cli_import_stages_spec.rb +173 -0
  91. data/old_spec/lib/admin_module/cli_modify_locks_spec.rb +128 -0
  92. data/old_spec/lib/admin_module/cli_modify_stages_spec.rb +88 -0
  93. data/old_spec/lib/admin_module/cli_rename_rule_spec.rb +53 -0
  94. data/old_spec/lib/admin_module/cli_rename_ruleset_spec.rb +53 -0
  95. data/old_spec/lib/admin_module/cli_var_spec.rb +41 -0
  96. data/old_spec/lib/admin_module/rake/deploy_task_spec.rb +85 -0
  97. data/old_spec/lib/admin_module/rake/parameter_task_spec.rb +58 -0
  98. data/old_spec/lib/admin_module/rake/rules_task_spec.rb +75 -0
  99. data/spec/data/build/test1.xml +0 -0
  100. data/spec/data/build/test2.xml +1 -0
  101. data/spec/data/import_dcs.yml +31 -0
  102. data/spec/data/import_locks.yml +4 -0
  103. data/spec/data/import_snapshots.yml +35 -0
  104. data/spec/data/import_stages.yml +4 -0
  105. data/spec/data/import_tasks.yml +25 -0
  106. data/spec/data/patch-test.xml +1 -0
  107. data/spec/data/remove_test_del_rule.xml +1 -0
  108. data/spec/data/stages.yml +518 -0
  109. data/spec/data/test_del_rule.xml +1 -0
  110. data/spec/lib/admin_module/admin_module_spec.rb +175 -0
  111. data/spec/lib/admin_module/cli_spec.rb +36 -0
  112. data/spec/lib/admin_module/client_spec.rb +158 -0
  113. data/spec/lib/admin_module/command/config_spec.rb +477 -0
  114. data/spec/lib/admin_module/command/dc_spec.rb +202 -0
  115. data/spec/lib/admin_module/command/gdl_spec.rb +139 -0
  116. data/spec/lib/admin_module/command/lock_spec.rb +207 -0
  117. data/spec/lib/admin_module/command/rule_spec.rb +163 -0
  118. data/spec/lib/admin_module/command/ruleset_spec.rb +124 -0
  119. data/spec/lib/admin_module/command/snapshot_spec.rb +202 -0
  120. data/spec/lib/admin_module/command/stage_spec.rb +259 -0
  121. data/spec/lib/admin_module/command/task_spec.rb +207 -0
  122. data/spec/lib/admin_module/dc_spec.rb +192 -0
  123. data/spec/lib/admin_module/guideline_spec.rb +177 -0
  124. data/spec/lib/admin_module/locks_spec.rb +188 -0
  125. data/spec/lib/admin_module/rules_spec.rb +110 -0
  126. data/spec/lib/admin_module/rulesets_spec.rb +85 -0
  127. data/spec/lib/admin_module/snapshot_spec.rb +192 -0
  128. data/spec/lib/admin_module/stages_spec.rb +179 -0
  129. data/spec/lib/admin_module/tasks_spec.rb +196 -0
  130. data/spec/spec_helper.rb +54 -0
  131. data/spec/support/asserts.rb +13 -0
  132. data/spec/support/data_clearing.rb +28 -0
  133. data/spec/support/dirs.rb +54 -0
  134. data/spec/support/helpers.rb +83 -0
  135. data/spec/support/lock.rb +23 -0
  136. data/spec/support/mocks.rb +213 -0
  137. data/spec/support/snapshot.rb +28 -0
  138. data/spec/support/stage.rb +22 -0
  139. data/spec/support/stage_factory.rb +138 -0
  140. data/spec/support/task.rb +23 -0
  141. metadata +381 -0
@@ -0,0 +1,192 @@
1
+ require 'pathname'
2
+ require Pathname(__FILE__).ascend{|d| h=d+'spec_helper.rb'; break h if h.file?}
3
+
4
+
5
+ describe AdminModule::DC do
6
+
7
+ context "api" do
8
+
9
+ let(:defns_list) { ['TstDefn1', 'TstDefn2'] }
10
+
11
+
12
+ let(:detail) do
13
+ detail = double('DcDetailPage')
14
+
15
+ allow(detail).to receive(:set_name).and_return(detail)
16
+ allow(detail).to receive(:set_definition_data).and_return(detail)
17
+ allow(detail).to receive(:get_definition_data).and_return(create_dc_hash('TstDefn1'))
18
+
19
+ detail
20
+ end
21
+
22
+ let(:dc_defns_page_stub) do
23
+ obj = double('DcDefinitionsPage')
24
+
25
+ allow(obj).to receive(:get_definitions).and_return(defns_list)
26
+ allow(obj).to receive(:add).and_return(detail)
27
+ allow(obj).to receive(:modify).and_return(detail)
28
+ allow(obj).to receive(:detail_page).and_return(detail)
29
+
30
+ allow(detail).to receive(:save).and_return(obj)
31
+
32
+ obj
33
+ end
34
+
35
+ let(:page_factory) do
36
+ obj = MockPageFactory.new
37
+ obj.login_page = double('login_page')
38
+ obj.dc_definitions_page = dc_defns_page_stub
39
+ obj
40
+ end
41
+
42
+ context "#list" do
43
+ it "returns list of definitions" do
44
+ expect(page_factory.dc_definitions_page)
45
+ .to receive(:get_definitions)
46
+
47
+ dcs = AdminModule::DC.new(page_factory)
48
+ dcs = dcs.list()
49
+
50
+ expect( dcs ).to include 'TstDefn1'
51
+ expect( dcs ).to include 'TstDefn2'
52
+ end
53
+ end
54
+
55
+ context "#rename" do
56
+ context "source name exists and destination name does not exist" do
57
+ it "renames the definition" do
58
+ src = 'TstDefn1'
59
+ dest = 'RnTstDefn1'
60
+
61
+ expect(page_factory.dc_definitions_page)
62
+ .to receive(:modify)
63
+ .with(src)
64
+
65
+ expect(detail)
66
+ .to receive(:set_name)
67
+ .with(dest)
68
+
69
+ expect(detail)
70
+ .to receive(:save)
71
+
72
+ dcs = AdminModule::DC.new(page_factory)
73
+ dcs.rename(src, dest)
74
+ end
75
+ end
76
+
77
+ context "source name does not exist" do
78
+ it "raises exception" do
79
+ src = 'NotADefn1'
80
+ dest = 'TstDefn2'
81
+
82
+ dcs = AdminModule::DC.new(page_factory)
83
+ expect { dcs.rename(src, dest) }.to raise_exception /named 'NotADefn1' does not exist/
84
+ end
85
+ end
86
+
87
+ context "destination name already exists" do
88
+ it "raises exception" do
89
+ src = 'TstDefn1'
90
+ dest = 'TstDefn2'
91
+
92
+ dcs = AdminModule::DC.new(page_factory)
93
+ expect { dcs.rename(src, dest) }.to raise_exception /named 'TstDefn2' already exists/
94
+ end
95
+ end
96
+ end
97
+
98
+ context "#read" do
99
+ context "definition exists" do
100
+ it "reads the definition" do
101
+ src = 'TstDefn1'
102
+
103
+ expect(page_factory.dc_definitions_page)
104
+ .to receive(:modify)
105
+ .with(src)
106
+
107
+ expect(detail)
108
+ .to receive(:get_definition_data)
109
+ .and_return(create_dc_hash('TstDefn1'))
110
+
111
+ dcs = AdminModule::DC.new(page_factory)
112
+ dcs.read(src)
113
+ end
114
+ end
115
+
116
+ context "definition does not exist" do
117
+ it "raises exception" do
118
+ src = 'NotADefn1'
119
+
120
+ dcs = AdminModule::DC.new(page_factory)
121
+ expect { dcs.read(src) }.to raise_exception /named 'NotADefn1' does not exist/
122
+ end
123
+ end
124
+ end
125
+
126
+ context "#export" do
127
+ context "file directory exists" do
128
+ it "exports the dc definitions" do
129
+ dest_file = spec_tmp_dir('dcs') + 'export.yml'
130
+ src = 'TstDefn1'
131
+
132
+ expect(page_factory.dc_definitions_page)
133
+ .to receive(:modify)
134
+ .with(src)
135
+
136
+ expect(detail)
137
+ .to receive(:get_definition_data)
138
+ .and_return(create_dc_hash('TstDefn1'))
139
+
140
+ expect(detail)
141
+ .to receive(:get_definition_data)
142
+ .and_return(create_dc_hash('TstDefn2'))
143
+
144
+ dcs = AdminModule::DC.new(page_factory)
145
+ dcs.export(dest_file)
146
+
147
+ expect(File.exist?(dest_file)).to eq true
148
+ end
149
+ end
150
+
151
+ context "file directory does not exist" do
152
+ it "raises exception" do
153
+ dest_path = spec_tmp_dir('dcs') + 'not/a/real/dir/export.yml'
154
+
155
+ dcs = AdminModule::DC.new(page_factory)
156
+ expect { dcs.export(dest_path) }.to raise_exception /No such directory - #{dest_path}/
157
+ end
158
+ end
159
+ end
160
+
161
+ context "#import" do
162
+ context "file exists" do
163
+ it "imports the dc definitions" do
164
+ src_file = spec_data_dir + 'import_dcs.yml'
165
+ src = 'TstDefn1'
166
+
167
+ #allow(File).to receive(:exists?).and_return(true)
168
+
169
+ expect(page_factory.dc_definitions_page)
170
+ .to receive(:modify)
171
+ .with(src)
172
+
173
+ expect(detail)
174
+ .to receive(:set_definition_data)
175
+
176
+ dcs = AdminModule::DC.new(page_factory)
177
+ dcs.import(src_file)
178
+ end
179
+ end
180
+
181
+ context "file does not exist" do
182
+ it "raises exception" do
183
+ src = 'NotADefn1'
184
+
185
+ dcs = AdminModule::DC.new(page_factory)
186
+ expect { dcs.import(src) }.to raise_exception /File not found: NotADefn1/
187
+ end
188
+ end
189
+ end
190
+ end
191
+ end
192
+
@@ -0,0 +1,177 @@
1
+ require 'pathname'
2
+ require Pathname(__FILE__).ascend{|d| h=d+'spec_helper.rb'; break h if h.file?}
3
+
4
+ describe AdminModule::Guideline do
5
+
6
+ context "api" do
7
+
8
+ let(:guidelines_page_stub) do
9
+ obj = double('guidelines_page')
10
+ allow(obj).to receive(:upload).and_return(obj)
11
+ allow(obj).to receive(:add_version).and_return(obj)
12
+ obj
13
+ end
14
+
15
+ let(:page_factory) do
16
+ obj = MockPageFactory.new
17
+ obj.login_page = double('login_page')
18
+ obj.guidelines_page = guidelines_page_stub
19
+ obj
20
+ end
21
+
22
+ let(:default_comment) { 'new default comment' }
23
+
24
+ context "#deploy" do
25
+ context "with comment" do
26
+ it "deploys guidelines" do
27
+ srcdir = data_dir('build')
28
+ comment = 'this is a comment'
29
+
30
+ AdminModule.configure do |config|
31
+ config.xmlmaps['test1'] = 'Z-TEMP'
32
+ config.xmlmaps['test2'] = 'Z-TEMP'
33
+ end
34
+
35
+ expect(page_factory.guidelines_page)
36
+ .to receive(:open_guideline)
37
+ .with('Z-TEMP')
38
+ .and_return(page_factory.guidelines_page)
39
+ .twice
40
+
41
+ expect(page_factory.guidelines_page)
42
+ .to receive(:add_version)
43
+ .twice
44
+
45
+ expect(page_factory.guidelines_page)
46
+ .to receive(:upload)
47
+ .with(anything, comment)
48
+ .twice
49
+
50
+ gdl = AdminModule::Guideline.new(page_factory)
51
+ gdl.deploy(srcdir, comment)
52
+ end
53
+ end
54
+
55
+ context "with no comment" do
56
+ it "deploys guidelines with default comment" do
57
+ srcdir = data_dir('build')
58
+
59
+ AdminModule.configure do |config|
60
+ config.xmlmaps['test1'] = 'Z-TEMP'
61
+ config.xmlmaps['test2'] = 'Z-TEMP'
62
+ config.default_comment = default_comment
63
+ end
64
+
65
+ expect(page_factory.guidelines_page)
66
+ .to receive(:open_guideline)
67
+ .with('Z-TEMP')
68
+ .and_return(page_factory.guidelines_page)
69
+ .twice
70
+
71
+ expect(page_factory.guidelines_page)
72
+ .to receive(:add_version)
73
+ .twice
74
+
75
+ expect(page_factory.guidelines_page)
76
+ .to receive(:upload)
77
+ .with(anything, default_comment)
78
+ .twice
79
+
80
+ gdl = AdminModule::Guideline.new(page_factory)
81
+ gdl.deploy(srcdir)
82
+ end
83
+ end
84
+
85
+ context "with xml file specified" do
86
+ it "deploys the guideline" do
87
+ srcdir = data_dir('build')
88
+
89
+ AdminModule.configure do |config|
90
+ config.xmlmaps['test1'] = 'Z-TEMP'
91
+ config.xmlmaps['test2'] = 'Z-TEMP'
92
+ config.default_comment = default_comment
93
+ end
94
+
95
+ expect(page_factory.guidelines_page)
96
+ .to receive(:open_guideline)
97
+ .with('Z-TEMP')
98
+ .and_return(page_factory.guidelines_page)
99
+
100
+ expect(page_factory.guidelines_page)
101
+ .to receive(:add_version)
102
+ .and_return(page_factory.guidelines_page)
103
+
104
+ file_to_upload = Pathname(srcdir) + 'test1.xml'
105
+
106
+ expect(page_factory.guidelines_page)
107
+ .to receive(:upload)
108
+ .with(file_to_upload.expand_path, default_comment)
109
+
110
+ gdl = AdminModule::Guideline.new(page_factory)
111
+ gdl.deploy_file(file_to_upload)
112
+ end
113
+ end
114
+ end
115
+
116
+ context "#version" do
117
+ context "with comment" do
118
+ it "versions guidelines" do
119
+ comment = 'this is a comment'
120
+ gdls = []
121
+
122
+ AdminModule.configure do |config|
123
+ config.xmlmaps['test1'] = 'Z-TEMP1'
124
+ config.xmlmaps['test2'] = 'Z-TEMP2'
125
+
126
+ gdls = config.xmlmaps.values
127
+ end
128
+
129
+ expect(page_factory.guidelines_page)
130
+ .to receive(:version_all)
131
+ .and_return(page_factory.guidelines_page)
132
+
133
+ expect(page_factory.guidelines_page)
134
+ .to receive(:version)
135
+ .with(gdls, comment)
136
+
137
+ allow(page_factory.guidelines_page)
138
+ .to receive(:get_guidelines)
139
+ .and_return( gdls )
140
+
141
+ gdl = AdminModule::Guideline.new(page_factory)
142
+ gdl.version(gdls, comment)
143
+ end
144
+ end
145
+
146
+ context "with no comment" do
147
+ it "versions guidelines with default comment" do
148
+ gdls = []
149
+
150
+ AdminModule.configure do |config|
151
+ config.xmlmaps['test1'] = 'Z-TEMP1'
152
+ config.xmlmaps['test2'] = 'Z-TEMP2'
153
+ config.default_comment = default_comment
154
+
155
+ gdls = config.xmlmaps.values
156
+ end
157
+
158
+ expect(page_factory.guidelines_page)
159
+ .to receive(:get_guidelines)
160
+ .and_return(['Z-TEMP1','Z-TEMP2'])
161
+
162
+ expect(page_factory.guidelines_page)
163
+ .to receive(:version_all)
164
+ .and_return(page_factory.guidelines_page)
165
+
166
+ expect(page_factory.guidelines_page)
167
+ .to receive(:version)
168
+ .with(gdls, default_comment)
169
+
170
+ gdl = AdminModule::Guideline.new(page_factory)
171
+ gdl.version(gdls)
172
+ end
173
+ end
174
+ end
175
+ end
176
+ end
177
+
@@ -0,0 +1,188 @@
1
+ require 'spec_helper'
2
+
3
+ def create_lock_hash name
4
+ { name: name,
5
+ description: "Description of #{name}",
6
+ is_program_lock: false,
7
+ parameters: [ 'Var 1', 'Var 2' ],
8
+ dts: [ 'Field 1', 'Field 2' ],
9
+ }
10
+ end
11
+
12
+ describe AdminModule::Locks do
13
+
14
+ context "api" do
15
+
16
+ let(:lock_list) { ['TstLock1', 'TstLock2'] }
17
+
18
+ let(:locks_page_stub) do
19
+ obj = double('locks_page')
20
+ allow(obj).to receive(:get_locks).and_return(lock_list)
21
+ allow(obj).to receive(:add).and_return(obj)
22
+ allow(obj).to receive(:modify).and_return(obj)
23
+ allow(obj).to receive(:set_name).and_return(obj)
24
+ allow(obj).to receive(:set_lock_data).and_return(obj)
25
+ allow(obj).to receive(:get_lock_data).and_return(create_lock_hash('TstLock1'))
26
+ allow(obj).to receive(:save).and_return(obj)
27
+ #allow(obj).to receive(:add_version).and_return(obj)
28
+ obj
29
+ end
30
+
31
+ let(:page_factory) do
32
+ obj = MockPageFactory.new
33
+ obj.login_page = double('login_page')
34
+ obj.locks_page = locks_page_stub
35
+ obj
36
+ end
37
+
38
+ context "#list" do
39
+ it "returns list of locks" do
40
+ expect(page_factory.locks_page)
41
+ .to receive(:get_locks)
42
+
43
+ locks = AdminModule::Locks.new(page_factory)
44
+ locks = locks.list()
45
+
46
+ expect( locks ).to include 'TstLock1'
47
+ expect( locks ).to include 'TstLock2'
48
+ end
49
+ end
50
+
51
+ context "#rename" do
52
+ context "source name exists and destination name does not exist" do
53
+ it "renames the lock" do
54
+ src = 'TstLock1'
55
+ dest = 'RnTstLock1'
56
+
57
+ expect(page_factory.locks_page)
58
+ .to receive(:modify)
59
+ .with(src)
60
+
61
+ expect(page_factory.locks_page)
62
+ .to receive(:set_name)
63
+ .with(dest)
64
+
65
+ expect(page_factory.locks_page)
66
+ .to receive(:save)
67
+
68
+ locks = AdminModule::Locks.new(page_factory)
69
+ locks.rename(src, dest)
70
+ end
71
+ end
72
+
73
+ context "source name does not exist" do
74
+ it "raises exception" do
75
+ src = 'NotALock1'
76
+ dest = 'TstLock2'
77
+
78
+ locks = AdminModule::Locks.new(page_factory)
79
+ expect { locks.rename(src, dest) }.to raise_exception /named 'NotALock1' does not exist/
80
+ end
81
+ end
82
+
83
+ context "destination name already exists" do
84
+ it "raises exception" do
85
+ src = 'TstLock1'
86
+ dest = 'TstLock2'
87
+
88
+ locks = AdminModule::Locks.new(page_factory)
89
+ expect { locks.rename(src, dest) }.to raise_exception /named 'TstLock2' already exists/
90
+ end
91
+ end
92
+ end
93
+
94
+ context "#read" do
95
+ context "lock exists" do
96
+ it "reads the lock" do
97
+ src = 'TstLock1'
98
+
99
+ expect(page_factory.locks_page)
100
+ .to receive(:modify)
101
+ .with(src)
102
+
103
+ expect(page_factory.locks_page)
104
+ .to receive(:get_lock_data)
105
+ .and_return(create_lock_hash('TstLock1'))
106
+
107
+ locks = AdminModule::Locks.new(page_factory)
108
+ locks.read(src)
109
+ end
110
+ end
111
+
112
+ context "lock does not exist" do
113
+ it "raises exception" do
114
+ src = 'NotALock1'
115
+
116
+ locks = AdminModule::Locks.new(page_factory)
117
+ expect { locks.read(src) }.to raise_exception /named 'NotALock1' does not exist/
118
+ end
119
+ end
120
+ end
121
+
122
+ context "#export" do
123
+ context "file directory exists" do
124
+ it "exports the lock definitions" do
125
+ dest_file = spec_tmp_dir('locks') + 'export.yml'
126
+ src = 'TstLock1'
127
+
128
+ expect(page_factory.locks_page)
129
+ .to receive(:modify)
130
+ .with(src)
131
+
132
+ expect(page_factory.locks_page)
133
+ .to receive(:get_lock_data)
134
+ .and_return(create_lock_hash('TstLock1'))
135
+
136
+ expect(page_factory.locks_page)
137
+ .to receive(:get_lock_data)
138
+ .and_return(create_lock_hash('TstLock2'))
139
+
140
+ locks = AdminModule::Locks.new(page_factory)
141
+ locks.export(dest_file)
142
+
143
+ expect(File.exist?(dest_file)).to eq true
144
+ end
145
+ end
146
+
147
+ context "file directory does not exist" do
148
+ it "raises exception" do
149
+ dest_path = spec_tmp_dir('locks') + 'not/a/real/dir/export.yml'
150
+
151
+ locks = AdminModule::Locks.new(page_factory)
152
+ expect { locks.export(dest_path) }.to raise_exception /No such directory - #{dest_path}/
153
+ end
154
+ end
155
+ end
156
+
157
+ context "#import" do
158
+ context "file exists" do
159
+ it "imports the lock definitions" do
160
+ src_file = spec_data_dir + 'import_locks.yml'
161
+ src = 'TstLock1'
162
+
163
+ #allow(File).to receive(:exists?).and_return(true)
164
+
165
+ expect(page_factory.locks_page)
166
+ .to receive(:modify)
167
+ .with(src)
168
+
169
+ expect(page_factory.locks_page)
170
+ .to receive(:set_lock_data)
171
+
172
+ locks = AdminModule::Locks.new(page_factory)
173
+ locks.import(src_file)
174
+ end
175
+ end
176
+
177
+ context "file does not exist" do
178
+ it "raises exception" do
179
+ src = 'NotALock1'
180
+
181
+ locks = AdminModule::Locks.new(page_factory)
182
+ expect { locks.import(src) }.to raise_exception /File not found: NotALock1/
183
+ end
184
+ end
185
+ end
186
+ end
187
+ end
188
+