ole-qa-framework 2.7.3 → 3.0.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 +15 -0
- data/lib/common/common_object.rb +1 -1
- data/lib/common/line_object.rb +35 -10
- data/lib/common/page.rb +5 -0
- data/lib/common/subline_object.rb +8 -24
- data/lib/module/qa_helpers.rb +1 -1
- data/lib/module/qa_page_helpers.rb +24 -0
- data/lib/ole_qa_framework/VERSION.rb +1 -1
- data/lib/olefs/common/purap_document.rb +20 -25
- data/lib/olefs/objects/invoice_current_item.rb +1 -1
- data/lib/olefs/objects/invoice_line.rb +5 -2
- data/lib/olefs/objects/line_item.rb +44 -50
- data/lib/olefs/objects/receiving_line.rb +22 -52
- data/lib/olefs/pages/invoice.rb +5 -2
- data/lib/olefs/pages/payment_request.rb +0 -39
- data/lib/olefs/pages/purchase_order.rb +1 -11
- data/lib/olefs/pages/receiving_document.rb +1 -11
- data/lib/olefs/pages/requisition.rb +1 -11
- data/lib/olefs/subobjects/accounting_line.rb +16 -16
- data/lib/olefs/subobjects/copies_line.rb +9 -7
- data/lib/olefs/subobjects/exception_notes_line.rb +3 -3
- data/lib/olefs/{objects → subobjects}/invoice_line_item.rb +34 -45
- data/lib/olefs/subobjects/notes_line.rb +5 -5
- data/lib/olefs/subobjects/processing_line.rb +2 -2
- data/lib/olefs/subobjects/receipt_notes_line.rb +2 -2
- data/lib/olels/common/e_doc.rb +0 -17
- data/lib/olels/common/editor.rb +0 -17
- data/lib/olels/objects/access_info_line.rb +4 -4
- data/lib/olels/objects/control_006_line.rb +6 -6
- data/lib/olels/objects/control_007_line.rb +6 -6
- data/lib/olels/objects/data_line.rb +7 -7
- data/lib/olels/objects/editor_note.rb +3 -3
- data/lib/olels/objects/holdings_note.rb +5 -5
- data/lib/olels/objects/item_note.rb +5 -5
- data/lib/olels/objects/ownership_extent_line.rb +6 -16
- data/lib/olels/objects/patron_address_line.rb +33 -33
- data/lib/olels/objects/patron_email_line.rb +10 -10
- data/lib/olels/objects/patron_phone_line.rb +14 -14
- data/lib/olels/pages/bib_editor.rb +3 -44
- data/lib/olels/pages/instance_editor.rb +3 -33
- data/lib/olels/pages/item_editor.rb +1 -13
- data/lib/olels/pages/patron.rb +4 -33
- data/lib/olels/pages/return.rb +1 -0
- data/lib/olels/pages/staff_upload.rb +1 -0
- data/lib/olels/subobjects/ownership_note.rb +4 -4
- data/spec/common/line_object_spec.rb +41 -8
- data/spec/common/subline_object_spec.rb +9 -19
- data/spec/modules/qa_page_helpers_spec.rb +54 -0
- data/spec/olefs/accounting_line_spec.rb +9 -30
- data/spec/olefs/copies_line_spec.rb +1 -16
- data/spec/olefs/exception_notes_line_spec.rb +3 -13
- data/spec/olefs/invoice_current_item_spec.rb +1 -1
- data/spec/olefs/invoice_line_item_spec.rb +5 -5
- data/spec/olefs/invoice_line_spec.rb +2 -2
- data/spec/olefs/invoice_spec.rb +2 -2
- data/spec/olefs/line_item_spec.rb +32 -67
- data/spec/olefs/notes_line_spec.rb +5 -17
- data/spec/olefs/payment_request_spec.rb +1 -43
- data/spec/olefs/processing_line_spec.rb +5 -4
- data/spec/olefs/purap_document_spec.rb +23 -1
- data/spec/olefs/purchase_order_spec.rb +4 -18
- data/spec/olefs/receipt_notes_line_spec.rb +5 -14
- data/spec/olefs/receive_spec.rb +3 -18
- data/spec/olefs/receiving_line_spec.rb +35 -74
- data/spec/olefs/requisition_spec.rb +5 -19
- data/spec/olels/access_info_line_spec.rb +1 -1
- data/spec/olels/bib_editor_spec.rb +8 -56
- data/spec/olels/data_line_spec.rb +2 -2
- data/spec/olels/editor_spec.rb +0 -4
- data/spec/olels/{holdings_note_spec_spec.rb → holdings_note_spec.rb} +1 -1
- data/spec/olels/instance_editor_spec.rb +8 -31
- data/spec/olels/item_editor_spec.rb +4 -14
- data/spec/olels/item_note_spec.rb +2 -2
- data/spec/olels/ownership_extent_line_spec.rb +6 -16
- data/spec/olels/ownership_note_spec.rb +2 -1
- data/spec/olels/patron_address_line_spec.rb +1 -1
- data/spec/olels/patron_email_line_spec.rb +1 -1
- data/spec/olels/patron_phone_line_spec.rb +2 -2
- data/spec/olels/patron_spec.rb +8 -40
- metadata +7 -30
- data/lib/olefs/common/invoice_line_object.rb +0 -37
- data/lib/olefs/common/line_object.rb +0 -39
- data/lib/olefs/objects/new_line_item.rb +0 -48
- data/lib/olefs/objects/new_preq_line_item.rb +0 -43
- data/lib/olefs/objects/new_receiving_line.rb +0 -42
- data/lib/olefs/objects/preq_line_item.rb +0 -68
- data/lib/olefs/pages/payment_request_creation.rb +0 -44
- data/lib/olefs/subobjects/invoice_notes_line.rb +0 -25
- data/lib/olefs/subobjects/new_accounting_line.rb +0 -43
- data/lib/olefs/subobjects/new_copies_line.rb +0 -37
- data/lib/olefs/subobjects/new_exception_notes_line.rb +0 -30
- data/lib/olefs/subobjects/new_invoice_notes_line.rb +0 -35
- data/lib/olefs/subobjects/new_notes_line.rb +0 -36
- data/lib/olefs/subobjects/new_receipt_notes_line.rb +0 -35
- data/lib/olels/common/line_object.rb +0 -39
- data/spec/olefs/invoice_line_object_spec.rb +0 -49
- data/spec/olefs/invoice_notes_line_spec.rb +0 -49
- data/spec/olefs/preq_creation_spec.rb +0 -47
- data/spec/olefs/preq_line_item_spec.rb +0 -111
- data/spec/workflows/purap_spec.rb +0 -221
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
### v3.0.0 - 2013/10/15
|
2
|
+
|
3
|
+
* Flexible Line Objects
|
4
|
+
* Line Objects & Subline Objects are defined once on a parent object
|
5
|
+
* The line number instance variable is now settable.
|
6
|
+
* The line ID instance variable has been replaced with a reader lookup method.
|
7
|
+
* Array reader attributes are used to track lines & sublines on instantiated objects.
|
8
|
+
* A lines array has been implemented on all page objects.
|
9
|
+
* A sublines array has been implemented on all line objects.
|
10
|
+
* OLELS
|
11
|
+
* Fix element definitions on Return Screen page.
|
12
|
+
* Fix element definitions on Staff Upload page.
|
13
|
+
* Spec
|
14
|
+
* Remove old workflow spec, no longer accurate or necessary.
|
15
|
+
|
1
16
|
### v2.7.3 - 2013/10/11
|
2
17
|
|
3
18
|
* Page (base class)
|
data/lib/common/common_object.rb
CHANGED
@@ -26,7 +26,7 @@ module OLE_QA::Framework
|
|
26
26
|
# The OLE_QA::Framework::Session instance passed to the Data Object.
|
27
27
|
attr_accessor :ole
|
28
28
|
|
29
|
-
# Arrays containing the
|
29
|
+
# Arrays containing the name (Symbol) of each element or function declared
|
30
30
|
# on a data object.
|
31
31
|
attr_reader :elements, :functions
|
32
32
|
|
data/lib/common/line_object.rb
CHANGED
@@ -20,25 +20,50 @@ module OLE_QA::Framework
|
|
20
20
|
class Line_Object < Data_Object
|
21
21
|
|
22
22
|
# The line number that this object will have on the screen.
|
23
|
-
# -
|
24
|
-
|
25
|
-
|
23
|
+
# - This is the 1-based line number used for replacement of human-readable identifiers.
|
24
|
+
attr_accessor :line_number
|
25
|
+
|
26
|
+
# An array containing the name (Symbol) of each subline element on the line object.
|
27
|
+
attr_reader :sublines
|
26
28
|
|
27
29
|
# @param ole_session [Object] The OLE_QA::Framework::Session session to pass to the Data Object.
|
28
30
|
# @param line_number [Fixnum] The number this line object will use for element definitions.
|
29
31
|
def initialize(ole_session, line_number = 1)
|
30
32
|
@line_number = line_number
|
31
|
-
@line_id = line_number - 1
|
32
33
|
super(ole_session)
|
34
|
+
@sublines = Array.new
|
35
|
+
set_sublines if defined?(self.set_sublines)
|
33
36
|
end
|
34
37
|
|
35
|
-
#
|
36
|
-
#
|
37
|
-
|
38
|
-
|
39
|
-
def set_elements
|
38
|
+
# A reader method for the line_id function.
|
39
|
+
# - This is the 0-based line number used for replacement of programmatic identifiers such as element IDs.
|
40
|
+
def line_id
|
41
|
+
@line_number - 1
|
40
42
|
end
|
41
43
|
|
42
|
-
|
44
|
+
# Set a subline object definition on a page object.
|
45
|
+
# - A subline object created with this method becomes an accessor attribute
|
46
|
+
# associated with an instance variable on the page or data object on
|
47
|
+
# which it is created.
|
48
|
+
#
|
49
|
+
# @param name [Symbol] The name the new subline object will have on the object.
|
50
|
+
# (This will be an instance variable, so it cannot contain spaces.)
|
51
|
+
# @param klas [Class] The class to instantiate for the new subline object.
|
52
|
+
# (An error will be returned if the class given is not defined.)
|
53
|
+
# @param force [Boolean] If set to true, this method can be used to override an existing subline object definition.
|
54
|
+
#
|
55
|
+
# @raise StandardError if a parameter is of an incorrect type.
|
56
|
+
# @raise StandardError if an instance method already exists for a subline object with the same name.
|
57
|
+
# (Suppress with force = true.)
|
58
|
+
#
|
59
|
+
def set_subline(name, klas, force = false)
|
60
|
+
raise StandardError, "Name must be a symbol. Given: #{name} (#{name.class})" unless name.instance_of?(Symbol)
|
61
|
+
raise StandardError, "Klas must be a class. Given: #{klas} (#{klas.class})" unless klas.instance_of?(Class)
|
62
|
+
raise StandardError, "Subline object is already defined. (Use the 'force = true' option to suppress this error.)" if @sublines.include?(name) && ! force
|
63
|
+
instance_variable_set("@#{name}", klas.new(@ole, 1))
|
64
|
+
make_reader(name) unless force
|
65
|
+
@sublines << name unless force
|
66
|
+
end
|
67
|
+
alias_method(:subline, :set_subline)
|
43
68
|
end
|
44
69
|
end
|
data/lib/common/page.rb
CHANGED
@@ -23,6 +23,9 @@ module OLE_QA::Framework
|
|
23
23
|
# or OLELS, instead use the :new_url accessor set on the e-Doc object.
|
24
24
|
attr_reader :url
|
25
25
|
|
26
|
+
# An array containing the name (Symbol) of each line object on the page object.
|
27
|
+
attr_reader :lines
|
28
|
+
|
26
29
|
include OLE_QA::Framework::Page_Helpers
|
27
30
|
|
28
31
|
# @param ole_session [Object] The OLE_QA::Framework::Session instance in which the page should load.
|
@@ -31,7 +34,9 @@ module OLE_QA::Framework
|
|
31
34
|
super(ole_session)
|
32
35
|
@url = url
|
33
36
|
@wait_on = Array.new
|
37
|
+
@lines = Array.new
|
34
38
|
wait_for_elements if defined?(self.wait_for_elements)
|
39
|
+
set_lines if defined?(self.set_lines)
|
35
40
|
end
|
36
41
|
|
37
42
|
# Open the page via URL.
|
@@ -14,34 +14,18 @@
|
|
14
14
|
|
15
15
|
module OLE_QA::Framework
|
16
16
|
# A Data Object in OLE that represents a line nested under another line.
|
17
|
-
# A subline can
|
18
|
-
#
|
19
|
-
class Subline_Object <
|
17
|
+
# - A subline object can be recursed under another subline object, use of the "@parent_line"
|
18
|
+
# instance variable should allow for continued recursion ad nauseam.
|
19
|
+
class Subline_Object < Line_Object
|
20
20
|
|
21
|
-
# The line
|
22
|
-
|
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
|
21
|
+
# The line under which this subline object was created.
|
22
|
+
attr_reader :parent_line
|
30
23
|
|
31
24
|
# @param ole_session [Object] The OLE_QA::Framework::Session session to pass to the Data Object.
|
32
25
|
# @param line_number [Fixnum] The line number this subline object will use for element definitions.
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
26
|
+
def initialize(ole_session, parent_line, line_number = 1)
|
27
|
+
@parent_line = parent_line
|
28
|
+
super(ole_session, line_number)
|
45
29
|
end
|
46
30
|
end
|
47
31
|
end
|
data/lib/module/qa_helpers.rb
CHANGED
@@ -126,7 +126,7 @@ module OLE_QA::Framework::Helpers
|
|
126
126
|
eigenclass = class << self;
|
127
127
|
self
|
128
128
|
end
|
129
|
-
raise StandardError, "
|
129
|
+
raise StandardError, "Function is already defined. (Use the 'force = true' option to suppress this error.)" if eigenclass.instance_methods.include?(name) && ! force
|
130
130
|
eigenclass.class_eval do
|
131
131
|
define_method name.to_s do |*arg|
|
132
132
|
yield *arg
|
@@ -14,4 +14,28 @@
|
|
14
14
|
|
15
15
|
module OLE_QA::Framework::Page_Helpers
|
16
16
|
|
17
|
+
# Set a line object definition on a page object.
|
18
|
+
# - A line object created with this method becomes an accessor attribute
|
19
|
+
# associated with an instance variable on the page or data object on
|
20
|
+
# which it is created.
|
21
|
+
#
|
22
|
+
# @param name [Symbol] The name the new line object will have on the object.
|
23
|
+
# (This will be an instance variable, so it cannot contain spaces.)
|
24
|
+
# @param klas [Class] The class to instantiate for the new line object.
|
25
|
+
# (An error will be returned if the class given is not defined.)
|
26
|
+
# @param force [Boolean] If set to true, this method can be used to override an existing line object definition.
|
27
|
+
#
|
28
|
+
# @raise StandardError if a parameter is of an incorrect type.
|
29
|
+
# @raise StandardError if an instance method already exists for a line object with the same name.
|
30
|
+
# (Suppress with force = true.)
|
31
|
+
#
|
32
|
+
def set_line(name, klas, force = false)
|
33
|
+
raise StandardError, "Name must be a symbol. Given: #{name} (#{name.class})" unless name.instance_of?(Symbol)
|
34
|
+
raise StandardError, "Klas must be a class. Given: #{klas} (#{klas.class})" unless klas.instance_of?(Class)
|
35
|
+
raise StandardError, "Line object is already defined. (Use the 'force = true' option to suppress this error.)" if @lines.include?(name) && ! force
|
36
|
+
instance_variable_set("@#{name}", klas.new(@ole, 1))
|
37
|
+
make_reader(name) unless force
|
38
|
+
@lines << name unless force
|
39
|
+
end
|
40
|
+
alias_method(:line, :set_line)
|
17
41
|
end
|
@@ -15,10 +15,6 @@
|
|
15
15
|
module OLE_QA::Framework::OLEFS
|
16
16
|
# An OLE Financial System PURchasing/Accounts Payable Document
|
17
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
18
|
|
23
19
|
# Set PURAP Document Elements.
|
24
20
|
def set_elements
|
@@ -47,27 +43,26 @@ module OLE_QA::Framework::OLEFS
|
|
47
43
|
element(:vendor_tab_toggle) {b.input(:id => "tab-Vendor-imageToggle")}
|
48
44
|
element(:closed_vendor_name_field) {b.td(:xpath => "//tr/th[div[contains(text(),'Suggested Vendor:')]]/following-sibling::td[1]")}
|
49
45
|
# Route Log Tab
|
50
|
-
element(:route_log_tab_toggle)
|
51
|
-
#
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
46
|
+
element(:route_log_tab_toggle) {b.input(:id => "tab-RouteLog-imageToggle")}
|
47
|
+
# New Purchasing Line Item Elements
|
48
|
+
element(:new_bib_option) {b.radio(:name => 'AttachBib', :index => 0)}
|
49
|
+
element(:existing_bib_option) {b.radio(:name => 'AttachBib', :index => 1)}
|
50
|
+
element(:existing_bib_button) {b.input(:id => 'bibSelectExistingItemButton')}
|
51
|
+
element(:new_bib_button) {b.input(:id => "bibCreateCurrentItemButton")}
|
52
|
+
element(:item_type_selector) {b.select_list(:id => "newPurchasingItemLine.itemTypeDescription")}
|
53
|
+
element(:copies_field) {b.text_field(:id => "newPurchasingItemLine.oleItemQuantity")}
|
54
|
+
element(:parts_field) {b.text_field(:id => "newPurchasingItemLine.itemNoOfParts")}
|
55
|
+
element(:list_price_field) {b.text_field(:id => "newPurchasingItemLine.itemListPrice")}
|
56
|
+
element(:public_view_checkbox) {b.checkbox(:id => "newPurchasingItemLine.itemPublicViewIndicator")}
|
57
|
+
element(:item_price_source_selector) {b.select_list(:id => "newPurchasingItemLine.itemPriceSourceId")}
|
58
|
+
element(:request_source_selector) {b.select_list(:id => "newPurchasingItemLine.requestSourceTypeId")}
|
59
|
+
element(:format_selector) {b.select_list(:id => "newPurchasingItemLine.formatTypeId")}
|
60
|
+
element(:category_selector) {b.select_list(:id => "newPurchasingItemLine.categoryId")}
|
61
|
+
element(:route_to_requestor_checkbox) {b.checkbox(:id => "newPurchasingItemLine.itemRouteToRequestorIndicator")}
|
62
|
+
element(:discount_field) {b.text_field(:id => "newPurchasingItemLine.itemDiscount")}
|
63
|
+
element(:discount_type_selector) {b.select_list(:id => "newPurchasingItemLine.itemDiscountType")}
|
64
|
+
element(:add_button) {b.input(:name => "methodToCall.addItem")}
|
65
|
+
element(:location_selector) {b.select_list(:id => 'newPurchasingItemLine.itemLocation')}
|
70
66
|
end
|
71
|
-
alias_method(:delete_line,:remove_line)
|
72
67
|
end
|
73
68
|
end
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
module OLE_QA::Framework::OLEFS
|
16
16
|
# A Current Items line on an OLE Financial System Invoice e-document.
|
17
|
-
class Invoice_Current_Item < OLE_QA::Framework::
|
17
|
+
class Invoice_Current_Item < OLE_QA::Framework::Line_Object
|
18
18
|
|
19
19
|
def set_elements
|
20
20
|
super
|
@@ -20,7 +20,7 @@ module OLE_QA::Framework::OLEFS
|
|
20
20
|
# of extra recursion to address the multiple sub-objects of an Invoice E-Document.
|
21
21
|
# - The future structure of Invoice documents is presently uncertain, so this is a temporary measure.
|
22
22
|
# If necessary, the framework may be restructured to follow this model.
|
23
|
-
class Invoice_Line < OLE_QA::Framework::
|
23
|
+
class Invoice_Line < OLE_QA::Framework::Line_Object
|
24
24
|
|
25
25
|
# A flexible PO line item object with dynamic ID element definitions on an Invoice document.
|
26
26
|
attr_reader :line_item
|
@@ -28,7 +28,6 @@ module OLE_QA::Framework::OLEFS
|
|
28
28
|
# Set OLE instance & line number, instantiate line item for PO line on Invoice document.
|
29
29
|
def initialize(ole_session, line_number = 1)
|
30
30
|
super(ole_session, line_number)
|
31
|
-
@line_item = OLE_QA::Framework::OLEFS::Invoice_Line_Item.new(@ole, self, 1)
|
32
31
|
end
|
33
32
|
|
34
33
|
# Set invoice line elements.
|
@@ -51,5 +50,9 @@ module OLE_QA::Framework::OLEFS
|
|
51
50
|
def set_functions
|
52
51
|
super
|
53
52
|
end
|
53
|
+
|
54
|
+
def set_sublines
|
55
|
+
subline(:line_item, OLE_QA::Framework::OLEFS::Invoice_Line_Item)
|
56
|
+
end
|
54
57
|
end
|
55
58
|
end
|
@@ -14,38 +14,38 @@
|
|
14
14
|
|
15
15
|
module OLE_QA::Framework::OLEFS
|
16
16
|
# A single Line Item in an OLE Financial System PURAP E-Document.
|
17
|
-
class Line_Item < OLE_QA::Framework::
|
18
|
-
# Create accessor methods for
|
17
|
+
class Line_Item < OLE_QA::Framework::Line_Object
|
18
|
+
# Create accessor methods for subline objects.
|
19
19
|
def set_sublines
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
set_subline(:accounting_line, OLE_QA::Framework::OLEFS::Accounting_Line)
|
21
|
+
set_subline(:notes_line, OLE_QA::Framework::OLEFS::Notes_Line)
|
22
|
+
set_subline(:copies_line, OLE_QA::Framework::OLEFS::Copies_Line)
|
23
23
|
end
|
24
24
|
|
25
25
|
# Set line item elements.
|
26
26
|
def set_elements
|
27
27
|
super
|
28
28
|
# Fields
|
29
|
-
element(:copies_field) {b.text_field(:id => "document.item[#{
|
30
|
-
element(:parts_field) {b.text_field(:id => "document.item[#{
|
31
|
-
element(:list_price_field) {b.text_field(:id => "document.item[#{
|
32
|
-
element(:discount_field) {b.text_field(:id => "document.item[#{
|
29
|
+
element(:copies_field) {b.text_field(:id => "document.item[#{line_id}].oleItemQuantity")}
|
30
|
+
element(:parts_field) {b.text_field(:id => "document.item[#{line_id}].itemNoOfParts")}
|
31
|
+
element(:list_price_field) {b.text_field(:id => "document.item[#{line_id}].itemListPrice")}
|
32
|
+
element(:discount_field) {b.text_field(:id => "document.item[#{line_id}].itemDiscount")}
|
33
33
|
element(:description_field) {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[1]/td[2]")}
|
34
34
|
element(:item_type_field) {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[1]/td[3]")}
|
35
35
|
element(:extended_cost_field) {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[2]/td[3]")}
|
36
36
|
element(:receipt_status_field) {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[3]/td[1]")}
|
37
37
|
# Selectors
|
38
|
-
element(:item_price_source_selector) {b.select_list(:id => "document.item[#{
|
39
|
-
element(:request_source_selector) {b.select_list(:id => "document.item[#{
|
40
|
-
element(:item_type_selector) {b.select_list(:id => "document.item[#{
|
41
|
-
element(:format_selector) {b.select_list(:id => "document.item[#{
|
42
|
-
element(:category_selector) {b.select_list(:id => "document.item[#{
|
43
|
-
element(:discount_type_selector) {b.select_list(:id => "document.item[#{
|
44
|
-
element(:location_selector) {b.select_list(:id => "document.item[#{
|
38
|
+
element(:item_price_source_selector) {b.select_list(:id => "document.item[#{line_id}].itemPriceSourceId")}
|
39
|
+
element(:request_source_selector) {b.select_list(:id => "document.item[#{line_id}].requestSourceId")}
|
40
|
+
element(:item_type_selector) {b.select_list(:id => "document.item[#{line_id}].itemTypeDescription")}
|
41
|
+
element(:format_selector) {b.select_list(:id => "document.item[#{line_id}].formatTypeId")}
|
42
|
+
element(:category_selector) {b.select_list(:id => "document.item[#{line_id}].categoryId")}
|
43
|
+
element(:discount_type_selector) {b.select_list(:id => "document.item[#{line_id}].itemDiscountType")}
|
44
|
+
element(:location_selector) {b.select_list(:id => "document.item[#{line_id}].itemLocation")}
|
45
45
|
# Buttons, Checkboxes, Etc.
|
46
46
|
element(:delete_button) {b.input(:title => "Delete Item #{@line_number}")}
|
47
|
-
element(:route_to_requestor_checkbox) {b.checkbox(:id => "document.item[#{
|
48
|
-
element(:public_view_checkbox) {b.checkbox(:id => "document.item[#{
|
47
|
+
element(:route_to_requestor_checkbox) {b.checkbox(:id => "document.item[#{line_id}].itemRouteToRequestor")}
|
48
|
+
element(:public_view_checkbox) {b.checkbox(:id => "document.item[#{line_id}].itemPublicViewIndicator")}
|
49
49
|
# Readonly Elements
|
50
50
|
# Use these for closed, uneditable fields as with a pre-existing line item on a purchase order.
|
51
51
|
element(:closed_description_field) {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[1]/td[2]")}
|
@@ -67,40 +67,34 @@ module OLE_QA::Framework::OLEFS
|
|
67
67
|
element(:closed_unit_cost_field) {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[5]/td[1]")}
|
68
68
|
element(:closed_discount_field) {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[5]/td[2]")}
|
69
69
|
element(:closed_discount_type_field) {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[5]/td[4]")}
|
70
|
-
# Subtab Toggle Buttons # Matches all of type, then selects by index =
|
71
|
-
element(:accounting_lines_toggle)
|
70
|
+
# Subtab Toggle Buttons # Matches all of type, then selects by index = line_id (i.e. if @line_num is 1, index is 0)
|
71
|
+
element(:accounting_lines_toggle) {b.input(:id => /tab-AccountingLines[0-9]+-imageToggle/, :index => line_id)}
|
72
|
+
# FIXME Re-define and re-enable these toggles
|
72
73
|
#element(:notes_toggle) #TBD - The notes and copies lines are treated as the same line for ID purposes.
|
73
74
|
#element(:copies_toggle) # There is no reliable way of knowing which index either should have without being state-aware.
|
75
|
+
# FIXME Move new_(X)_line elements to line item as their definitions are static in this context.
|
76
|
+
# New Accounting Line Elements
|
77
|
+
element(:account_number_field) {b.text_field(:id => "document.item[#{line_id}].newSourceLine.accountNumber")}
|
78
|
+
element(:chart_selector) {b.select_list(:id => "document.item[#{line_id}].newSourceLine.chartOfAccountsCode")}
|
79
|
+
element(:sub_account_number_field) {b.text_field(:id => "document.item[#{line_id}].newSourceLine.subAccountNumber")}
|
80
|
+
element(:object_field) {b.text_field(:id => "document.item[#{line_id}].newSourceLine.financialObjectCode")}
|
81
|
+
element(:sub_object_field) {b.text_field(:id => "document.item[#{line_id}].newSourceLine.financialSubObjectCode")}
|
82
|
+
element(:project_field) {b.text_field(:id => "document.item[#{line_id}].newSourceLine.projectCode")}
|
83
|
+
element(:org_ref_id_field) {b.text_field(:id => "document.item[#{line_id}].newSourceLine.organizationReferenceId")}
|
84
|
+
element(:dollar_field) {b.text_field(:id => "document.item[#{line_id}].newSourceLine.amount")}
|
85
|
+
element(:percent_field) {b.text_field(:id => "document.item[#{line_id}].newSourceLine.accountLinePercent")}
|
86
|
+
element(:add_account_button) {b.input(:name => "methodToCall.insertSourceLine.line#{line_id}.anchoraccountingSourceAnchor")}
|
87
|
+
# New Notes Line Elements
|
88
|
+
element(:note_type_selector) {b.select_list(:id => "document.item[#{line_id}].noteTypeId")}
|
89
|
+
element(:note_field) {b.text_field(:id => "document.item[#{line_id}].note")}
|
90
|
+
element(:add_note_button) {b.input(:name => "methodToCall.addNote.line#{line_id}")}
|
91
|
+
# New Copies Line Elements
|
92
|
+
# FIXME Update all definitions below
|
93
|
+
element(:num_copies_field) {b.text_field(:id => "document.item[#{line_id}].itemCopies")}
|
94
|
+
element(:num_parts_field) {b.text_field(:id => "")}
|
95
|
+
element(:location_copies_selector) {b.select_list(:id => "document.item[#{line_id}].locationCopies")}
|
96
|
+
element(:starting_copy_field) {b.text_field(:id => "document.item[#{line_id}].startingCopyNumber")}
|
97
|
+
element(:add_copy_button) {b.input(:name => "methodToCall.addCopy.line#{line_id}")}
|
74
98
|
end
|
75
|
-
|
76
|
-
def create_accounting_line(which = 1)
|
77
|
-
create_subline("accounting_line_#{which}","Accounting_Line", which)
|
78
|
-
end
|
79
|
-
alias_method(:add_accounting_line,:create_accounting_line)
|
80
|
-
|
81
|
-
def create_notes_line(which = 1)
|
82
|
-
create_subline("notes_line_#{which}","Notes_Line", which)
|
83
|
-
end
|
84
|
-
alias_method(:add_notes_line,:create_notes_line)
|
85
|
-
|
86
|
-
def create_copies_line(which = 1)
|
87
|
-
create_subline("copies_line_#{which}","Copies_Line", which)
|
88
|
-
end
|
89
|
-
alias_method(:add_copies_line,:create_copies_line)
|
90
|
-
|
91
|
-
def remove_accounting_line(which = 1)
|
92
|
-
remove_subline("accounting_line_#{which}")
|
93
|
-
end
|
94
|
-
alias_method(:delete_accounting_line,:remove_accounting_line)
|
95
|
-
|
96
|
-
def remove_notes_line(which = 1)
|
97
|
-
remove_subline("notes_line_#{which}")
|
98
|
-
end
|
99
|
-
alias_method(:delete_notes_line,:remove_notes_line)
|
100
|
-
|
101
|
-
def remove_copies_line(which = 1)
|
102
|
-
remove_subline("copies_line_#{which}")
|
103
|
-
end
|
104
|
-
alias_method(:delete_copies_line,:remove_copies_line)
|
105
99
|
end
|
106
100
|
end
|
@@ -14,12 +14,13 @@
|
|
14
14
|
|
15
15
|
module OLE_QA::Framework::OLEFS
|
16
16
|
# A single line on an OLE Financial System Receiving Document
|
17
|
-
class Receiving_Line < OLE_QA::Framework::
|
17
|
+
class Receiving_Line < OLE_QA::Framework::Line_Object
|
18
18
|
# Create accessor methods for new subline objects.
|
19
19
|
def set_sublines
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
set_subline(:exception_notes_line, OLE_QA::Framework::OLEFS::Exception_Notes_Line)
|
21
|
+
set_subline(:receipt_notes_line, OLE_QA::Framework::OLEFS::Receipt_Notes_Line)
|
22
|
+
set_subline(:copies_line, OLE_QA::Framework::OLEFS::Copies_Line)
|
23
|
+
set_subline(:processing_line, OLE_QA::Framework::OLEFS::Processing_Line)
|
23
24
|
end
|
24
25
|
|
25
26
|
# Set receiving line elements.
|
@@ -32,57 +33,26 @@ module OLE_QA::Framework::OLEFS
|
|
32
33
|
element(:prior_parts_received_field) {b.td(:xpath => "//table[@summary='Items Section']/tbody/tr/td[1][b[contains(text(),'#{@line_number}')]]/following-sibling::td[7]")}
|
33
34
|
element(:quantity_to_be_received_field) {b.td(:xpath => "//table[@summary='Items Section']/tbody/tr/td[1][b[contains(text(),'#{@line_number}')]]/following-sibling::td[8]")}
|
34
35
|
element(:parts_to_be_received_field) {b.td(:xpath => "//table[@summary='Items Section']/tbody/tr/td[1][b[contains(text(),'#{@line_number}')]]/following-sibling::td[9]")}
|
35
|
-
element(:item_received_quantity_field) {b.text_field(:id => "document.item[#{
|
36
|
-
element(:item_received_parts_field) {b.text_field(:id => "document.item[#{
|
37
|
-
element(:item_returned_quantity_field) {b.text_field(:id => "document.item[#{
|
38
|
-
element(:item_returned_parts_field) {b.text_field(:id => "document.item[#{
|
39
|
-
element(:item_damaged_quantity_field) {b.text_field(:id => "document.item[#{
|
40
|
-
element(:item_damaged_parts_field) {b.text_field(:id => "document.item[#{
|
41
|
-
element(:available_to_public_checkbox) {b.checkbox(:id => "document.item[#{
|
42
|
-
element(:public_view_checkbox) {b.checkbox(:id => "document.item[#{
|
36
|
+
element(:item_received_quantity_field) {b.text_field(:id => "document.item[#{line_id}].oleItemReceivedTotalQuantity")}
|
37
|
+
element(:item_received_parts_field) {b.text_field(:id => "document.item[#{line_id}].oleItemReceivedTotalParts")}
|
38
|
+
element(:item_returned_quantity_field) {b.text_field(:id => "document.item[#{line_id}].oleItemReturnedTotalQuantity")}
|
39
|
+
element(:item_returned_parts_field) {b.text_field(:id => "document.item[#{line_id}].oleItemReturnedTotalParts")}
|
40
|
+
element(:item_damaged_quantity_field) {b.text_field(:id => "document.item[#{line_id}].oleItemDamagedTotalQuantity")}
|
41
|
+
element(:item_damaged_parts_field) {b.text_field(:id => "document.item[#{line_id}].oleItemDamagedTotalParts")}
|
42
|
+
element(:available_to_public_checkbox) {b.checkbox(:id => "document.item[#{line_id}].availableToPublic")}
|
43
|
+
element(:public_view_checkbox) {b.checkbox(:id => "document.item[#{line_id}].availableToPublic")}
|
43
44
|
element(:exception_notes_toggle) {b.input(:xpath => "//tr[td/b[contains(text(),'#{@line_number}')]]/following-sibling::tr[2]/td[1]/table/tbody/tr[1]/th/div/input")}
|
44
45
|
element(:receipt_notes_toggle) {b.input(:xpath => "//tr[td/b[contains(text(),'#{@line_number}')]]/following-sibling::tr[3]/td[1]/table/tbody/tr[1]/th/div/input")}
|
45
46
|
element(:special_processing_instructions_toggle) {b.input(:xpath => "//tr[td/b[contains(text(),'#{@line_number}')]]/following-sibling::tr[4]/td[1]/table/tbody/tr[1]/th/div/input")}
|
47
|
+
# FIXME add copies line toggle
|
48
|
+
# New Receipt Note Elements
|
49
|
+
element(:receipt_note_type_selector) {b.select_list(:id => "document.item[#{line_id}].noteTypeId")}
|
50
|
+
element(:receipt_note_field) {b.text_field(:id => "document.item[#{line_id}].receiptNotes")}
|
51
|
+
element(:add_receipt_note_button) {b.input(:name => "methodToCall.addReceiptNote.line#{line_id}")}
|
52
|
+
# New Exception Note Elements
|
53
|
+
element(:exception_type_selector) {b.select_list(:id => "document.item[#{line_id}].exceptionTypeId")}
|
54
|
+
element(:exception_note_field) {b.text_field(:id => "document.item[#{line_id}].exceptionNotes")}
|
55
|
+
element(:add_exception_note_button) {b.input(:name => "methodToCall.addExceptionNOte.line#{line_id}")}
|
46
56
|
end
|
47
|
-
|
48
|
-
def create_exception_notes_line(which = 1)
|
49
|
-
create_subline("exception_notes_line_#{which}","Exception_Notes_Line", which)
|
50
|
-
end
|
51
|
-
alias_method(:add_exception_notes_line,:create_exception_notes_line)
|
52
|
-
|
53
|
-
def create_receipt_notes_line(which = 1)
|
54
|
-
create_subline("receipt_notes_line_#{which}","Receipt_Notes_Line", which)
|
55
|
-
end
|
56
|
-
alias_method(:add_receipt_notes_line,:create_receipt_notes_line)
|
57
|
-
|
58
|
-
def create_copies_line(which = 1)
|
59
|
-
create_subline("copies_line_#{which}","Copies_Line", which)
|
60
|
-
end
|
61
|
-
alias_method(:add_copies_line,:create_copies_line)
|
62
|
-
|
63
|
-
def create_processing_line(which = 1)
|
64
|
-
create_subline("processing_line_#{which}","Processing_Line", which)
|
65
|
-
end
|
66
|
-
alias_method(:add_processing_line,:create_processing_line)
|
67
|
-
|
68
|
-
def remove_exception_notes_line(which = 1)
|
69
|
-
remove_subline("exception_notes_line_#{which}")
|
70
|
-
end
|
71
|
-
alias_method(:delete_exception_notes_line,:remove_exception_notes_line)
|
72
|
-
|
73
|
-
def remove_receipt_notes_line(which = 1)
|
74
|
-
remove_subline("receipt_notes_line_#{which}")
|
75
|
-
end
|
76
|
-
alias_method(:delete_receipt_notes_line,:remove_receipt_notes_line)
|
77
|
-
|
78
|
-
def remove_copies_line(which = 1)
|
79
|
-
remove_subline("copies_line_#{which}")
|
80
|
-
end
|
81
|
-
alias_method(:delete_copies_line,:remove_copies_line)
|
82
|
-
|
83
|
-
def remove_processing_line(which = 1)
|
84
|
-
remove_subline("processing_line_#{which}")
|
85
|
-
end
|
86
|
-
alias_method(:delete_processing_line,:remove_processing_line)
|
87
57
|
end
|
88
58
|
end
|