ole-qa-framework 2.1.0
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.
- data/CHANGELOG.md +882 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +45 -0
- data/LICENSE.md +14 -0
- data/README.md +17 -0
- data/Rakefile.rb +25 -0
- data/examples/README.md +57 -0
- data/examples/create_bib_record.rb +64 -0
- data/examples/create_requisition.rb +96 -0
- data/examples/purap_workflow_test.rb +185 -0
- data/lib/common/common_object.rb +57 -0
- data/lib/common/data_object.rb +21 -0
- data/lib/common/line_object.rb +44 -0
- data/lib/common/page.rb +72 -0
- data/lib/common/subline_object.rb +47 -0
- data/lib/config/default_options.yml +7 -0
- data/lib/docstore/docstore.rb +13 -0
- data/lib/module/qa_data_helpers.rb +17 -0
- data/lib/module/qa_helpers.rb +153 -0
- data/lib/module/qa_page_helpers.rb +33 -0
- data/lib/ole-qa-framework.rb +178 -0
- data/lib/ole_qa_framework/COMPATIBILITY.rb +20 -0
- data/lib/ole_qa_framework/VERSION.rb +20 -0
- data/lib/olefs/common/e_doc.rb +79 -0
- data/lib/olefs/common/line_object.rb +39 -0
- data/lib/olefs/common/lookup.rb +30 -0
- data/lib/olefs/common/purap_document.rb +73 -0
- data/lib/olefs/objects/line_item.rb +105 -0
- data/lib/olefs/objects/new_line_item.rb +44 -0
- data/lib/olefs/objects/new_preq_line_item.rb +43 -0
- data/lib/olefs/objects/new_receiving_line.rb +42 -0
- data/lib/olefs/objects/preq_line_item.rb +68 -0
- data/lib/olefs/objects/receiving_line.rb +88 -0
- data/lib/olefs/pages/building_lookup.rb +36 -0
- data/lib/olefs/pages/main_menu.rb +23 -0
- data/lib/olefs/pages/payment_request.rb +67 -0
- data/lib/olefs/pages/payment_request_creation.rb +44 -0
- data/lib/olefs/pages/purchase_order.rb +68 -0
- data/lib/olefs/pages/receiving_document.rb +49 -0
- data/lib/olefs/pages/requisition.rb +61 -0
- data/lib/olefs/pages/vendor_lookup.rb +40 -0
- data/lib/olefs/subobjects/accounting_line.rb +46 -0
- data/lib/olefs/subobjects/copies_line.rb +32 -0
- data/lib/olefs/subobjects/exception_notes_line.rb +26 -0
- data/lib/olefs/subobjects/invoice_notes_line.rb +25 -0
- data/lib/olefs/subobjects/new_accounting_line.rb +43 -0
- data/lib/olefs/subobjects/new_copies_line.rb +37 -0
- data/lib/olefs/subobjects/new_exception_notes_line.rb +30 -0
- data/lib/olefs/subobjects/new_invoice_notes_line.rb +35 -0
- data/lib/olefs/subobjects/new_notes_line.rb +36 -0
- data/lib/olefs/subobjects/new_receipt_notes_line.rb +35 -0
- data/lib/olefs/subobjects/notes_line.rb +29 -0
- data/lib/olefs/subobjects/processing_line.rb +24 -0
- data/lib/olefs/subobjects/receipt_notes_line.rb +25 -0
- data/lib/olels/common/e_doc.rb +23 -0
- data/lib/olels/common/editor.rb +92 -0
- data/lib/olels/common/line_object.rb +39 -0
- data/lib/olels/common/lookup.rb +30 -0
- data/lib/olels/objects/access_info_line.rb +25 -0
- data/lib/olels/objects/data_line.rb +31 -0
- data/lib/olels/objects/editor_note.rb +79 -0
- data/lib/olels/objects/holdings_note.rb +26 -0
- data/lib/olels/objects/item_note.rb +26 -0
- data/lib/olels/objects/ownership_extent_line.rb +40 -0
- data/lib/olels/pages/bib_editor.rb +63 -0
- data/lib/olels/pages/describe_workbench.rb +42 -0
- data/lib/olels/pages/instance_editor.rb +80 -0
- data/lib/olels/pages/item_editor.rb +91 -0
- data/lib/olels/pages/loan.rb +102 -0
- data/lib/olels/pages/main_menu.rb +31 -0
- data/lib/olels/pages/patron_lookup.rb +44 -0
- data/lib/olels/pages/return.rb +64 -0
- data/lib/olels/subobjects/ownership_note.rb +26 -0
- data/ole-qa-framework.gemspec +30 -0
- data/pkg/ole-qa-framework-2.1.0.gem +0 -0
- data/spec/common/browser_spec.rb +37 -0
- data/spec/common/data_object_spec.rb +37 -0
- data/spec/common/line_object_spec.rb +49 -0
- data/spec/common/page_spec.rb +44 -0
- data/spec/common/subline_object_spec.rb +54 -0
- data/spec/modules/qa_helpers_spec.rb +55 -0
- data/spec/modules/qa_page_helpers_spec.rb +43 -0
- data/spec/olefs/accounting_line_spec.rb +85 -0
- data/spec/olefs/building_lookup_spec.rb +45 -0
- data/spec/olefs/copies_line_spec.rb +70 -0
- data/spec/olefs/edocs_spec.rb +75 -0
- data/spec/olefs/exception_notes_line_spec.rb +52 -0
- data/spec/olefs/invoice_notes_line_spec.rb +45 -0
- data/spec/olefs/line_item_spec.rb +155 -0
- data/spec/olefs/lookup_spec.rb +44 -0
- data/spec/olefs/main_menu_spec.rb +34 -0
- data/spec/olefs/notes_line_spec.rb +65 -0
- data/spec/olefs/patron_lookup_spec.rb +54 -0
- data/spec/olefs/payment_request_spec.rb +85 -0
- data/spec/olefs/preq_creation_spec.rb +43 -0
- data/spec/olefs/preq_line_item_spec.rb +111 -0
- data/spec/olefs/processing_line_spec.rb +44 -0
- data/spec/olefs/purap_document_spec.rb +58 -0
- data/spec/olefs/purchase_order_spec.rb +77 -0
- data/spec/olefs/receipt_notes_line_spec.rb +54 -0
- data/spec/olefs/receive_spec.rb +66 -0
- data/spec/olefs/receiving_line_spec.rb +125 -0
- data/spec/olefs/requisition_spec.rb +83 -0
- data/spec/olefs/vendor_lookup_spec.rb +49 -0
- data/spec/olels/access_info_line_spec.rb +40 -0
- data/spec/olels/bib_editor_spec.rb +84 -0
- data/spec/olels/data_line_spec.rb +44 -0
- data/spec/olels/describe_workbench_spec.rb +44 -0
- data/spec/olels/editor_spec.rb +56 -0
- data/spec/olels/edocs_spec.rb +42 -0
- data/spec/olels/holdings_note_spec_spec.rb +41 -0
- data/spec/olels/instance_editor_spec.rb +81 -0
- data/spec/olels/item_editor_spec.rb +94 -0
- data/spec/olels/item_note_spec.rb +41 -0
- data/spec/olels/loan_spec.rb +104 -0
- data/spec/olels/lookup_spec.rb +38 -0
- data/spec/olels/main_menu_spec.rb +35 -0
- data/spec/olels/ownership_extent_line_spec.rb +58 -0
- data/spec/olels/ownership_note_spec.rb +41 -0
- data/spec/olels/return_spec.rb +72 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/workflows/purap_spec.rb +221 -0
- metadata +313 -0
|
@@ -0,0 +1,57 @@
|
|
|
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
|
|
16
|
+
# OLE object class to be inherited by both Page Object and Data Object classes.
|
|
17
|
+
# (Grouping together common initialize settings for DRYness.)
|
|
18
|
+
# @note The instance variable @browser can be used internally to refer to the
|
|
19
|
+
# browser and only the browser, whereas the instance method .browser, defined
|
|
20
|
+
# in {OLE_QA::Framework::Helpers#browser} will refer either to the browser
|
|
21
|
+
# itself or to the browser within the context of the "iframeportlet" frame,
|
|
22
|
+
# if it is found to be present.
|
|
23
|
+
class Common_Object
|
|
24
|
+
include OLE_QA::Framework::Helpers
|
|
25
|
+
|
|
26
|
+
# The OLE_QA::Framework::Session instance passed to the Data Object.
|
|
27
|
+
attr_accessor :ole
|
|
28
|
+
|
|
29
|
+
# Arrays containing the names(Symbol) of each element or function declared
|
|
30
|
+
# on a data object.
|
|
31
|
+
attr_reader :elements, :functions
|
|
32
|
+
|
|
33
|
+
# @param ole_session [Object] The OLE_QA::Framework::Session instance with which the object should load.
|
|
34
|
+
def initialize(ole_session)
|
|
35
|
+
@ole = ole_session
|
|
36
|
+
@browser = ole_session.browser
|
|
37
|
+
@elements = Array.new
|
|
38
|
+
@functions = Array.new
|
|
39
|
+
set_elements if defined?(self.set_elements)
|
|
40
|
+
set_functions if defined?(self.set_functions)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Fill this method with element definitions in a subclass.
|
|
44
|
+
# - Call super first in this method if the subclass overrides elements from the superclass.
|
|
45
|
+
# - Use with {OLE_QA::Framework::Helpers#set_element}
|
|
46
|
+
# @note This method is automatically called on any subclass if defined therein.
|
|
47
|
+
def set_elements
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Fill this method with function definitions in a subclass.
|
|
51
|
+
# - Call super first in this method if the subclass overrides functions from the superclass.
|
|
52
|
+
# - Use with {OLE_QA::Framework::Helpers#set_function}
|
|
53
|
+
# @note This method is automatically called on any subclass if defined therein.
|
|
54
|
+
def set_functions
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
|
16
|
+
|
|
17
|
+
# An object in OLE which contains screen elements but is not itself a screen element.
|
|
18
|
+
class Data_Object < Common_Object
|
|
19
|
+
include OLE_QA::Framework::Data_Helpers
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
|
16
|
+
|
|
17
|
+
# A Data Object in OLE that represents a single line in a given area.
|
|
18
|
+
# A line object can usually be added or deleted, and may or may not
|
|
19
|
+
# have its own line objects beneath it in the page-object hierarchy.
|
|
20
|
+
class Line_Object < Data_Object
|
|
21
|
+
|
|
22
|
+
# The line number that this object will have on the screen.
|
|
23
|
+
# - Used for line identifier replacement.
|
|
24
|
+
attr_reader :line_number
|
|
25
|
+
attr_reader :line_id
|
|
26
|
+
|
|
27
|
+
# @param ole_session [Object] The OLE_QA::Framework::Session session to pass to the Data Object.
|
|
28
|
+
# @param line_number [Fixnum] The number this line object will use for element definitions.
|
|
29
|
+
def initialize(ole_session, line_number = 1)
|
|
30
|
+
@line_number = line_number
|
|
31
|
+
@line_id = line_number - 1
|
|
32
|
+
super(ole_session)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Set element definitions, if any.
|
|
36
|
+
# @note Use @line_number or @line_id in an element definition to specify either the textual,
|
|
37
|
+
# human-readable (1-based) line number of the line object, or the coded, application-readable
|
|
38
|
+
# (0-based) line identifier number of the line object.
|
|
39
|
+
def set_elements
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
data/lib/common/page.rb
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
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
|
|
16
|
+
|
|
17
|
+
# An OLE Page object
|
|
18
|
+
class Page < Common_Object
|
|
19
|
+
|
|
20
|
+
# The URL to open a given page.
|
|
21
|
+
# @note Do not use this value for the URL to open a new page of a given
|
|
22
|
+
# document type. If the page object represents an e-Document in OLEFS
|
|
23
|
+
# or OLELS, instead use the :new_url accessor set on the e-Doc object.
|
|
24
|
+
attr_reader :url
|
|
25
|
+
|
|
26
|
+
include OLE_QA::Framework::Page_Helpers
|
|
27
|
+
|
|
28
|
+
# @param ole_session [Object] The OLE_QA::Framework::Session instance in which the page should load.
|
|
29
|
+
# @param url [String] The URL (if any) used to open the page. (Set to "" if unused.)
|
|
30
|
+
def initialize(ole_session, url)
|
|
31
|
+
super(ole_session)
|
|
32
|
+
@url = url
|
|
33
|
+
@wait_on = Array.new
|
|
34
|
+
wait_for_elements if defined?(self.wait_for_elements)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Open the page via URL.
|
|
38
|
+
# @note Some pages may not have custom open URLs. If this is the case,
|
|
39
|
+
# this method can be passed a lookup URL with a document ID #.
|
|
40
|
+
# @note This method will invoke the wait_for_elements method if it is defined on a page.
|
|
41
|
+
# @note If a page has declared elements to wait on, invoking this method will return
|
|
42
|
+
# an array of the symbols used to call those methods.
|
|
43
|
+
def open(url = @url)
|
|
44
|
+
@browser.goto(url)
|
|
45
|
+
@wait_on.each { |element| wait_for_element(element) } if defined?(wait_for_elements)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Define this method on a subclass. Add element symbols to the @wait_on array.
|
|
49
|
+
# This will require the open method to wait for each of these elements to be present before it finishes.
|
|
50
|
+
# e.g.
|
|
51
|
+
# def wait_for_elements
|
|
52
|
+
# @wait_on << :title
|
|
53
|
+
# @wait_on << :close_button
|
|
54
|
+
# super
|
|
55
|
+
# end
|
|
56
|
+
#
|
|
57
|
+
def wait_for_elements
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Use this method on subclasses to define elements that must be loaded for the page to be considered completely loaded.
|
|
61
|
+
# This method can be called individually or will be called on an open command if .wait_for_elements is defined on the subclass.
|
|
62
|
+
def wait_for_element(element)
|
|
63
|
+
self.send(element).wait_until_present(@ole.explicit_wait)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Call this method on a page that has wait_for_elements defined
|
|
67
|
+
# to wait for all required elements on that page to load.
|
|
68
|
+
def wait_for_page_to_load
|
|
69
|
+
@wait_on.each { |element| wait_for_element(element) }
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
|
16
|
+
# A Data Object in OLE that represents a line nested under another line.
|
|
17
|
+
# A subline can usually be added or deleted, and has element identifiers
|
|
18
|
+
# which vary dependent upon the line below which they are nested.
|
|
19
|
+
class Subline_Object < Data_Object
|
|
20
|
+
|
|
21
|
+
# The line number that this object will have on the screen.
|
|
22
|
+
# - Used for line identifier replacement.
|
|
23
|
+
attr_reader :line_number
|
|
24
|
+
attr_reader :line_id
|
|
25
|
+
|
|
26
|
+
# The line number that this subline object will have on the screen.
|
|
27
|
+
# - Used for subline identifier replacement.
|
|
28
|
+
attr_reader :subline_number
|
|
29
|
+
attr_reader :subline_id
|
|
30
|
+
|
|
31
|
+
# @param ole_session [Object] The OLE_QA::Framework::Session session to pass to the Data Object.
|
|
32
|
+
# @param line_number [Fixnum] The line number this subline object will use for element definitions.
|
|
33
|
+
# @param subline_number [Fixnum] The subline number this subline object will use for element definitions.
|
|
34
|
+
def initialize(ole_session, line_number = 1, subline_number = 1)
|
|
35
|
+
@line_number, @subline_number = line_number, subline_number
|
|
36
|
+
@line_id = line_number -1
|
|
37
|
+
@subline_id = subline_number -1
|
|
38
|
+
super(ole_session)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Set elements on the subline object.
|
|
42
|
+
# @note Use line_number, line_id, subline_number, and subline_id to replace dynamic identifier numbers.
|
|
43
|
+
# (See {OLE_QA::Framework::Line_Object#set_elements} for more on line number substitution.)
|
|
44
|
+
def set_elements
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
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.
|
|
@@ -0,0 +1,17 @@
|
|
|
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::Data_Helpers
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,153 @@
|
|
|
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::Helpers
|
|
16
|
+
# Handle frame selection in the browser via aliasing the @browser session passed to a page or data object.
|
|
17
|
+
# - If the page or data object is inherited by any kind of OLE e-Doc, all elements will be encapsulated within a frame
|
|
18
|
+
# with an ID of 'iframeportlet'.
|
|
19
|
+
# - If the page is a main menu page or a lookup page, the frame may not be present.
|
|
20
|
+
def browser
|
|
21
|
+
if @ole.browser.frame(:class => 'fancybox-iframe').present?
|
|
22
|
+
@ole.browser.frame(:class => 'fancybox-iframe')
|
|
23
|
+
elsif @ole.browser.frame(:id => 'iframeportlet').present?
|
|
24
|
+
@ole.browser.frame(:id => 'iframeportlet')
|
|
25
|
+
else
|
|
26
|
+
@ole.browser
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
alias_method(:b,:browser)
|
|
30
|
+
|
|
31
|
+
# Add an accessor to a class from within that class only.
|
|
32
|
+
def make_accessor(symbol)
|
|
33
|
+
eigenclass = class << self;
|
|
34
|
+
self
|
|
35
|
+
end
|
|
36
|
+
eigenclass.class_eval do
|
|
37
|
+
attr_accessor symbol
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
private :make_accessor
|
|
41
|
+
|
|
42
|
+
# Add a reader to a class from within that class only.
|
|
43
|
+
def make_reader(symbol)
|
|
44
|
+
eigenclass = class << self;
|
|
45
|
+
self
|
|
46
|
+
end
|
|
47
|
+
eigenclass.class_eval do
|
|
48
|
+
attr_reader symbol
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
private :make_reader
|
|
52
|
+
|
|
53
|
+
# Add a writer to a class from within that class only.
|
|
54
|
+
def make_writer(symbol)
|
|
55
|
+
eigenclass = class << self;
|
|
56
|
+
self
|
|
57
|
+
end
|
|
58
|
+
eigenclass.class_eval do
|
|
59
|
+
attr_writer symbol
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
private :make_writer
|
|
63
|
+
|
|
64
|
+
# Unset a previously defined attribute on a class.
|
|
65
|
+
def unmake_attr(method_name)
|
|
66
|
+
eigenclass = class << self;
|
|
67
|
+
self
|
|
68
|
+
end
|
|
69
|
+
eigenclass.class_eval do
|
|
70
|
+
undef_method(method_name)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
private :unmake_attr
|
|
74
|
+
|
|
75
|
+
# Set an element definition on a page or data object.
|
|
76
|
+
# - An element created with this method becomes an accessor attribute
|
|
77
|
+
# associated with an instance variable on the page or data object on
|
|
78
|
+
# which it is created.
|
|
79
|
+
#
|
|
80
|
+
# @param name [Symbol] The name the new element will have on the object.
|
|
81
|
+
# (This will be an instance variable, so it cannot contain spaces.)
|
|
82
|
+
# @param force [Boolean] If set to true, this method can be used to override an existing element definition.
|
|
83
|
+
#
|
|
84
|
+
# @raise StandardError if a parameter is of an incorrect type.
|
|
85
|
+
# @raise StandardError if an instance method already exists for an element with the same name.
|
|
86
|
+
# (Suppress with force = true.)
|
|
87
|
+
#
|
|
88
|
+
# @note This method can also be used to add an element to an existing page object instance.
|
|
89
|
+
# The code block passed to the method will need to explicitly name the class instance in order to
|
|
90
|
+
# access the browser method.
|
|
91
|
+
#
|
|
92
|
+
# @note In some cases in OLE, text_field elements are coded as <input> elements. If Watir-Webdriver
|
|
93
|
+
# returns an error in a case like this, affixing .to_subtype should make the #set method available.
|
|
94
|
+
#
|
|
95
|
+
def set_element(name, force = false)
|
|
96
|
+
raise StandardError, "Name must be a symbol. Given: #{name} (#{name.class})" unless name.instance_of?(Symbol)
|
|
97
|
+
eigenclass = class << self;
|
|
98
|
+
self
|
|
99
|
+
end
|
|
100
|
+
raise StandardError, "Element is already defined. (Use the 'force = true' option to suppress this error.)" if eigenclass.instance_methods.include?(name) && ! force
|
|
101
|
+
eigenclass.class_eval do
|
|
102
|
+
define_method name.to_s do
|
|
103
|
+
yield self
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
@elements << name
|
|
107
|
+
end
|
|
108
|
+
alias_method(:element, :set_element)
|
|
109
|
+
|
|
110
|
+
# Set a function definition on a page or data object.
|
|
111
|
+
# - A function created with this method becomes an accessor attribute
|
|
112
|
+
# associated with an instance variable on the page or data object on
|
|
113
|
+
# which it is created.
|
|
114
|
+
#
|
|
115
|
+
# @param name [Symbol] The name the new function will have on the object.
|
|
116
|
+
# (This will be an instance variable, so it cannot contain spaces.)
|
|
117
|
+
# @param force [Boolean] If set to true, this method can be used to override an existing function definition.
|
|
118
|
+
#
|
|
119
|
+
# @raise StandardError if a parameter is of an incorrect type.
|
|
120
|
+
# @raise StandardError if an instance method already exists for a function with the same name.
|
|
121
|
+
# (Suppress with force = true.)
|
|
122
|
+
#
|
|
123
|
+
# @note Invoking a function without passing the expected parameter/s may not return an appropriate error message.
|
|
124
|
+
def set_function(name, force = false, &block)
|
|
125
|
+
raise StandardError, "Name must be a symbol. Given: #{name} (#{name.class})" unless name.instance_of?(Symbol)
|
|
126
|
+
eigenclass = class << self;
|
|
127
|
+
self
|
|
128
|
+
end
|
|
129
|
+
raise StandardError, "Element is already defined. (Use the 'force = true' option to suppress this error.)" if eigenclass.instance_methods.include?(name) && ! force
|
|
130
|
+
eigenclass.class_eval do
|
|
131
|
+
define_method name.to_s do |*arg|
|
|
132
|
+
yield *arg
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
@functions << name
|
|
136
|
+
end
|
|
137
|
+
alias_method(:function,:set_function)
|
|
138
|
+
|
|
139
|
+
# Load a YML file.
|
|
140
|
+
def load_yml(subdir, filename)
|
|
141
|
+
basedir = OLE_QA::Framework::load_dir
|
|
142
|
+
file_path = basedir + '/' + subdir + filename
|
|
143
|
+
if File.exists?(file_path) then
|
|
144
|
+
yaml_file = File.open(file_path, 'r')
|
|
145
|
+
yaml = YAML.load(yaml_file)
|
|
146
|
+
yaml_file.close
|
|
147
|
+
yaml
|
|
148
|
+
else
|
|
149
|
+
raise StandardError, "File does not exist. (#{basedir + subdir + filename})"
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
alias_method(:load_yaml,:load_yml)
|
|
153
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
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::Page_Helpers
|
|
16
|
+
# Login as a given user.
|
|
17
|
+
# @param username [String] The username to use.
|
|
18
|
+
# @return [Boolean] Whether the login process succeeded.
|
|
19
|
+
def login(username)
|
|
20
|
+
raise OLE_QA::Framework::Error,"Login field not present on this page: #{self.class.name}" unless @browser.text_field(:name => "backdoorId").present?
|
|
21
|
+
@browser.text_field(:name => "backdoorId").set(username)
|
|
22
|
+
@browser.input(:class => "go", :value => "Login").click
|
|
23
|
+
@browser.div(:id => "login-info").strong(:text => /Impersonating User\:/, :text => /#{username}/).present?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Logout from previous login.
|
|
27
|
+
# @return [Boolean] Whether the logout process succeeded.
|
|
28
|
+
def logout
|
|
29
|
+
@browser.input(:class => "go", :value => "Logout").click
|
|
30
|
+
# Return false if still impersonating user, true if not.
|
|
31
|
+
@browser.div(:id => "login-info").strong(:text => /Impersonating User\:/).present? ? false : true
|
|
32
|
+
end
|
|
33
|
+
end
|