ole-qa-framework 3.4.6 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjEyMTA4YTJmMGUzYWU3M2FkMDczZGI3MWVjNWUxN2RhZmUxNTEzMg==
4
+ ODlmZmJiYmUwYjkzMzg1MzAyODk1MzA5OTMzYjYwYzhhODJiNTE5Yg==
5
5
  data.tar.gz: !binary |-
6
- MWQ0ZWM2MDQ2YTczZmZlZTFmNTA4ZTkzNzQ2YTkwZjdjYmM4M2IxNA==
6
+ MTBlNTAzMzI4NTIzMTQwNjAxY2FjODgyOTBjNjVhOGMzNTdmNjdlZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDFlZjZjMWE0NmYyOTZmZDYzOGM5YmM3Y2Q2YjI4MWZmZTBjMWIyM2VjZWZl
10
- MzE3MmYwM2JjNjQ0NjIxMjg5MzNkMDVlYmE1YWQzMTZkNGRlZmRlZmJhMDE5
11
- N2JmMjQ2MWNhYTYxNmMyZWM2YTU1Yzk5ZTk4YjdjNzBhMjM5YzI=
9
+ YWIwNGQ1NjFkYzQyNDE5OTM2MjU5OTZkYTk3ZmIxNjk2NDY0YTAyMmQwY2Qx
10
+ ZjE3NjZiNzAyZGUxNzFiMTAxZmI0ZjA1N2ZkMDljYTI4YjMyMmNlMGIwZDZh
11
+ NmIyZTRlNzYzOGQzOWI4MmQxZDc5NDQ1MjUwOWEzZjUzMDE3Nzc=
12
12
  data.tar.gz: !binary |-
13
- MmY1N2MzZDJiNjA4Yjg1MWRkNGRjODNlZTEzYjgwMDU4MTg0MTNlYjQzMWRh
14
- OTExOGQ2ODE5ZjdlZWRlMTcxNWRmZTIxZGRlYWQwMTYzYTI0MTU5Nzc5MjNj
15
- MzcwYzJlZmQyYzMyMDViNTJjYjFiMjEzODQzMTA0NWFlNjQ1YjI=
13
+ NzM2YTFkMDViYmU3OTQwMjg3N2M1NjhlY2E0MjcxM2VjZjU5YzNjMTVjNjUy
14
+ YjkzZmJhZWUwNjYwMzFlZDRhMDM3OTcxY2EwYmE3MGRhM2M1NGJmN2I1MjI5
15
+ MDI0YzVlOWUxN2NmMGJhM2ZkNTk3YWMzZGQ4OWM1MjY2YjMyNGY=
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ### v3.5.0 - 2013/12/09
2
+
3
+ * Docstore
4
+ * Added .docstore_url (.docstore) method to Session
5
+ * Added :docstore_url: to all config files
6
+ * Added Pages:
7
+ * Search
8
+ * Search Results
9
+ * Marc Search Results
10
+
1
11
  ### v3.4.6 - 2013/12/05
2
12
 
3
13
  * OLEFS Invoice
@@ -1,6 +1,7 @@
1
1
  # Default options for using development environment.
2
2
  ---
3
3
  :url: http://dev.ole.kuali.org/
4
+ :docstore_url: http://dev.docstore.ole.kuali.org/
4
5
  :headless?: true
5
6
  :implicit_wait: 0
6
7
  :explicit_wait: 15
@@ -1,6 +1,7 @@
1
1
  # Default options for non-development use.
2
2
  ---
3
3
  :url: http://tst.ole.kuali.org/
4
+ :docstore_url: http://tst.docstore.ole.kuali.org/
4
5
  :headless?: true
5
6
  :implicit_wait: 0
6
7
  :explicit_wait: 15
@@ -1,6 +1,7 @@
1
1
  # Default options for using development environment.
2
2
  ---
3
3
  :url: http://dev.ole.kuali.org/
4
+ :docstore_url: http://dev.docstore.ole.kuali.org/
4
5
  :headless?: true
