admin_module 0.1.7 → 0.1.8
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/Gemfile +2 -0
- data/README.md +7 -0
- data/admin_module.gemspec +3 -1
- data/{bin → exe}/admin_module +0 -0
- data/lib/admin_module.rb +9 -0
- data/lib/admin_module/command/config.rb +20 -0
- data/lib/admin_module/command/gdl.rb +15 -0
- data/lib/admin_module/guideline.rb +8 -0
- data/lib/admin_module/page_factory.rb +43 -2
- data/lib/admin_module/pages.rb +38 -81
- data/lib/admin_module/pages/guideline_page.rb +54 -1
- data/lib/admin_module/pages/guideline_page_400.rb +87 -0
- data/lib/admin_module/pages/guideline_version_page.rb +9 -5
- data/lib/admin_module/pages/guidelines_page.rb +40 -34
- data/lib/admin_module/pages/guidelines_page_400.rb +65 -0
- data/lib/admin_module/pages/guidelines_version_all_page.rb +79 -72
- data/lib/admin_module/pages/guidelines_version_all_page_400.rb +122 -0
- data/lib/admin_module/pages/login_page.rb +2 -2
- data/lib/admin_module/pages/login_page_400.rb +73 -0
- data/lib/admin_module/version.rb +1 -1
- data/spec/data/config/no_ams_version.admin_module +11 -0
- data/spec/data/html/guideline-400.html +2713 -0
- data/spec/data/html/guideline-400_files/BindChildren.js +852 -0
- data/spec/data/html/guideline-400_files/CVlogo.jpg +0 -0
- data/spec/data/html/guideline-400_files/Guideline.js +301 -0
- data/spec/data/html/guideline-400_files/OptimalOutcome.png +0 -0
- data/spec/data/html/guideline-400_files/WebResource(1).axd +561 -0
- data/spec/data/html/guideline-400_files/WebResource.axd +548 -0
- data/spec/data/html/guideline-400_files/styles.css +444 -0
- data/spec/data/html/guideline-400_files/styles2.css +115 -0
- data/spec/data/html/guideline-400_files/tab.css +50 -0
- data/spec/data/html/guideline-400_files/tabpane.js +297 -0
- data/spec/data/html/guideline.html +1809 -0
- data/spec/data/html/guideline_files/BindChildren.js +799 -0
- data/spec/data/html/guideline_files/Guideline.js +300 -0
- data/spec/data/html/guideline_files/LeftMenu.html +0 -0
- data/spec/data/html/guideline_files/MainFrame.html +18 -0
- data/spec/data/html/guideline_files/ScriptResource.axd +3725 -0
- data/spec/data/html/guideline_files/Stylesheet.css +1545 -0
- data/spec/data/html/guideline_files/WebResource(1).axd +0 -0
- data/spec/data/html/guideline_files/WebResource(2).axd +566 -0
- data/spec/data/html/guideline_files/WebResource(3).axd +219 -0
- data/spec/data/html/guideline_files/WebResource.axd +696 -0
- data/spec/data/html/guideline_files/framebar.html +0 -0
- data/spec/data/html/guideline_files/guideline.html +0 -0
- data/spec/data/html/guideline_files/home.png +0 -0
- data/spec/data/html/guideline_files/jquery-ui.css +578 -0
- data/spec/data/html/guideline_files/jquery.js +7 -0
- data/spec/data/html/guideline_files/slidebar.gif +29 -0
- data/spec/data/html/guideline_files/tab.css +49 -0
- data/spec/data/html/guideline_files/tabpane.js +297 -0
- data/spec/data/html/guidelines-400.html +368 -0
- data/spec/data/html/guidelines-400_files/CVlogo.jpg +0 -0
- data/spec/data/html/guidelines-400_files/EditListSearchHelper.js +141 -0
- data/spec/data/html/guidelines-400_files/OptimalOutcome.png +0 -0
- data/spec/data/html/guidelines-400_files/WebResource(1).axd +561 -0
- data/spec/data/html/guidelines-400_files/WebResource.axd +548 -0
- data/spec/data/html/guidelines-400_files/menu.css +29 -0
- data/spec/data/html/guidelines-400_files/menu.js +48 -0
- data/spec/data/html/guidelines-400_files/shadow.gif +0 -0
- data/spec/data/html/guidelines-400_files/styles.css +444 -0
- data/spec/data/html/guidelines-400_files/styles2.css +115 -0
- data/spec/data/html/guidelines.html +217 -0
- data/spec/data/html/guidelines_files/EditListSearchHelper.js +123 -0
- data/spec/data/html/guidelines_files/ScriptResource.axd +3725 -0
- data/spec/data/html/guidelines_files/Stylesheet.css +1545 -0
- data/spec/data/html/guidelines_files/jquery-ui.css +578 -0
- data/spec/data/html/login.aspx.html +293 -0
- data/spec/data/html/login.aspx_files/ScriptResource.axd +3332 -0
- data/spec/data/html/login.aspx_files/Stylesheet.css +1545 -0
- data/spec/data/html/login.aspx_files/jquery-ui.css +578 -0
- data/spec/data/html/login.aspx_files/jquery.js +7 -0
- data/spec/data/html/login400.aspx.html +191 -0
- data/spec/data/html/login400.aspx_files/WebResource(1).axd +561 -0
- data/spec/data/html/login400.aspx_files/WebResource.axd +548 -0
- data/spec/data/html/login400.aspx_files/styles.css +444 -0
- data/spec/data/html/version_all_guidelines-400.html +702 -0
- data/spec/data/html/version_all_guidelines-400_files/CVlogo.jpg +0 -0
- data/spec/data/html/version_all_guidelines-400_files/Calendar.js +521 -0
- data/spec/data/html/version_all_guidelines-400_files/OptimalOutcome.png +0 -0
- data/spec/data/html/version_all_guidelines-400_files/TwoSelects.js +300 -0
- data/spec/data/html/version_all_guidelines-400_files/menu.css +29 -0
- data/spec/data/html/version_all_guidelines-400_files/menu.js +48 -0
- data/spec/data/html/version_all_guidelines-400_files/shadow.gif +0 -0
- data/spec/data/html/version_all_guidelines-400_files/styles(1).css +134 -0
- data/spec/data/html/version_all_guidelines-400_files/styles.css +444 -0
- data/spec/data/html/version_all_guidelines-400_files/styles2.css +115 -0
- data/spec/data/html/version_all_guidelines.html +560 -0
- data/spec/data/html/version_all_guidelines_files/Calendar.js +521 -0
- data/spec/data/html/version_all_guidelines_files/ScriptResource.axd +3725 -0
- data/spec/data/html/version_all_guidelines_files/Stylesheet.css +1545 -0
- data/spec/data/html/version_all_guidelines_files/TwoSelects.js +304 -0
- data/spec/data/html/version_all_guidelines_files/jquery-ui.css +578 -0
- data/spec/lib/admin_module/command/config_spec.rb +27 -0
- data/spec/lib/admin_module/command/gdl_spec.rb +31 -0
- data/spec/lib/admin_module/configuration_spec.rb +47 -0
- data/spec/lib/admin_module/guideline_spec.rb +26 -0
- data/spec/lib/admin_module/page_factory_spec.rb +72 -0
- data/spec/lib/admin_module/pages/guideline_page_400_spec.rb +51 -0
- data/spec/lib/admin_module/pages/guideline_page_spec.rb +50 -0
- data/spec/lib/admin_module/pages/guidelines_page_400_spec.rb +92 -0
- data/spec/lib/admin_module/pages/guidelines_page_spec.rb +91 -0
- data/spec/lib/admin_module/pages/guidelines_version_all_page_400_spec.rb +102 -0
- data/spec/lib/admin_module/pages/guidelines_version_all_page_spec.rb +105 -0
- data/spec/lib/admin_module/pages/login_page_400_spec.rb +42 -0
- data/spec/lib/admin_module/pages/login_page_spec.rb +33 -0
- data/spec/support/html_spec.rb +26 -0
- data/spec/support/mocks.rb +23 -0
- metadata +191 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 151be951731550875de370d3b775eab9cc9656d9
|
|
4
|
+
data.tar.gz: c8ccdecaf21e25bbe7a6ad5ff6a36fcf3ede651c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ceb415bff96ba84482428aa52d51448c99965c1f76393fc3f1f154408d684d74b39254a4a74cd9c8fb7aa970a6c40b856c8f615f1ee50c648c067af57e382362
|
|
7
|
+
data.tar.gz: 0f896e696fd4528c1dc2fa72ed2c8d6ebd9afd2b48d92896cc71ebf9d1577e4ae9619d8211df04e20ef74901f7c1fcf6dbc9e3cd2a6ce627a8634a61089643ed
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -48,6 +48,7 @@ is listed here.
|
|
|
48
48
|
admin_module config help [COMMAND] # Describe subcommands or one specific subcommand
|
|
49
49
|
admin_module config defcomment '<comment>' # show or set the default comment
|
|
50
50
|
admin_module config defenv <envname> # show or set the default environment
|
|
51
|
+
admin_module config amsversion <version> # show or set the AMS admin module version
|
|
51
52
|
admin_module config init <filedir> # create a configuration file
|
|
52
53
|
admin_module config timeout <seconds> # show or set the browser timeout period
|
|
53
54
|
admin_module config show [CATEGORY] # display configuration values for [CATEGORY]
|
|
@@ -272,6 +273,12 @@ interface to the actual Guideline page object.
|
|
|
272
273
|
page, select a guideline, then go to the _GuidelineDetails_ page before it can
|
|
273
274
|
manipulate a guideline, say, to change its name.
|
|
274
275
|
|
|
276
|
+
## Testing
|
|
277
|
+
|
|
278
|
+
The specs are tested with the latest version of Chromium (44.0.2403.89) and
|
|
279
|
+
[chromedriver](http://chromedriver.storage.googleapis.com/index.html?path=2.19/)] (2.19)
|
|
280
|
+
at this time.
|
|
281
|
+
|
|
275
282
|
## LICENSE
|
|
276
283
|
|
|
277
284
|
AdminModule is licensed under the MIT license.
|
data/admin_module.gemspec
CHANGED
|
@@ -13,8 +13,9 @@ Gem::Specification.new do |spec|
|
|
|
13
13
|
spec.homepage = "https://github.com/jmcaffee/admin_module"
|
|
14
14
|
spec.license = "MIT"
|
|
15
15
|
|
|
16
|
+
spec.bindir = 'exe'
|
|
16
17
|
spec.files = `git ls-files`.split($/)
|
|
17
|
-
spec.executables = spec.files.grep(%r{^
|
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
18
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
20
|
spec.require_paths = ["lib"]
|
|
20
21
|
|
|
@@ -31,4 +32,5 @@ Gem::Specification.new do |spec|
|
|
|
31
32
|
spec.add_runtime_dependency "page-object"
|
|
32
33
|
spec.add_runtime_dependency "thor"
|
|
33
34
|
spec.add_runtime_dependency "ktutils"
|
|
35
|
+
spec.add_runtime_dependency "browser_loader"
|
|
34
36
|
end
|
data/{bin → exe}/admin_module
RENAMED
|
File without changes
|
data/lib/admin_module.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require "browser_loader"
|
|
1
2
|
require "admin_module/version"
|
|
2
3
|
require 'admin_module/config_helper'
|
|
3
4
|
require "admin_module/cli"
|
|
@@ -123,10 +124,14 @@ module AdminModule
|
|
|
123
124
|
attr_accessor :xmlmaps
|
|
124
125
|
attr_accessor :aliases
|
|
125
126
|
attr_accessor :page_urls
|
|
127
|
+
attr_accessor :ams_version
|
|
126
128
|
|
|
127
129
|
# Browser timeout in seconds. Default: 360 (6 mins).
|
|
128
130
|
attr_accessor :browser_timeout
|
|
129
131
|
|
|
132
|
+
# Browser download directory. Default: none
|
|
133
|
+
attr_accessor :download_dir
|
|
134
|
+
|
|
130
135
|
|
|
131
136
|
def initialize
|
|
132
137
|
reset
|
|
@@ -158,7 +163,11 @@ module AdminModule
|
|
|
158
163
|
'ParameterPage' => "/admin/decision/parameter.aspx",
|
|
159
164
|
}
|
|
160
165
|
|
|
166
|
+
@ams_version = "4.4.0"
|
|
167
|
+
|
|
161
168
|
@browser_timeout = 360
|
|
169
|
+
|
|
170
|
+
@download_dir = ""
|
|
162
171
|
end
|
|
163
172
|
|
|
164
173
|
##
|
|
@@ -290,6 +290,26 @@ module AdminModule
|
|
|
290
290
|
end
|
|
291
291
|
end
|
|
292
292
|
|
|
293
|
+
|
|
294
|
+
desc "amsversion <version>", "show or set the admin module version"
|
|
295
|
+
long_desc <<-LD
|
|
296
|
+
Show or set the AMS Admin Module version being used.
|
|
297
|
+
|
|
298
|
+
The default version will be 4.4.0 when no version is configured.
|
|
299
|
+
LD
|
|
300
|
+
def amsversion(version=nil)
|
|
301
|
+
if version.nil?
|
|
302
|
+
with_loaded_config do
|
|
303
|
+
say "ams version: #{AdminModule.configuration.ams_version}"
|
|
304
|
+
end
|
|
305
|
+
return
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
with_loaded_config(true) do
|
|
309
|
+
AdminModule.configuration.ams_version = version
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
293
313
|
private
|
|
294
314
|
|
|
295
315
|
def with_loaded_config save = false
|
|
@@ -66,6 +66,21 @@ module AdminModule
|
|
|
66
66
|
|
|
67
67
|
client.logout
|
|
68
68
|
end
|
|
69
|
+
|
|
70
|
+
desc "download <guideline> <to_path>",
|
|
71
|
+
"Download guideline XML to destination path (includes filename)"
|
|
72
|
+
long_desc <<-LD
|
|
73
|
+
Download a guideline's XML and save it to a specified path and filename.
|
|
74
|
+
|
|
75
|
+
With -e <env>, sets the environment to work with.
|
|
76
|
+
LD
|
|
77
|
+
def download(guideline, to_path)
|
|
78
|
+
gdl = client.guideline
|
|
79
|
+
|
|
80
|
+
gdl.download(guideline, to_path)
|
|
81
|
+
|
|
82
|
+
client.logout
|
|
83
|
+
end
|
|
69
84
|
end # Gdl
|
|
70
85
|
end
|
|
71
86
|
end # AdminModule
|
|
@@ -35,6 +35,14 @@ module AdminModule
|
|
|
35
35
|
.upload(xmlfile.expand_path, comments_or_default(comments))
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
def download gdlname, xmlfile
|
|
39
|
+
xmlfile = Pathname(xmlfile)
|
|
40
|
+
|
|
41
|
+
page = guidelines_page
|
|
42
|
+
.open_guideline(gdlname)
|
|
43
|
+
.download(xmlfile.expand_path)
|
|
44
|
+
end
|
|
45
|
+
|
|
38
46
|
def version gdls, comments = nil
|
|
39
47
|
gdls = Array(gdls)
|
|
40
48
|
page = guidelines_page
|
|
@@ -12,12 +12,53 @@ module AdminModule
|
|
|
12
12
|
class PageFactory
|
|
13
13
|
include AdminModule::Pages
|
|
14
14
|
|
|
15
|
+
def default_ams_version
|
|
16
|
+
"4.4.0"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def ams_version
|
|
20
|
+
AdminModule.configuration.ams_version
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def running_older_version?
|
|
24
|
+
Gem::Version.new(ams_version) < Gem::Version.new(default_ams_version)
|
|
25
|
+
end
|
|
26
|
+
|
|
15
27
|
def login_page(goto_page = true)
|
|
16
|
-
|
|
28
|
+
case running_older_version?
|
|
29
|
+
when true
|
|
30
|
+
return Pages::LoginPage400.new(browser, goto_page)
|
|
31
|
+
else
|
|
32
|
+
return Pages::LoginPage.new(browser, goto_page)
|
|
33
|
+
end
|
|
17
34
|
end
|
|
18
35
|
|
|
36
|
+
def guidelines_version_all_page(goto_page = true)
|
|
37
|
+
case running_older_version?
|
|
38
|
+
when true
|
|
39
|
+
return Pages::GuidelinesVersionAllPage400.new(browser, goto_page)
|
|
40
|
+
else
|
|
41
|
+
return Pages::GuidelinesVersionAllPage.new(browser, goto_page)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
19
46
|
def guidelines_page(goto_page = true)
|
|
20
|
-
|
|
47
|
+
case running_older_version?
|
|
48
|
+
when true
|
|
49
|
+
return Pages::GuidelinesPage400.new(browser, goto_page)
|
|
50
|
+
else
|
|
51
|
+
return Pages::GuidelinesPage.new(browser, goto_page)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def guideline_page(goto_page = false)
|
|
56
|
+
case running_older_version?
|
|
57
|
+
when true
|
|
58
|
+
return Pages::GuidelinePage400.new(browser, goto_page)
|
|
59
|
+
else
|
|
60
|
+
return Pages::GuidelinePage.new(browser, goto_page)
|
|
61
|
+
end
|
|
21
62
|
end
|
|
22
63
|
|
|
23
64
|
def rulesets_page(goto_page = true)
|
data/lib/admin_module/pages.rb
CHANGED
|
@@ -10,9 +10,13 @@ require 'watir-webdriver'
|
|
|
10
10
|
require 'ktutils/os'
|
|
11
11
|
require 'admin_module/pages/select_list_syncable'
|
|
12
12
|
require 'admin_module/pages/login_page'
|
|
13
|
+
require 'admin_module/pages/login_page_400'
|
|
13
14
|
require 'admin_module/pages/guidelines_page'
|
|
15
|
+
require 'admin_module/pages/guidelines_page_400'
|
|
14
16
|
require 'admin_module/pages/guidelines_version_all_page'
|
|
17
|
+
require 'admin_module/pages/guidelines_version_all_page_400'
|
|
15
18
|
require 'admin_module/pages/guideline_page'
|
|
19
|
+
require 'admin_module/pages/guideline_page_400'
|
|
16
20
|
require 'admin_module/pages/guideline_version_page'
|
|
17
21
|
require 'admin_module/pages/lock_definitions_page'
|
|
18
22
|
require 'admin_module/pages/lock_definition_page'
|
|
@@ -34,96 +38,49 @@ require 'admin_module/pages/snapshot_detail_page'
|
|
|
34
38
|
require 'admin_module/pages/workflow_task_page'
|
|
35
39
|
require 'admin_module/pages/workflow_tasks_page'
|
|
36
40
|
require 'admin_module/pages/ppms_page'
|
|
41
|
+
require 'browser_loader'
|
|
37
42
|
|
|
38
43
|
module AdminModule::Pages
|
|
39
44
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
class BrowserInst
|
|
46
|
+
@@browser = nil
|
|
47
|
+
|
|
48
|
+
##
|
|
49
|
+
# Return a configured browser object. If a browser has already been created,
|
|
50
|
+
# this returns the existing browser.
|
|
51
|
+
#
|
|
52
|
+
# An +at_exit+ proc is created to close the browser when the program exits.
|
|
53
|
+
|
|
54
|
+
def self.browser
|
|
55
|
+
if ! open_browser?
|
|
56
|
+
BrowserLoader::Factory.browser_timeout = AdminModule.configuration.browser_timeout
|
|
57
|
+
BrowserLoader::Factory.download_dir = AdminModule.configuration.download_dir unless AdminModule.configuration.download_dir.empty?
|
|
58
|
+
@@browser = BrowserLoader::Factory.build
|
|
59
|
+
|
|
60
|
+
at_exit do
|
|
61
|
+
unless ! open_browser?
|
|
62
|
+
# Make sure every webdriver window is closed.
|
|
63
|
+
@@browser.windows.each { |w| w.close rescue nil }
|
|
64
|
+
@@browser.close rescue nil
|
|
65
|
+
end
|
|
66
|
+
end
|
|
52
67
|
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
@browser
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
private
|
|
59
68
|
|
|
60
|
-
|
|
61
|
-
if Ktutils::OS.windows?
|
|
62
|
-
# Downloaded from http://chromium.woolyss.com/
|
|
63
|
-
# Package: Chromium Package (32-bit)
|
|
64
|
-
# Version: 37.0.2011.0 (272392)
|
|
65
|
-
chromium_exe = ENV["chrome_browser_path"]
|
|
66
|
-
unless (! chromium_exe.nil? && ! chromium_exe.empty? && File.exist?(chromium_exe))
|
|
67
|
-
raise "chrome_browser_path environment variable not set"
|
|
68
|
-
end
|
|
69
|
-
#chromium_exe = File.absolute_path(File.join(__FILE__, '../../../bin/chrome-win32/chrome.exe'))
|
|
70
|
-
chromium_exe
|
|
71
|
-
else
|
|
72
|
-
chromium_exe = `which chromium-browser`.chomp
|
|
69
|
+
@@browser
|
|
73
70
|
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def configure_browser
|
|
77
|
-
# We must clear out any environmental proxy or Selenium fails
|
|
78
|
-
# to connect to the local application.
|
|
79
|
-
ENV['http_proxy'] = nil
|
|
80
71
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
caps['chromeOptions'] = {'binary' => chromium_exe }
|
|
84
|
-
#caps['chromeOptions'] = {'binary' => '/opt/bin/test/chrome-27.0.1453.94.exe' }
|
|
85
|
-
# See http://peter.sh/experiments/chromium-command-line-switches/ for a list of available switches.
|
|
86
|
-
# See https://sites.google.com/a/chromium.org/chromedriver/capabilities for details on setting ChromeDriver caps.
|
|
87
|
-
|
|
88
|
-
# NOTE: The only way I've found to stop the EULA from being displayed is to
|
|
89
|
-
# use the user-data-dir switch and point to a dir where chrome can put the
|
|
90
|
-
# data indicating it (EULA) has already been accepted.
|
|
91
|
-
|
|
92
|
-
# Store chrome profile at test/chrome-data.
|
|
93
|
-
# user_data_dir must be expanded to a full (absolute) path. A relative path
|
|
94
|
-
# results in chromedriver failing to start.
|
|
95
|
-
user_data_dir = File.expand_path('test/chrome-data')
|
|
96
|
-
#puts "*** user_data_dir location: #{user_data_dir}"
|
|
97
|
-
|
|
98
|
-
# Create the data dir if it doesn't exist (or chromedriver fails to start).
|
|
99
|
-
unless File.exists?(user_data_dir) and File.directory?(user_data_dir)
|
|
100
|
-
FileUtils.makedirs user_data_dir
|
|
72
|
+
def self.open_browser?
|
|
73
|
+
return (! @@browser.nil? && @@browser.exist? )
|
|
101
74
|
end
|
|
75
|
+
end
|
|
102
76
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
switches = %w[--ignore-certificate-errors --disable-popup-blocking --disable-translate --no-first-run --log-level=3]
|
|
109
|
-
switches << "--user-data-dir=#{user_data_dir}"
|
|
110
|
-
|
|
111
|
-
proxy_port = ENV['BROWSER_PROXY_PORT']
|
|
112
|
-
unless proxy_port.nil? || proxy_port.empty?
|
|
113
|
-
proxy_connection_string = "socks://localhost:#{proxy_port}"
|
|
114
|
-
switches << "--proxy-server=#{proxy_connection_string}"
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
# Create a client so we can adjust the timeout period.
|
|
118
|
-
client = Selenium::WebDriver::Remote::Http::Default.new
|
|
119
|
-
|
|
120
|
-
# Set the browser timeout. Default is 60 seconds.
|
|
121
|
-
client.timeout = AdminModule.configuration.browser_timeout
|
|
77
|
+
##
|
|
78
|
+
# Return a configured browser object. If a browser has already been created,
|
|
79
|
+
# this returns the existing browser.
|
|
80
|
+
#
|
|
81
|
+
# An +at_exit+ proc is created to close the browser when the program exits.
|
|
122
82
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
:http_client => client,
|
|
126
|
-
:service_log_path => user_data_dir + '/chromedriver.out',
|
|
127
|
-
:desired_capabilities => caps
|
|
83
|
+
def browser
|
|
84
|
+
BrowserInst.browser
|
|
128
85
|
end
|
|
129
86
|
end
|
|
@@ -28,7 +28,60 @@ module AdminModule::Pages
|
|
|
28
28
|
self.add_version_button
|
|
29
29
|
|
|
30
30
|
# Return the next page object.
|
|
31
|
-
|
|
31
|
+
AdminModule::ConfigHelper.page_factory.guideline_version_page(false)
|
|
32
|
+
#GuidelineVersionPage.new(@browser, false)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def download(dest_file_path)
|
|
36
|
+
versions
|
|
37
|
+
|
|
38
|
+
# Get the first download link.
|
|
39
|
+
dl_link = link_elements.find do |e|
|
|
40
|
+
e.text == "Download"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
gdl_id = id_from_href(dl_link.href)
|
|
44
|
+
gdl_version = version_from_href(dl_link.href)
|
|
45
|
+
|
|
46
|
+
# Click the download
|
|
47
|
+
dl_link.click
|
|
48
|
+
|
|
49
|
+
default_filename = "gdl#{gdl_id}.#{gdl_version}.xml"
|
|
50
|
+
downloaded_file = Pathname(AdminModule.configuration.download_dir) + default_filename
|
|
51
|
+
|
|
52
|
+
i = 0
|
|
53
|
+
while !downloaded_file.exist?
|
|
54
|
+
i += 1
|
|
55
|
+
# Wait for download to complete
|
|
56
|
+
sleep 5
|
|
57
|
+
|
|
58
|
+
break if i > 30
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
FileUtils.mv downloaded_file, dest_file_path
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
private
|
|
65
|
+
|
|
66
|
+
def id_from_href href
|
|
67
|
+
str = href.split("?")[1]
|
|
68
|
+
str = str.split("&")[0]
|
|
69
|
+
str = str.split("=")[1]
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def version_from_href href
|
|
73
|
+
str = href.split("?")[1]
|
|
74
|
+
str = str.split("&")[1]
|
|
75
|
+
str = str.split("=")[1]
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def latest_version
|
|
79
|
+
doc = Nokogiri::HTML(@browser.html)
|
|
80
|
+
# The specific version notes TD element:
|
|
81
|
+
#version_notes_row_1 = doc.css("#dgrVersions > tbody > tr:nth-child(2) > td:nth-child(13)")
|
|
82
|
+
|
|
83
|
+
# The entire 1st version row (TR) element:
|
|
84
|
+
version_row = doc.css("#dgrVersions > tbody > tr:nth-child(2)")
|
|
32
85
|
end
|
|
33
86
|
end
|
|
34
87
|
end # module Pages
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
##############################################################################
|
|
2
|
+
# File:: guideline_page_400.rb
|
|
3
|
+
# Purpose:: Guideline page for AdminModule
|
|
4
|
+
#
|
|
5
|
+
# Author:: Jeff McAffee 2015-10-08
|
|
6
|
+
#
|
|
7
|
+
##############################################################################
|
|
8
|
+
require 'page-object'
|
|
9
|
+
|
|
10
|
+
module AdminModule::Pages
|
|
11
|
+
class GuidelinePage400
|
|
12
|
+
include PageObject
|
|
13
|
+
|
|
14
|
+
#page_url(:get_dynamic_url)
|
|
15
|
+
|
|
16
|
+
def get_dynamic_url
|
|
17
|
+
AdminModule.configuration.base_url + "/admin/decision/guideline.aspx"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
link(:versions,
|
|
21
|
+
text: 'Versions')
|
|
22
|
+
|
|
23
|
+
button(:add_version_button,
|
|
24
|
+
id: 'cmdAddVersion')
|
|
25
|
+
|
|
26
|
+
def add_version
|
|
27
|
+
self.versions
|
|
28
|
+
self.add_version_button
|
|
29
|
+
|
|
30
|
+
# Return the next page object.
|
|
31
|
+
AdminModule::ConfigHelper.page_factory.guideline_version_page(false)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def download(dest_file_path)
|
|
35
|
+
versions
|
|
36
|
+
|
|
37
|
+
# Get the first download link.
|
|
38
|
+
dl_link = link_elements.find do |e|
|
|
39
|
+
e.text == "Download"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
gdl_id = id_from_href(dl_link.href)
|
|
43
|
+
gdl_version = version_from_href(dl_link.href)
|
|
44
|
+
|
|
45
|
+
# Click the download
|
|
46
|
+
dl_link.click
|
|
47
|
+
|
|
48
|
+
default_filename = "gdl#{gdl_id}.#{gdl_version}.xml"
|
|
49
|
+
downloaded_file = Pathname(AdminModule.configuration.download_dir) + default_filename
|
|
50
|
+
|
|
51
|
+
i = 0
|
|
52
|
+
while !downloaded_file.exist?
|
|
53
|
+
i += 1
|
|
54
|
+
# Wait for download to complete
|
|
55
|
+
sleep 5
|
|
56
|
+
|
|
57
|
+
break if i > 30
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
FileUtils.mv downloaded_file, dest_file_path
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
def id_from_href href
|
|
66
|
+
str = href.split("?")[1]
|
|
67
|
+
str = str.split("&")[0]
|
|
68
|
+
str = str.split("=")[1]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def version_from_href href
|
|
72
|
+
str = href.split("?")[1]
|
|
73
|
+
str = str.split("&")[1]
|
|
74
|
+
str = str.split("=")[1]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def latest_version
|
|
78
|
+
doc = Nokogiri::HTML(@browser.html)
|
|
79
|
+
# The specific version notes TD element:
|
|
80
|
+
#version_notes_row_1 = doc.css("#dgrVersions > tbody > tr:nth-child(2) > td:nth-child(13)")
|
|
81
|
+
|
|
82
|
+
# The entire 1st version row (TR) element:
|
|
83
|
+
version_row = doc.css("#dgrVersions > tbody > tr:nth-child(2)")
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end # module Pages
|
|
87
|
+
|