ole-qa-framework 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,178 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Copyright 2005-2013 The Kuali Foundation
|
4
|
+
#
|
5
|
+
# Licensed under the Educational Community License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at:
|
8
|
+
#
|
9
|
+
# http://www.opensource.org/licenses/ecl2.php
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
module OLE_QA
|
18
|
+
module Framework
|
19
|
+
# Load open-uri for DocStore Page Parsing
|
20
|
+
require 'open-uri'
|
21
|
+
require 'yaml'
|
22
|
+
require 'headless'
|
23
|
+
require 'watir-webdriver'
|
24
|
+
|
25
|
+
# Add absolute directory to $LOAD_PATH
|
26
|
+
@libdir = File.expand_path(File.dirname(__FILE__))
|
27
|
+
$LOAD_PATH.unshift(@libdir) unless $LOAD_PATH.include?(@libdir)
|
28
|
+
|
29
|
+
# Return absolute path from which the file was run
|
30
|
+
def self.load_dir
|
31
|
+
@libdir
|
32
|
+
end
|
33
|
+
|
34
|
+
# Load libraries from absolute path
|
35
|
+
def self.load_libs(filedir, filename = "*.rb")
|
36
|
+
Dir[@libdir + filedir + filename].sort.each do |file|
|
37
|
+
require file
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Load main class libraries
|
42
|
+
load_libs("/ole_qa_framework/")
|
43
|
+
|
44
|
+
# Load all independent modules
|
45
|
+
load_libs("/module/")
|
46
|
+
|
47
|
+
# Load Page & Element Definitions.
|
48
|
+
# Main directory is loaded first, then subdirectories in alphabetical order.
|
49
|
+
# If pages or elements need to be inherited by subclasses, put them in a (foo)/common/ directory.
|
50
|
+
# Subobject directories (foo)/subobjects/ should be loaded before object directories (foo)/objects/ for inheritance.
|
51
|
+
load_libs("/common/")
|
52
|
+
# load_libs("/olefs/")
|
53
|
+
load_libs("/olefs/common/")
|
54
|
+
load_libs("/olefs/subobjects/")
|
55
|
+
load_libs("/olefs/objects/")
|
56
|
+
load_libs("/olefs/pages/")
|
57
|
+
load_libs("/olels/common/")
|
58
|
+
load_libs("/olels/subobjects/")
|
59
|
+
load_libs("/olels/objects/")
|
60
|
+
load_libs("/olels/pages/")
|
61
|
+
# load_libs("/docstore/")
|
62
|
+
|
63
|
+
# Initialize wait variables to 0 for now. They will be set programatically in {OLE_QA::Framework::Session}.
|
64
|
+
@explicit_wait = 0
|
65
|
+
@doc_wait = 0
|
66
|
+
|
67
|
+
# Set accessor methods for explicit_wait & doc_wait, to be used mainly by OLE_QA::Tools (ole-qa-tools).
|
68
|
+
class << self
|
69
|
+
attr_reader :explicit_wait, :doc_wait
|
70
|
+
end
|
71
|
+
|
72
|
+
# Handle Browser Functions, Headless Session
|
73
|
+
# Invoke with @ole = Session.new(opts)
|
74
|
+
# Exit with @ole.quit
|
75
|
+
#
|
76
|
+
# Default options loaded from
|
77
|
+
# lib/config/default_options.yml
|
78
|
+
#
|
79
|
+
class Session
|
80
|
+
|
81
|
+
# OLE Installation Base URL
|
82
|
+
# - Also serves as OLE Financial System Main Menu URL
|
83
|
+
attr_reader :base_url
|
84
|
+
alias :fs_url :base_url
|
85
|
+
|
86
|
+
# OLE Library System Base URL
|
87
|
+
attr_reader :ls_url
|
88
|
+
|
89
|
+
# Wait period (in seconds) used by OLE QAF Web Element functions
|
90
|
+
attr_accessor :explicit_wait
|
91
|
+
|
92
|
+
# The options with which this OLE_QA Framework Session was invoked
|
93
|
+
attr_reader :options
|
94
|
+
|
95
|
+
# Options hash keys:
|
96
|
+
# :base_url => "http://tst.ole.kuali.org/"
|
97
|
+
# (URL for OLE Installation)
|
98
|
+
# :ls_url => "http://tst.rice2.ole.kuali.org"
|
99
|
+
# (URL for OLE Library System Rice Instance)
|
100
|
+
# :headless => true/false
|
101
|
+
# (Use Headless gem to handle XVFB session)
|
102
|
+
# :implicit_wait => NN
|
103
|
+
# (Set Selenium Webdriver's default wait period)
|
104
|
+
# :explicit_wait => NN
|
105
|
+
# (Set the wait period used by custom wait functions)
|
106
|
+
# :doc_wait => NN
|
107
|
+
# (Set the wait period for eDoc routing to complete)
|
108
|
+
# :browser => selenium_webdriver
|
109
|
+
# (Where browser is a Selenium WebDriver session)
|
110
|
+
#
|
111
|
+
# To configure the default options, edit
|
112
|
+
# lib/config/default_options.yml
|
113
|
+
#
|
114
|
+
def initialize( options={} )
|
115
|
+
yaml_configuration = File.open(OLE_QA::Framework::load_dir + '/config/default_options.yml', 'r')
|
116
|
+
options_defaults = YAML.load(yaml_configuration)
|
117
|
+
yaml_configuration.close
|
118
|
+
@options = options_defaults.merge(options)
|
119
|
+
|
120
|
+
# Start headless session if requested
|
121
|
+
if @options[:headless?]
|
122
|
+
@headless = Headless.new
|
123
|
+
@headless.start
|
124
|
+
end
|
125
|
+
|
126
|
+
# Globalize options to accessors
|
127
|
+
@base_url = @options[:base_url]
|
128
|
+
@ls_url = @options[:ls_url]
|
129
|
+
@explicit_wait = @options[:explicit_wait]
|
130
|
+
@doc_wait = @options[:doc_wait]
|
131
|
+
|
132
|
+
# Pass explicit_wait to a module accessor for use with OLE_QA::Tools
|
133
|
+
OLE_QA::Framework.instance_variable_set(:@explicit_wait,@options[:explicit_wait])
|
134
|
+
|
135
|
+
# Pass doc_wait to a module accessor for use with OLE_QA::Tools
|
136
|
+
OLE_QA::Framework.instance_variable_set(:@doc_wait,@options[:doc_wait])
|
137
|
+
|
138
|
+
# Browser Start
|
139
|
+
if @options.has_key?(:browser) && @options[:browser].class == Watir::Browser
|
140
|
+
@browser = @options[:browser]
|
141
|
+
else
|
142
|
+
@browser = Watir::Browser.new :firefox
|
143
|
+
@browser.driver.manage.timeouts.implicit_wait = @options[:implicit_wait]
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
# Access Watir-Webdriver's browser session.
|
149
|
+
def browser
|
150
|
+
@browser
|
151
|
+
end
|
152
|
+
|
153
|
+
# Access Watir-Webdriver's Window Handling Method
|
154
|
+
def windows
|
155
|
+
@browser.windows
|
156
|
+
end
|
157
|
+
|
158
|
+
# Open a page via URL. (Defaults to @base_url.)
|
159
|
+
def open(url = @base_url)
|
160
|
+
@browser.goto(url)
|
161
|
+
end
|
162
|
+
|
163
|
+
# Teardown the OLE QA Framework.
|
164
|
+
# - Exit the Selenium WebDriver browser session.
|
165
|
+
# - Exit the Headless (XVFB) session if necessary.
|
166
|
+
def quit
|
167
|
+
@browser.quit
|
168
|
+
if @options[:headless?] then
|
169
|
+
@headless.destroy
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
# Define OLE_QA::Framework::Error.
|
175
|
+
class Error < StandardError
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
@@ -0,0 +1,20 @@
|
|
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
|
16
|
+
module Framework
|
17
|
+
# The most recent version of OLE with which this framework is compatible.
|
18
|
+
OLE_VERSION = '0.8.0 - 1.0.0-M1-r12784 2013-07-03'
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
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
|
16
|
+
module Framework
|
17
|
+
# The version number for this project.
|
18
|
+
VERSION = '2.1.0'
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,79 @@
|
|
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::OLEFS
|
16
|
+
|
17
|
+
# This class contains element definitions common to OLE Financial System E-Docs.
|
18
|
+
# Element definitions are stored in lib/olefs/e_doc/elements.yml
|
19
|
+
class E_Doc < OLE_QA::Framework::Page
|
20
|
+
# Automatically set element definitions on the E-Document object.
|
21
|
+
# @note This method is automagically invoked on any Page object. (see {OLE_QA::Framework::OLEFS::Page#initialize})
|
22
|
+
def set_elements
|
23
|
+
super
|
24
|
+
# General Info
|
25
|
+
element(:title) {b.div(:id => 'headerarea').h1}
|
26
|
+
# Header Area
|
27
|
+
element(:document_id) {b.th(:text => /Doc Nbr\:/).parent.td(:index => 0)}
|
28
|
+
element(:document_status) {b.th(:text => /Status\:/).parent.td(:index => 1)}
|
29
|
+
element(:document_type_id) {b.table(:class => 'headerinfo').tbody.tr(:index => 2).td(:index => 0)}
|
30
|
+
element(:document_type_status) {b.table(:class => 'headerinfo').tbody.tr(:index => 2).td(:index => 1)}
|
31
|
+
element(:document_create_date) {b.table(:class => 'headerinfo').tbody.tr(:index => 1).td(:index => 1)}
|
32
|
+
# Document Overview
|
33
|
+
element(:document_overview_tab_toggle) {b.input(:id => 'tab-DocumentOverview-imageToggle')}
|
34
|
+
element(:description_field) {b.text_field(:id => 'document.documentHeader.documentDescription')}
|
35
|
+
element(:explanation_field) {b.text_field(:id => 'document.documentHeader.explanation')}
|
36
|
+
# Global Input Buttons
|
37
|
+
element(:approve_button) {b.div(:id => 'globalbuttons').input(:title => 'blanket approve')}
|
38
|
+
element(:save_button) {b.div(:id => 'globalbuttons').input(:title => 'save')}
|
39
|
+
element(:submit_button) {b.div(:id => 'globalbuttons').input(:title => 'submit')}
|
40
|
+
element(:calculate_button) {b.div(:id => 'globalbuttons').input(:title => 'Calculate')}
|
41
|
+
element(:close_button) {b.div(:id => 'globalbuttons').input(:title => 'close')}
|
42
|
+
element(:cancel_button) {b.div(:id => 'globalbuttons').input(:title => 'cancel')}
|
43
|
+
element(:copy_button) {b.div(:id => 'globalbuttons').input(:title => 'Copy current document')}
|
44
|
+
element(:send_ad_hoc_button) {b.div(:id => 'globalbuttons').input(:title => 'Send AdHoc Requests')}
|
45
|
+
element(:reload_button) {b.div(:id => 'globalbuttons').input(:title => 'reload')}
|
46
|
+
# Confirmation Screen Buttons
|
47
|
+
element(:close_yes_button) {b.div(:id => 'globalbuttons').input(:name => 'methodToCall.processAnswer.button0')}
|
48
|
+
element(:close_no_button) {b.div(:id => 'globalbuttons').input(:name => 'methodToCall.processAnswer.button1')}
|
49
|
+
element(:cancel_yes_button) {b.div(:id => 'globalbuttons').input(:name => 'methodToCall.processAnswer.button0')}
|
50
|
+
element(:cancel_no_button) {b.div(:id => 'globalbuttons').input(:name => 'methodToCall.processAnswer.button1')}
|
51
|
+
# Messages
|
52
|
+
element(:save_message) {b.div(:class => 'left-errmsg').div(:text => /Document was successfully saved\./)}
|
53
|
+
element(:submit_message) {b.div(:class => 'left-errmsg').div(:text => /Document was successfully submitted\./)}
|
54
|
+
element(:error_message) {b.div(:class => 'left-errmsg').div(:class => 'error', :text => /error/, :text => /found on page/)}
|
55
|
+
element(:generic_message) {b.div(:class => 'left-errmsg').div}
|
56
|
+
# Multiple Error Message Components Watir::HTMLElementCollection
|
57
|
+
element(:errors_in_tab) {b.strongs(:text => /Errors found in this Section\:/)}
|
58
|
+
end
|
59
|
+
|
60
|
+
# Wait for the following elements to be loaded when opening an E-Document page.
|
61
|
+
def wait_for_elements
|
62
|
+
@wait_on << :title
|
63
|
+
@wait_on << :document_id
|
64
|
+
super
|
65
|
+
end
|
66
|
+
|
67
|
+
# Returns an array of both "Errors in this Section" messages and individual error messages from each section.
|
68
|
+
def get_error_array
|
69
|
+
error_array = Array.new
|
70
|
+
self.errors_in_tab.each do |error_in_tab|
|
71
|
+
error_array << error_in_tab
|
72
|
+
error_in_tab.parent.divs.each do |error|
|
73
|
+
error_array << error
|
74
|
+
end
|
75
|
+
end
|
76
|
+
error_array
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,39 @@
|
|
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::OLEFS
|
16
|
+
# A line object with methods specific to OLEFS line objects.
|
17
|
+
class Line_Object < OLE_QA::Framework::Line_Object
|
18
|
+
def initialize(ole_session, line_number)
|
19
|
+
super(ole_session, line_number)
|
20
|
+
set_sublines if defined?(self.set_sublines)
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_subline(instance_name, class_name, which=0)
|
24
|
+
raise StandardError, "Subline object already exists. (#{instance_name})" if self.instance_variables.include?("@#{instance_name}".to_sym)
|
25
|
+
new_line_name = instance_name
|
26
|
+
make_accessor(:"#{new_line_name}")
|
27
|
+
klas = OLE_QA::Framework::OLEFS.const_get(:"#{class_name}")
|
28
|
+
instance_variable_set(:"@#{new_line_name}", klas.new(@ole, @line_number, which))
|
29
|
+
end
|
30
|
+
alias_method(:add_subline,:create_subline)
|
31
|
+
|
32
|
+
def remove_subline(instance_name)
|
33
|
+
raise StandardError, "Subline object does not exist. (#{instance_name})" unless self.instance_variables.include?("@#{instance_name}".to_sym)
|
34
|
+
remove_instance_variable("@#{instance_name}".to_sym)
|
35
|
+
unmake_attr(instance_name.to_sym)
|
36
|
+
end
|
37
|
+
alias_method(:delete_subline,:remove_subline)
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,30 @@
|
|
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::OLEFS
|
16
|
+
# A Lookup Screen in OLEFS
|
17
|
+
class Lookup < OLE_QA::Framework::Page
|
18
|
+
# Set lookup page elements.
|
19
|
+
def set_elements
|
20
|
+
super
|
21
|
+
element(:title) {b.h1(:xpath => "//div[@id='headerarea-small']/h1")}
|
22
|
+
element(:active_indicator_yes) {b.radio(:id => "activeYes")}
|
23
|
+
element(:active_indicator_no) {b.radio(:id => "activeNo")}
|
24
|
+
element(:active_indicator_both) {b.radio(:id => "activeBoth")}
|
25
|
+
element(:search_button) {b.input(:title => "search")}
|
26
|
+
element(:clear_button) {b.input(:title => "clear")}
|
27
|
+
element(:cancel_button) {b.input(:title => "cancel")}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,73 @@
|
|
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::OLEFS
|
16
|
+
# An OLE Financial System PURchasing/Accounts Payable Document
|
17
|
+
class PURAP_Document < E_Doc
|
18
|
+
def initialize(ole_session, url)
|
19
|
+
super(ole_session, url)
|
20
|
+
set_lines if defined?(self.set_lines)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Set PURAP Document Elements.
|
24
|
+
def set_elements
|
25
|
+
super
|
26
|
+
# View Related Documents Tab
|
27
|
+
element(:view_related_tab_toggle) {b.input(:id => "tab-ViewRelatedDocuments-imageToggle")}
|
28
|
+
element(:view_related_po_link) {b.a(:xpath => "//div[@id='tab-ViewRelatedDocuments-div']/descendant::h3[contains(text(),'Purchase Order')]/a")}
|
29
|
+
element(:view_related_requisition_link) {b.a(:xpath => "//div[@id='tab-ViewRelatedDocuments-div']/descendant::h3[contains(text(),'Requisition')]/a")}
|
30
|
+
# Delivery Tab
|
31
|
+
element(:delivery_tab_toggle) {b.input(:id => "tab-Delivery-imageToggle")}
|
32
|
+
element(:building_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/div/table/tbody/tr[2]/td[1]")}
|
33
|
+
element(:campus_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/div/table/tbody/tr[1]/td[1]")}
|
34
|
+
element(:closed_room_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/div/table/tbody/tr[5]/td[1]")}
|
35
|
+
element(:closed_building_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/div/table/tbody/tr[2]/td[1]")}
|
36
|
+
element(:closed_campus_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/div/table/tbody/tr[1]/td[1]")}
|
37
|
+
element(:closed_address_1_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/descendant::tr[3]/th[1]/following-sibling::td[1]")}
|
38
|
+
element(:closed_address_2_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/descendant::tr[4]/th[1]/following-sibling::td[1]")}
|
39
|
+
element(:closed_city_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/descendant::tr[6]/th[1]/following-sibling::td[1]")}
|
40
|
+
element(:closed_state_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/descendant::tr[7]/th[1]/following-sibling::td[1]")}
|
41
|
+
element(:closed_postal_code_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/descendant::tr[8]/th[1]/following-sibling::td[1]")}
|
42
|
+
element(:closed_country_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/descendant::tr[9]/th[1]/following-sibling::td[1]")}
|
43
|
+
element(:closed_delivery_to_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/descendant::tr[1]/th[1]/following-sibling::td[2]")}
|
44
|
+
element(:closed_delivery_phone_number_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/descendant::tr[2]/th[1]/following-sibling::td[2]")}
|
45
|
+
element(:closed_email_field) {b.td(:xpath => "//div[@id='tab-Delivery-div']/descendant::tr[3]/th[1]/following-sibling::td[2]")}
|
46
|
+
# Vendor Tab
|
47
|
+
element(:vendor_tab_toggle) {b.input(:id => "tab-Vendor-imageToggle")}
|
48
|
+
element(:closed_vendor_name_field) {b.td(:xpath => "//tr/th[div[contains(text(),'Suggested Vendor:')]]/following-sibling::td[1]")}
|
49
|
+
# Route Log Tab
|
50
|
+
element(:route_log_tab_toggle) {b.input(:id => "tab-RouteLog-imageToggle")}
|
51
|
+
# element(:actions_taken) {b.bs(:xpath => "//div[@id='tab-ActionsTaken-div']/div[1]/table/tbody/tr/td[1]/b")}
|
52
|
+
# element(:actions_taken_by) {b.as(:xpath => "//div[@id='tab-ActionsTaken-div']/div[1]/table/tbody/tr/td[2]/a")}
|
53
|
+
end
|
54
|
+
|
55
|
+
# Create a Line Object on a PURAP Document page.
|
56
|
+
def create_line(instance_name, class_name, which=0)
|
57
|
+
raise StandardError, "Line object already exists. (#{instance_name})" if self.instance_variables.include?("@#{instance_name}".to_sym)
|
58
|
+
new_line_name = instance_name
|
59
|
+
make_accessor(:"#{instance_name}")
|
60
|
+
klas = OLE_QA::Framework::OLEFS.const_get(:"#{class_name}")
|
61
|
+
instance_variable_set(:"@#{new_line_name}", klas.new(@ole, which))
|
62
|
+
end
|
63
|
+
alias_method(:add_line,:create_line)
|
64
|
+
|
65
|
+
# Remove a Line Object from a PURAP Document page.
|
66
|
+
def remove_line(instance_name)
|
67
|
+
raise StandardError, "Line object does not exist. (#{instance_name})" unless self.instance_variables.include?("@#{instance_name}".to_sym)
|
68
|
+
remove_instance_variable("@#{instance_name}".to_sym)
|
69
|
+
unmake_attr(instance_name.to_sym)
|
70
|
+
end
|
71
|
+
alias_method(:delete_line,:remove_line)
|
72
|
+
end
|
73
|
+
end
|