5
6
  :implicit_wait: 0
6
7
  :explicit_wait: 15
@@ -0,0 +1,54 @@
1
+ # Copyright 2005-2013 The Kuali Foundation
2
+ #
3
+ # Licensed under the Educational Community License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at:
6
+ #
7
+ # http://www.opensource.org/licenses/ecl2.php
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module OLE_QA::Framework::DocStore
16
+ # The base page object for a given set of DocStore search results.
17
+ # @note Elements in the search results will be vastly different depending on the
18
+ # type of search performed. If it matters, then be sure to use the subclass
19
+ # for the type of search results you are expecting.
20
+ class Results < OLE_QA::Framework::Page
21
+ def initialize(ole_session)
22
+ url = ole_session.docstore_url + 'discovery.do'
23
+ super(ole_session, url)
24
+ end
25
+
26
+ def set_elements
27
+ super
28
+ element(:revise_search_button) {b.button(:id => 'Back')}
29
+ element(:new_search_button) {b.button(:name => 'newSearch')}
30
+ element(:page_field) {b.text_field(:id => 'pageSpinner')}
31
+ element(:go_to_page_button) {b.button(:id => 'gotoPage')}
32
+ element(:page_list) {b.div(:id => 'pageList').b}
33
+ element(:no_results) {b.div(:id => 'demo2').b(:text => /^([Nn]o).*(results)/)}
34
+ end
35
+
36
+ def wait_for_elements
37
+ super
38
+ @wait_on << :revise_search_button
39
+ end
40
+
41
+ def set_functions
42
+ super
43
+ # Title bar for a given record, ordered by appearance on the screen (1-based).
44
+ # @note Not reliable as a source of textual information! If there is any highlighting
45
+ # on this element, the text will be broken up by a <span></span> wherever the
46
+ # highlighting is applied.
47
+ function(:title_bar) { |which| which -= 1 ; b.h3(:class => 'expand', :index => "#{which}").a(:title => 'Expand/Collapse')}
48
+ # Check if results are present and return true or false.
49
+ function(:any_results?) { no_results.present? ? false : true}
50
+ # Check if there is more than one page of results listed and return true or false.
51
+ function(:multiple_pages?) { page_field.present? }
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,40 @@
1
+ # Copyright 2005-2013 The Kuali Foundation
2
+ #
3
+ # Licensed under the Educational Community License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at:
6
+ #
7
+ # http://www.opensource.org/licenses/ecl2.php
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module OLE_QA::Framework::DocStore
16
+ # OLE Document Store Search Results for a Marc Bibliographic Record search.
17
+ class Marc_Results < Results
18
+
19
+ def set_elements
20
+ super
21
+
22
+ end
23
+
24
+ def set_functions
25
+ super
26
+ # Return a 'view' button by a given (1-based) numerical value.
27
+ function(:view_button) { |which = 1| which -= 1 ; b.button(:value => /View/, :index => which)}
28
+ # Return an 'edit' button by a given (1-based) numerical value.
29
+ function(:edit_button) { |which = 1| which -= 1 ; b.button(:name => 'Edit', :index => which)}
30
+ # Return an 'instance' link by a given (1-based) numerical value.
31
+ function(:instance_link) { |which = 1| which -= 1 ; b.b(:text => /Instance/, :index => which).parent}
32
+ # Return a field value (other than title) in the results.
33
+ # @note This just returns the object for the value. Interrogate that object with .present? to confirm
34
+ # its existence in the search results.
35
+ function(:value_in_results) { |which| b.dd(:text => /#{which}/) }
36
+ # Return an instance link containing the given text.
37
+ function(:instance_text) { |which| b.b(:text => /#{which}/).parent }
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,74 @@
1
+ # Copyright 2005-2013 The Kuali Foundation
2
+ #
3
+ # Licensed under the Educational Community License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at:
6
+ #
7
+ # http://www.opensource.org/licenses/ecl2.php
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module OLE_QA::Framework::DocStore
16
+ # The search page for the OLE Document Store.
17
+ class Search < OLE_QA::Framework::Page
18
+ def initialize(ole_session)
19
+ url = ole_session.docstore_url + 'discovery.do?searchType=newSearch'
20
+ super(ole_session, url)
21
+ end
22
+
23
+ def set_elements
24
+ super
25
+ element(:category_selector) {b.select_list(:id => 'documentCategory')}
26
+ element(:type_selector) {b.select_list(:id => 'documentType')}
27
+ element(:format_selector) {b.select_list(:id => 'documentFormat')}
28
+ element(:sort_selector) {b.select_list(:id => 'sorting_order')}
29
+ element(:search_field_1) {b.text_field(:name => 'st')}
30
+ element(:search_field_2) {b.text_field(:name => 'st1')}
31
+ element(:search_field_3) {b.text_field(:name => 'st2')}
32
+ element(:search_field_4) {b.text_field(:name => 'st3')}
33
+ element(:search_field_5) {b.text_field(:name => 'st4')}
34
+ element(:scope_selector_1) {b.select_list(:name => 'searchScope')}
35
+ element(:scope_selector_2) {b.select_list(:name => 'searchScope1')}
36
+ element(:scope_selector_3) {b.select_list(:name => 'searchScope2')}
37
+ element(:scope_selector_4) {b.select_list(:name => 'searchScope3')}
38
+ element(:scope_selector_5) {b.select_list(:name => 'searchScope4')}
39
+ element(:field_selector_1) {b.select_list(:name => 'searchField')}
40
+ element(:field_selector_2) {b.select_list(:name => 'searchField1')}
41
+ element(:field_selector_3) {b.select_list(:name => 'searchField2')}
42
+ element(:field_selector_4) {b.select_list(:name => 'searchField3')}
43
+ element(:field_selector_5) {b.select_list(:name => 'searchField4')}
44
+ element(:search_button) {b.button(:class => 'searchButton')}
45
+ element(:clear_button) {b.button(:name => 'Clear')}
46
+ end
47
+
48
+ def wait_for_elements
49
+ super
50
+ @wait_on << :search_field_1
51
+ @wait_on << :search_field_5
52
+ @wait_on << :search_button
53
+ end
54
+
55
+ def set_functions
56
+ super
57
+ # The 'AND' join operator option for a given search line.
58
+ # @note Integer should be between 1 and 3, corresponding to the operator line.
59
+ # Each operator line affects the next search query line in sequence,
60
+ # (i.e., .and_option(1) affects search_field_2)
61
+ function(:and_option) { |which = 1| which -= 1 ; b.radio(:name => "operator#{which}", :index => 0)}
62
+
63
+ # The 'OR' join operator option for a given search line.
64
+ # Each operator line affects the next search query line in sequence,
65
+ # (i.e., .or_option(1) affects search_field_2)
66
+ function(:or_option) { |which = 1| which -= 1 ; b.radio(:name => "operator#{which}", :index => 1)}
67
+
68
+ # The 'NOT' join operator option for a given search line.
69
+ # Each operator line affects the next search query line in sequence,
70
+ # (i.e., .not_option(1) affects search_field_2)
71
+ function(:not_option) { |which = 1| which -= 1 ; b.radio(:name => "operator#{which}", :index => 2)}
72
+ end
73
+ end
74
+ end
@@ -61,16 +61,18 @@ module OLE_QA
61
61
  # If pages or elements need to be inherited by subclasses, put them in a (foo)/common/ directory.
62
62
  # Subobject directories (foo)/subobjects/ should be loaded before object directories (foo)/objects/ for inheritance.
63
63
  load_libs("/common/")
64
+ load_libs("/docstore/common/")
64
65
  load_libs("/olefs/common/")
65
66
  load_libs("/olels/common/")
66
67
  load_libs("/olefs/subobjects/")
67
68
  load_libs("/olels/subobjects/")
68
69
  load_libs("/olefs/objects/")
69
70
  load_libs("/olels/objects/")
71
+ load_libs("/docstore/pages/")
70
72
  load_libs("/olefs/pages/")
71
73
  load_libs("/olels/pages/")
72
74
 
73
- # load_libs("/docstore/")
75
+
74
76
 
75
77
  # Initialize wait variables to 0 for now. They will be set programatically in {OLE_QA::Framework::Session}.
76
78
  @explicit_wait = 0
@@ -91,13 +93,18 @@ module OLE_QA
91
93
  class Session
92
94
 
93
95
  # OLE Installation Base URL
94
- # (e.g. http://ole.your-site.edu)
96
+ # (e.g. http://ole.your-site.edu/)
95
97
  attr_reader :url
96
98
  # @deprecated Included for backwards compatibility. Unnecessary after 1.0.0 unification (milestone m2-r13245).
97
99
  alias :fs_url :url
98
100
  alias :base_url :url
99
101
  alias :ls_url :url
100
102
 
103
+ # OLE Document Store Installation Base URL
104
+ # (e.g. http://docstore.ole.your-site.edu/)
105
+ attr_reader :docstore_url
106
+ alias :docstore :docstore_url
107
+
101
108
  # Wait period (in seconds) used by OLE QAF Web Element functions
102
109
  attr_accessor :explicit_wait
103
110
 
@@ -107,6 +114,8 @@ module OLE_QA
107
114
  # Options hash keys:
108
115
  # :url => "http://tst.ole.kuali.org/"
109
116
  # (URL for OLE Installation)
117
+ # :docstore_url => 'http://tst.docstore.ole.kuali.org/'
118
+ # (URL for OLE DocStore Installation)
110
119
  # :headless => true/false
111
120
  # (Use Headless gem to handle XVFB session)
112
121
  # :implicit_wait => NN
@@ -133,10 +142,14 @@ module OLE_QA
133
142
  @headless.start
134
143
  end
135
144
 
145
+ # Set trailing slash on URLs for consistency if not set.
146
+ add_slash = ->(which) { which =~ /\/$/ ? which : which + '/' }
147
+
136
148
  # Globalize options to accessors
137
- @url = @options[:url]
138
- @explicit_wait = @options[:explicit_wait]
139
- @doc_wait = @options[:doc_wait]
149
+ @url = add_slash.call(@options[:url])
150
+ @docstore_url = add_slash.call(@options[:docstore_url])
151
+ @explicit_wait = @options[:explicit_wait]
152
+ @doc_wait = @options[:doc_wait]
140
153
 
141
154
  # Pass explicit_wait to a module accessor for use with OLE_QA::Tools
142
155
  OLE_QA::Framework.instance_variable_set(:@explicit_wait,@options[:explicit_wait])
@@ -15,6 +15,6 @@
15
15
  module OLE_QA
16
16
  module Framework
17
17
  # The version number for this project.
18
- VERSION = '3.4.6'
18
+ VERSION = '3.5.0'
19
19
  end
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ole-qa-framework
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.6
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jain Waldrip
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-05 00:00:00.000000000 Z
11
+ date: 2013-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -121,7 +121,9 @@ files:
121
121
  - lib/data_factory/account_factory.rb
122
122
  - lib/data_factory/bib_factory.rb
123
123
  - lib/data_factory/string_factory.rb
124
- - lib/docstore/docstore.rb
124
+ - lib/docstore/common/results.rb
125
+ - lib/docstore/pages/marc_results.rb
126
+ - lib/docstore/pages/search.rb
125
127
  - lib/module/qa_data_helpers.rb
126
128
  - lib/module/qa_helpers.rb
127
129
  - lib/module/qa_page_helpers.rb
@@ -1,13 +0,0 @@
1
- # Copyright 2005-2013 The Kuali Foundation
2
- #
3
- # Licensed under the Educational Community License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at:
6
- #
7
- # http://www.opensource.org/licenses/ecl2.php
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.