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,110 @@
1
+ require 'spec_helper'
2
+
3
+ describe AdminModule::Rules do
4
+
5
+ context "api" do
6
+
7
+ let(:rs_list) { ['TstRule1', 'TstRule2'] }
8
+
9
+ let(:rules_page_stub) do
10
+ obj = double('rules_page')
11
+ allow(obj).to receive(:get_rules).and_return(rs_list)
12
+ allow(obj).to receive(:open_rule).and_return(obj)
13
+ allow(obj).to receive(:delete_rule).and_return(obj)
14
+ allow(obj).to receive(:set_name).and_return(obj)
15
+ allow(obj).to receive(:save)
16
+ #allow(obj).to receive(:add_version).and_return(obj)
17
+ obj
18
+ end
19
+
20
+ let(:page_factory) do
21
+ obj = MockPageFactory.new
22
+ obj.login_page = double('login_page')
23
+ obj.rules_page = rules_page_stub
24
+ obj
25
+ end
26
+
27
+ let(:default_comment) { 'no comment' }
28
+
29
+ context "#list" do
30
+ it "returns list of rules" do
31
+ expect(page_factory.rules_page)
32
+ .to receive(:get_rules)
33
+
34
+ rs = AdminModule::Rules.new(page_factory)
35
+ rules = rs.list()
36
+
37
+ expect( rules ).to include 'TstRule1'
38
+ expect( rules ).to include 'TstRule2'
39
+ end
40
+ end
41
+
42
+ context "#rename" do
43
+ context "source name exists and destination name does not exist" do
44
+ it "renames the rule" do
45
+ src = 'TstRule1'
46
+ dest = 'RnTstRule1'
47
+
48
+ expect(page_factory.rules_page)
49
+ .to receive(:open_rule)
50
+ .with(src)
51
+
52
+ expect(page_factory.rules_page)
53
+ .to receive(:set_name)
54
+ .with(dest)
55
+
56
+ expect(page_factory.rules_page)
57
+ .to receive(:save)
58
+
59
+ rs = AdminModule::Rules.new(page_factory)
60
+ rs.rename(src, dest)
61
+ end
62
+ end
63
+
64
+ context "source name does not exist" do
65
+ it "raises exception" do
66
+ src = 'NotARule1'
67
+ dest = 'TstRule2'
68
+
69
+ rs = AdminModule::Rules.new(page_factory)
70
+ expect { rs.rename(src, dest) }.to raise_exception /named 'NotARule1' does not exist/
71
+ end
72
+ end
73
+
74
+ context "destination name already exists" do
75
+ it "raises exception" do
76
+ src = 'TstRule1'
77
+ dest = 'TstRule2'
78
+
79
+ rs = AdminModule::Rules.new(page_factory)
80
+ expect { rs.rename(src, dest) }.to raise_exception /named 'TstRule2' already exists/
81
+ end
82
+ end
83
+ end
84
+
85
+ context "#delete" do
86
+ context "rule exists" do
87
+ it "deletes the rule" do
88
+ src = 'TstRule1'
89
+
90
+ expect(page_factory.rules_page)
91
+ .to receive(:delete_rule)
92
+ .with(src)
93
+
94
+ rs = AdminModule::Rules.new(page_factory)
95
+ rs.delete(src)
96
+ end
97
+ end
98
+
99
+ context "rule does not exist" do
100
+ it "raises exception" do
101
+ src = 'NotARule1'
102
+
103
+ rs = AdminModule::Rules.new(page_factory)
104
+ expect { rs.delete(src) }.to raise_exception /named 'NotARule1' does not exist/
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
110
+
@@ -0,0 +1,85 @@
1
+ require 'spec_helper'
2
+
3
+ describe AdminModule::Rulesets do
4
+
5
+ context "api" do
6
+
7
+ let(:rs_list) { ['TstRuleset1', 'TstRuleset2'] }
8
+
9
+ let(:rulesets_page_stub) do
10
+ obj = double('rulesets_page')
11
+ allow(obj).to receive(:get_rulesets).and_return(rs_list)
12
+ allow(obj).to receive(:open_ruleset).and_return(obj)
13
+ allow(obj).to receive(:set_name).and_return(obj)
14
+ allow(obj).to receive(:save)
15
+ #allow(obj).to receive(:add_version).and_return(obj)
16
+ obj
17
+ end
18
+
19
+ let(:page_factory) do
20
+ obj = MockPageFactory.new
21
+ obj.login_page = double('login_page')
22
+ obj.rulesets_page = rulesets_page_stub
23
+ obj
24
+ end
25
+
26
+ let(:default_comment) { 'no comment' }
27
+
28
+ context "#list" do
29
+ it "returns list of rulesets" do
30
+ expect(page_factory.rulesets_page)
31
+ .to receive(:get_rulesets)
32
+
33
+ rs = AdminModule::Rulesets.new(page_factory)
34
+ rulesets = rs.list()
35
+
36
+ expect( rulesets ).to include 'TstRuleset1'
37
+ expect( rulesets ).to include 'TstRuleset2'
38
+ end
39
+ end
40
+
41
+ context "#rename" do
42
+ context "source name exists and destination name does not exist" do
43
+ it "renames the ruleset" do
44
+ src = 'TstRuleset1'
45
+ dest = 'RnTstRuleset1'
46
+
47
+ expect(page_factory.rulesets_page)
48
+ .to receive(:open_ruleset)
49
+ .with(src)
50
+
51
+ expect(page_factory.rulesets_page)
52
+ .to receive(:set_name)
53
+ .with(dest)
54
+
55
+ expect(page_factory.rulesets_page)
56
+ .to receive(:save)
57
+
58
+ rs = AdminModule::Rulesets.new(page_factory)
59
+ rs.rename(src, dest)
60
+ end
61
+ end
62
+
63
+ context "source name does not exist" do
64
+ it "raises exception" do
65
+ src = 'NotARuleset1'
66
+ dest = 'TstRuleset2'
67
+
68
+ rs = AdminModule::Rulesets.new(page_factory)
69
+ expect { rs.rename(src, dest) }.to raise_exception /named 'NotARuleset1' does not exist/
70
+ end
71
+ end
72
+
73
+ context "destination name already exists" do
74
+ it "raises exception" do
75
+ src = 'TstRuleset1'
76
+ dest = 'TstRuleset2'
77
+
78
+ rs = AdminModule::Rulesets.new(page_factory)
79
+ expect { rs.rename(src, dest) }.to raise_exception /named 'TstRuleset2' already exists/
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+
@@ -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::Snapshots do
6
+
7
+ context "api" do
8
+
9
+ let(:defns_list) { ['TstDefn1', 'TstDefn2'] }
10
+
11
+
12
+ let(:detail) do
13
+ detail = double('SnapshotDetailPage')
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_snapshot_hash('TstDefn1'))
18
+
19
+ detail
20
+ end
21
+
22
+ let(:snapshot_defns_page_stub) do
23
+ obj = double('SnapshotDefinitionsPage')
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.snapshot_definitions_page = snapshot_defns_page_stub
39
+ obj
40
+ end
41
+
42
+ context "#list" do
43
+ it "returns list of definitions" do
44
+ expect(page_factory.snapshot_definitions_page)
45
+ .to receive(:get_definitions)
46
+
47
+ snapshots = AdminModule::Snapshots.new(page_factory)
48
+ snapshots = snapshots.list()
49
+
50
+ expect( snapshots ).to include 'TstDefn1'
51
+ expect( snapshots ).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.snapshot_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
+ snapshots = AdminModule::Snapshots.new(page_factory)
73
+ snapshots.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
+ snapshots = AdminModule::Snapshots.new(page_factory)
83
+ expect { snapshots.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
+ snapshots = AdminModule::Snapshots.new(page_factory)
93
+ expect { snapshots.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.snapshot_definitions_page)
104
+ .to receive(:modify)
105
+ .with(src)
106
+
107
+ expect(detail)
108
+ .to receive(:get_definition_data)
109
+ .and_return(create_snapshot_hash('TstDefn1'))
110
+
111
+ snapshots = AdminModule::Snapshots.new(page_factory)
112
+ snapshots.read(src)
113
+ end
114
+ end
115
+
116
+ context "definition does not exist" do
117
+ it "raises exception" do
118
+ src = 'NotADefn1'
119
+
120
+ snapshots = AdminModule::Snapshots.new(page_factory)
121
+ expect { snapshots.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 snapshot definitions" do
129
+ dest_file = spec_tmp_dir('snapshots') + 'export.yml'
130
+ src = 'TstDefn1'
131
+
132
+ expect(page_factory.snapshot_definitions_page)
133
+ .to receive(:modify)
134
+ .with(src)
135
+
136
+ expect(detail)
137
+ .to receive(:get_definition_data)
138
+ .and_return(create_snapshot_hash('TstDefn1'))
139
+
140
+ expect(detail)
141
+ .to receive(:get_definition_data)
142
+ .and_return(create_snapshot_hash('TstDefn2'))
143
+
144
+ snapshots = AdminModule::Snapshots.new(page_factory)
145
+ snapshots.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('snapshots') + 'not/a/real/dir/export.yml'
154
+
155
+ snapshots = AdminModule::Snapshots.new(page_factory)
156
+ expect { snapshots.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 snapshot definitions" do
164
+ src_file = spec_data_dir + 'import_snapshots.yml'
165
+ src = 'TstDefn1'
166
+
167
+ #allow(File).to receive(:exists?).and_return(true)
168
+
169
+ expect(page_factory.snapshot_definitions_page)
170
+ .to receive(:modify)
171
+ .with(src)
172
+
173
+ expect(detail)
174
+ .to receive(:set_definition_data)
175
+
176
+ snapshots = AdminModule::Snapshots.new(page_factory)
177
+ snapshots.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
+ snapshots = AdminModule::Snapshots.new(page_factory)
186
+ expect { snapshots.import(src) }.to raise_exception /File not found: NotADefn1/
187
+ end
188
+ end
189
+ end
190
+ end
191
+ end
192
+
@@ -0,0 +1,179 @@
1
+ require 'spec_helper'
2
+
3
+ describe AdminModule::Stages do
4
+
5
+ context "api" do
6
+
7
+ let(:stages_list) { ['TstStage1', 'TstStage2'] }
8
+
9
+ let(:stages_page_stub) do
10
+ obj = double('stages_page')
11
+ allow(obj).to receive(:get_stages).and_return(stages_list)
12
+ allow(obj).to receive(:modify).and_return(obj)
13
+ allow(obj).to receive(:delete).and_return(obj)
14
+ allow(obj).to receive(:set_stage_data).and_return(obj)
15
+ allow(obj).to receive(:set_name).and_return(obj)
16
+ allow(obj).to receive(:save)
17
+ obj
18
+ end
19
+
20
+ let(:page_factory) do
21
+ obj = MockPageFactory.new
22
+ obj.login_page = double('login_page')
23
+ obj.stages_page = stages_page_stub
24
+ obj
25
+ end
26
+
27
+ let(:default_comment) { 'no comment' }
28
+
29
+ context "#list" do
30
+ it "returns list of stages" do
31
+ expect(page_factory.stages_page)
32
+ .to receive(:get_stages)
33
+
34
+ sp = AdminModule::Stages.new(page_factory)
35
+ stages = sp.list()
36
+
37
+ expect( stages ).to include 'TstStage1'
38
+ expect( stages ).to include 'TstStage2'
39
+ end
40
+ end
41
+
42
+ context "#rename" do
43
+ context "source name exists and destination name does not exist" do
44
+ it "renames the stage" do
45
+ src = 'TstStage1'
46
+ dest = 'RnTstStage1'
47
+
48
+ expect(page_factory.stages_page)
49
+ .to receive(:modify)
50
+ .with(src)
51
+
52
+ expect(page_factory.stages_page)
53
+ .to receive(:set_name)
54
+ .with(dest)
55
+
56
+ expect(page_factory.stages_page)
57
+ .to receive(:save)
58
+
59
+ sp = AdminModule::Stages.new(page_factory)
60
+ sp.rename(src, dest)
61
+ end
62
+ end
63
+
64
+ context "source name does not exist" do
65
+ it "raises exception" do
66
+ src = 'NotAStage1'
67
+ dest = 'TstStage2'
68
+
69
+ sp = AdminModule::Stages.new(page_factory)
70
+ expect { sp.rename(src, dest) }.to raise_exception /named 'NotAStage1' does not exist/
71
+ end
72
+ end
73
+
74
+ context "destination name already exists" do
75
+ it "raises exception" do
76
+ src = 'TstStage1'
77
+ dest = 'TstStage2'
78
+
79
+ sp = AdminModule::Stages.new(page_factory)
80
+ expect { sp.rename(src, dest) }.to raise_exception /named 'TstStage2' already exists/
81
+ end
82
+ end
83
+ end
84
+
85
+ context "#delete" do
86
+ context "stage exists" do
87
+ it "deletes the stage" do
88
+ src = 'TstStage1'
89
+
90
+ expect(page_factory.stages_page)
91
+ .to receive(:delete)
92
+ .with(src)
93
+
94
+ sp = AdminModule::Stages.new(page_factory)
95
+ sp.delete(src)
96
+ end
97
+ end
98
+
99
+ context "stage does not exist" do
100
+ it "raises exception" do
101
+ src = 'NotAStage1'
102
+
103
+ sp = AdminModule::Stages.new(page_factory)
104
+ expect { sp.delete(src) }.to raise_exception /named 'NotAStage1' does not exist/
105
+ end
106
+ end
107
+ end
108
+
109
+ context "#import" do
110
+ context "file exists" do
111
+ it "imports stage definitions" do
112
+ src_file = spec_data_dir + 'import_stages.yml'
113
+ src = 'TstStage1'
114
+
115
+ #allow(File).to receive(:exists?).and_return(true)
116
+
117
+ expect(page_factory.stages_page)
118
+ .to receive(:modify)
119
+ .with(src)
120
+
121
+ expect(page_factory.stages_page)
122
+ .to receive(:set_stage_data)
123
+
124
+ sp = AdminModule::Stages.new(page_factory)
125
+ sp.import(src_file)
126
+ end
127
+ end
128
+
129
+ context "file does not exist" do
130
+ it "raises exception" do
131
+ src = 'NotAStage1'
132
+
133
+ sp = AdminModule::Stages.new(page_factory)
134
+ expect { sp.import(src) }.to raise_exception /File not found: NotAStage1/
135
+ end
136
+ end
137
+ end
138
+
139
+ context "#export" do
140
+ context "file directory exists" do
141
+ it "exports the stage definitions" do
142
+ dest_file = spec_tmp_dir('stages') + 'export.yml'
143
+ src = 'TstStage1'
144
+
145
+ expect(page_factory.stages_page)
146
+ .to receive(:modify)
147
+ .with(src)
148
+
149
+ expect(page_factory.stages_page)
150
+ .to receive(:get_stage_data)
151
+ .and_return(create_stage_hash('TstStage1'))
152
+
153
+ expect(page_factory.stages_page)
154
+ .to receive(:get_stage_data)
155
+ .and_return(create_stage_hash('TstStage2'))
156
+
157
+ sp = AdminModule::Stages.new(page_factory)
158
+ sp.export(dest_file)
159
+
160
+ expect(File.exist?(dest_file)).to eq true
161
+ end
162
+ end
163
+
164
+ context "file directory does not exist" do
165
+ it "raises exception" do
166
+ dest_path = spec_tmp_dir('stages') + 'not/a/real/dir/export.yml'
167
+
168
+ allow(page_factory.stages_page)
169
+ .to receive(:get_stage_data)
170
+ .and_return(create_stage_hash('TstStage1'))
171
+
172
+ sp = AdminModule::Stages.new(page_factory)
173
+ expect { sp.export(dest_path) }.to raise_exception /No such directory - #{dest_path}/
174
+ end
175
+ end
176
+ end
177
+ end
178
+ end
179
+