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.
Files changed (123) hide show
  1. data/CHANGELOG.md +882 -0
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +45 -0
  4. data/LICENSE.md +14 -0
  5. data/README.md +17 -0
  6. data/Rakefile.rb +25 -0
  7. data/examples/README.md +57 -0
  8. data/examples/create_bib_record.rb +64 -0
  9. data/examples/create_requisition.rb +96 -0
  10. data/examples/purap_workflow_test.rb +185 -0
  11. data/lib/common/common_object.rb +57 -0
  12. data/lib/common/data_object.rb +21 -0
  13. data/lib/common/line_object.rb +44 -0
  14. data/lib/common/page.rb +72 -0
  15. data/lib/common/subline_object.rb +47 -0
  16. data/lib/config/default_options.yml +7 -0
  17. data/lib/docstore/docstore.rb +13 -0
  18. data/lib/module/qa_data_helpers.rb +17 -0
  19. data/lib/module/qa_helpers.rb +153 -0
  20. data/lib/module/qa_page_helpers.rb +33 -0
  21. data/lib/ole-qa-framework.rb +178 -0
  22. data/lib/ole_qa_framework/COMPATIBILITY.rb +20 -0
  23. data/lib/ole_qa_framework/VERSION.rb +20 -0
  24. data/lib/olefs/common/e_doc.rb +79 -0
  25. data/lib/olefs/common/line_object.rb +39 -0
  26. data/lib/olefs/common/lookup.rb +30 -0
  27. data/lib/olefs/common/purap_document.rb +73 -0
  28. data/lib/olefs/objects/line_item.rb +105 -0
  29. data/lib/olefs/objects/new_line_item.rb +44 -0
  30. data/lib/olefs/objects/new_preq_line_item.rb +43 -0
  31. data/lib/olefs/objects/new_receiving_line.rb +42 -0
  32. data/lib/olefs/objects/preq_line_item.rb +68 -0
  33. data/lib/olefs/objects/receiving_line.rb +88 -0
  34. data/lib/olefs/pages/building_lookup.rb +36 -0
  35. data/lib/olefs/pages/main_menu.rb +23 -0
  36. data/lib/olefs/pages/payment_request.rb +67 -0
  37. data/lib/olefs/pages/payment_request_creation.rb +44 -0
  38. data/lib/olefs/pages/purchase_order.rb +68 -0
  39. data/lib/olefs/pages/receiving_document.rb +49 -0
  40. data/lib/olefs/pages/requisition.rb +61 -0
  41. data/lib/olefs/pages/vendor_lookup.rb +40 -0
  42. data/lib/olefs/subobjects/accounting_line.rb +46 -0
  43. data/lib/olefs/subobjects/copies_line.rb +32 -0
  44. data/lib/olefs/subobjects/exception_notes_line.rb +26 -0
  45. data/lib/olefs/subobjects/invoice_notes_line.rb +25 -0
  46. data/lib/olefs/subobjects/new_accounting_line.rb +43 -0
  47. data/lib/olefs/subobjects/new_copies_line.rb +37 -0
  48. data/lib/olefs/subobjects/new_exception_notes_line.rb +30 -0
  49. data/lib/olefs/subobjects/new_invoice_notes_line.rb +35 -0
  50. data/lib/olefs/subobjects/new_notes_line.rb +36 -0
  51. data/lib/olefs/subobjects/new_receipt_notes_line.rb +35 -0
  52. data/lib/olefs/subobjects/notes_line.rb +29 -0
  53. data/lib/olefs/subobjects/processing_line.rb +24 -0
  54. data/lib/olefs/subobjects/receipt_notes_line.rb +25 -0
  55. data/lib/olels/common/e_doc.rb +23 -0
  56. data/lib/olels/common/editor.rb +92 -0
  57. data/lib/olels/common/line_object.rb +39 -0
  58. data/lib/olels/common/lookup.rb +30 -0
  59. data/lib/olels/objects/access_info_line.rb +25 -0
  60. data/lib/olels/objects/data_line.rb +31 -0
  61. data/lib/olels/objects/editor_note.rb +79 -0
  62. data/lib/olels/objects/holdings_note.rb +26 -0
  63. data/lib/olels/objects/item_note.rb +26 -0
  64. data/lib/olels/objects/ownership_extent_line.rb +40 -0
  65. data/lib/olels/pages/bib_editor.rb +63 -0
  66. data/lib/olels/pages/describe_workbench.rb +42 -0
  67. data/lib/olels/pages/instance_editor.rb +80 -0
  68. data/lib/olels/pages/item_editor.rb +91 -0
  69. data/lib/olels/pages/loan.rb +102 -0
  70. data/lib/olels/pages/main_menu.rb +31 -0
  71. data/lib/olels/pages/patron_lookup.rb +44 -0
  72. data/lib/olels/pages/return.rb +64 -0
  73. data/lib/olels/subobjects/ownership_note.rb +26 -0
  74. data/ole-qa-framework.gemspec +30 -0
  75. data/pkg/ole-qa-framework-2.1.0.gem +0 -0
  76. data/spec/common/browser_spec.rb +37 -0
  77. data/spec/common/data_object_spec.rb +37 -0
  78. data/spec/common/line_object_spec.rb +49 -0
  79. data/spec/common/page_spec.rb +44 -0
  80. data/spec/common/subline_object_spec.rb +54 -0
  81. data/spec/modules/qa_helpers_spec.rb +55 -0
  82. data/spec/modules/qa_page_helpers_spec.rb +43 -0
  83. data/spec/olefs/accounting_line_spec.rb +85 -0
  84. data/spec/olefs/building_lookup_spec.rb +45 -0
  85. data/spec/olefs/copies_line_spec.rb +70 -0
  86. data/spec/olefs/edocs_spec.rb +75 -0
  87. data/spec/olefs/exception_notes_line_spec.rb +52 -0
  88. data/spec/olefs/invoice_notes_line_spec.rb +45 -0
  89. data/spec/olefs/line_item_spec.rb +155 -0
  90. data/spec/olefs/lookup_spec.rb +44 -0
  91. data/spec/olefs/main_menu_spec.rb +34 -0
  92. data/spec/olefs/notes_line_spec.rb +65 -0
  93. data/spec/olefs/patron_lookup_spec.rb +54 -0
  94. data/spec/olefs/payment_request_spec.rb +85 -0
  95. data/spec/olefs/preq_creation_spec.rb +43 -0
  96. data/spec/olefs/preq_line_item_spec.rb +111 -0
  97. data/spec/olefs/processing_line_spec.rb +44 -0
  98. data/spec/olefs/purap_document_spec.rb +58 -0
  99. data/spec/olefs/purchase_order_spec.rb +77 -0
  100. data/spec/olefs/receipt_notes_line_spec.rb +54 -0
  101. data/spec/olefs/receive_spec.rb +66 -0
  102. data/spec/olefs/receiving_line_spec.rb +125 -0
  103. data/spec/olefs/requisition_spec.rb +83 -0
  104. data/spec/olefs/vendor_lookup_spec.rb +49 -0
  105. data/spec/olels/access_info_line_spec.rb +40 -0
  106. data/spec/olels/bib_editor_spec.rb +84 -0
  107. data/spec/olels/data_line_spec.rb +44 -0
  108. data/spec/olels/describe_workbench_spec.rb +44 -0
  109. data/spec/olels/editor_spec.rb +56 -0
  110. data/spec/olels/edocs_spec.rb +42 -0
  111. data/spec/olels/holdings_note_spec_spec.rb +41 -0
  112. data/spec/olels/instance_editor_spec.rb +81 -0
  113. data/spec/olels/item_editor_spec.rb +94 -0
  114. data/spec/olels/item_note_spec.rb +41 -0
  115. data/spec/olels/loan_spec.rb +104 -0
  116. data/spec/olels/lookup_spec.rb +38 -0
  117. data/spec/olels/main_menu_spec.rb +35 -0
  118. data/spec/olels/ownership_extent_line_spec.rb +58 -0
  119. data/spec/olels/ownership_note_spec.rb +41 -0
  120. data/spec/olels/return_spec.rb +72 -0
  121. data/spec/spec_helper.rb +21 -0
  122. data/spec/workflows/purap_spec.rb +221 -0
  123. metadata +313 -0
@@ -0,0 +1,91 @@
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::OLELS
16
+ # The OLE Library System MARC Item Record Editor Screen
17
+ class Item_Editor < Editor
18
+ # Set Item Editor screen elements.
19
+ def set_elements
20
+ super
21
+ # Override message in Editor base class, add multi-message element.
22
+ element(:message, true) {b.span(:id => "workItemMessage_span")}
23
+ element(:messages) {b.span(:id => "workItemMessage_span").font}
24
+ # Holdings Location/Call Number Information
25
+ element(:holdings_location_field) {b.span(:id => "OleHoldingLocationLevelName_control")}
26
+ element(:holdings_prefix_field) {b.span(:id => "OleHoldingCallNumberPrefix_control")}
27
+ element(:holdings_shelving_order_field) {b.span(:id => "OleHoldingShelvingOrder_control")}
28
+ element(:holdings_call_number_field) {b.span(:id => "OleHoldingCallNumber_control")}
29
+ element(:holdings_call_number_type_field) {b.span(:id => "OleHoldingShelvingScheme_control")}
30
+ # Item Location/Call Number Information
31
+ element(:location_field) {b.text_field(:id => "OleItemLocationLevelName_control")}
32
+ element(:prefix_field) {b.text_field(:id => "OleItemCallNumberPrefix_control")}
33
+ element(:shelving_order_field) {b.text_field(:id => "OleItemShelvingOrder_control")}
34
+ element(:call_number_field) {b.text_field(:id => "OleItemCallNumber_control")}
35
+ element(:call_number_type_selector) {b.select_list(:id => "OleItemShelvingScheme_control")}
36
+ element(:browse_button) {b.button(:id => "callNumberItemBrowseLink")}
37
+ # Item Information
38
+ element(:item_id_field) {b.text_field(:id => "oleItemIdentifier_ID_control")}
39
+ element(:barcode_field) {b.text_field(:id => "oleItemAccessInformationBarcode_control")}
40
+ element(:barcode_arsl_field) {b.text_field(:id => "oleItemBarcodeARSL_control")}
41
+ element(:former_identifiers_field) {b.text_field(:id => "oleItemFormerIdentifier_control")}
42
+ element(:statistical_searching_codes_selector) {b.select_list(:id => "oleItemStatisticalSearchingCodes_control")}
43
+ element(:temp_item_type_selector) {b.select_list(:id => "oleItemTemporaryItemType_control")}
44
+ element(:enumeration_field) {b.text_field(:id => "oleItemEnumeration_control")}
45
+ element(:chronology_field) {b.text_field(:id => "oleItemChronology_control")}
46
+ element(:copy_number_field) {b.text_field(:id => "oleItemCopyNumber_control")}
47
+ element(:access_info_uri_field) {b.text_field(:id => "oleItemAccessInformationURI_control")}
48
+ element(:item_type_selector) {b.select_list(:id => "oleItemItemType_control")}
49
+ element(:number_of_pieces_field) {b.select_list(:id => "oleItemNumberOfPiece_control")}
50
+ # Acquisition Information
51
+ element(:po_line_item_id_field) {b.text_field(:id => "oleItemPoID_control")}
52
+ element(:vendor_line_item_id_field) {b.text_field(:id => "oleItemVendorLineItemID_control")}
53
+ element(:fund_field) {b.text_field(:id => "oleItemFund_control")}
54
+ element(:price_field) {b.text_field(:id => "oleItemPrice_control")}
55
+ element(:donor_public_display_field) {b.text_field(:id => "oleItemDonorPublicDisplay_control")}
56
+ element(:donor_note_field) {b.text_field(:id => "oleItemDonorNote_control")}
57
+ # Circulation Information
58
+ element(:item_status_selector) {b.select_list(:id => "oleItemStatus_control")}
59
+ element(:checkin_note_field) {b.text_field(:id => "oleItemCheckinNote_control")}
60
+ element(:item_effective_status_date) {b.text_field(:id => "oleItemStatusEffectiveDate_control")}
61
+ element(:fast_add_checkbox) {b.checkbox(:id => "oleItemFastAdd_control")}
62
+ element(:staff_only_checkbox) {b.checkbox(:id => "oleItemStaffOnly_control")}
63
+ # Extended Information
64
+ element(:high_density_storage_field) {b.text_field(:id => "oleItemHighDensityStorage_control")}
65
+ end
66
+
67
+ # Set commonly-used functions on the Item Editor page.
68
+ def set_functions
69
+ super
70
+ # Return an array containing the text of multiple message elements.
71
+ function(:get_messages) {ary_out = [] ; messages.each {|msg| ary_out << msg.text} ; ary_out}
72
+ end
73
+
74
+ # Create an item note line object.
75
+ def set_lines
76
+ create_item_note(1)
77
+ end
78
+
79
+ # Add an item note line object.
80
+ def create_item_note(which = 1)
81
+ create_line("item_note_#{which}","Item_Note",which)
82
+ end
83
+ alias_method(:add_item_note,:create_item_note)
84
+
85
+ # Remove an item note line object.
86
+ def remove_item_note(which = 1)
87
+ remove_line("item_note_#{which}")
88
+ end
89
+ alias_method(:delete_item_note,:remove_item_note)
90
+ end
91
+ end
@@ -0,0 +1,102 @@
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::OLELS
16
+ # The Loan page in the OLE Library System.
17
+ class Loan < OLE_QA::Framework::Page
18
+ def initialize(ole_session)
19
+ url = ole_session.ls_url + 'portal.do?channelTitle=Loan&channelUrl='
20
+ url += ole_session.ls_url + 'ole-kr-krad/loancontroller?viewId=PatronItemView&methodToCall=start'
21
+ super(ole_session, url)
22
+ end
23
+
24
+ # Set elements for loan page.
25
+ def set_elements
26
+ super
27
+ # Circulation desk elements
28
+ element(:circulation_desk_selector) {b.select_list(:id => 'LoanCirculationDesk_control')}
29
+ element(:circulation_desk_yes) {b.button(:id => 'ChangeCirculationLocationBtn')}
30
+ element(:circulation_desk_no) {b.button(:id => 'CirculationLocationCloseBtn')}
31
+ # Loan Elements
32
+ element(:patron_field) {b.text_field(:id => 'Patron-barcode_control')}
33
+ element(:patron_search_button) {b.fieldset(:id => 'Patron-barcode_fieldset').input(:title => "Search Field")}
34
+ element(:item_field) {b.text_field(:id => 'Patron-item_control')}
35
+ element(:item_search_button) {b.fieldset(:id => 'Patron-item_fieldset').input(:title => "Search Field")}
36
+ element(:fast_add_button) {b.button(:id => 'FastAddItemSectionLink')}
37
+ element(:loan_popup_box) {b.div(:id => "MessagePopupSection")}
38
+ element(:due_date_field) {b.text_field(:id => 'popUpDate_control')}
39
+ element(:due_time_field) {b.text_field(:id => 'popUpTime_control')}
40
+ element(:loan_button) {b.button(:id => 'loanBtn')}
41
+ element(:do_not_loan_button) {b.button(:id => 'noLoanBtn')}
42
+ # Current Item Elements
43
+ element(:current_items_toggle) {b.a(:id => 'Patron-LoanItemListSection-HorizontalBoxSection_toggle').span}
44
+ element(:checked_out_items_toggle) {b.a(:id => 'Patron-ExistingLoanItemListSection-HorizontalBoxSection_toggle').span}
45
+ # General
46
+ element(:loan_messages) {b.div(:id => 'LoanMessageFieldSection').spans(:class => 'uif-message')}
47
+ element(:return_button) {b.button(:id => 'ReturnLinkView-buttons')}
48
+ element(:header_close_button) {b.button(:id => 'headerDoneButton')}
49
+ element(:header_clear_patron_button) {b.button(:id => 'headerClearPatronButton')}
50
+ element(:header_alter_due_date_button) {b.button(:id => 'headerEditDueDateButton')}
51
+ element(:header_claims_return_button) {b.button(:id => 'headerClaimsButton')}
52
+ element(:header_renew_button) {b.button(:id => 'headerRenewalButton')}
53
+ element(:clear_patron_button) {b.button(:id => 'clearPatronButton')}
54
+ element(:close_button) {b.button(:id => 'doneButton')}
55
+ element(:alter_due_date_button) {b.button(:id => 'editDueDateButton')}
56
+ element(:claims_return_button) {b.button(:id => 'claimsButton')}
57
+ element(:renew_button) {b.button(:id => 'renewalButton')}
58
+ # Patron Details Area
59
+ element(:patron_details_toggle) {b.a(:id => 'PatronDetailList-HorizontalBoxSection_toggle').span(:class => "uif-headerText-span")}
60
+ element(:patron_name) {b.div(:id => 'patronName').a}
61
+ element(:patron_type) {b.span(:id => 'patronType_control')}
62
+ element(:patron_preferred_address) {b.span(:id => 'patronPreferredAddress_control')}
63
+ element(:patron_phone_number) {b.span(:id => 'patronPhone_control')}
64
+ element(:patron_email) {b.span(:id => 'patronEmail_control')}
65
+ end
66
+
67
+ # Wait for the return button to be present.
68
+ def wait_for_elements
69
+ super
70
+ @wait_on << :return_button
71
+ @wait_on << :circulation_desk_selector
72
+ end
73
+
74
+ # Set commonly-used functions for loan screen.
75
+ def set_functions
76
+ # Current Item Functions - Pass a (1-based) numerical position to refer to a specific item line.
77
+ # (Defaults to 1.)
78
+ function(:item_selector) {|which = 1| b.checkbox(:id => "checkId_line#{which-1}_control")}
79
+ function(:item_barcode_link) {|which = 1| b.div(:id => "Barcode_line#{which-1}").a}
80
+ function(:item_title) {|which = 1| b.span(:id => "title_line#{which-1}_control")}
81
+ function(:item_author) {|which = 1| b.span(:id => "author_line#{which-1}_control")}
82
+ function(:item_location) {|which = 1| b.span(:id => "itemLocation_line#{which-1}_control")}
83
+ function(:item_call_number) {|which = 1| b.span(:id => "itemCallNumber_line#{which-1}_control")}
84
+ function(:item_number_of_renewals) {|which = 1| b.span(:id => "currentNoOfrenew_line#{which-1}_control")}
85
+ function(:item_due_date) {|which = 1| b.span(:id => "loanDueDate_line#{which-1}_control")}
86
+ function(:item_claims_return_note) {|which = 1| b.span(:id => "claimsReturnNote_line#{which-1}_control")}
87
+ function(:item_claims_return_date) {|which = 1| b.span(:id => "claimsReturnDate_line#{which-1}_control")}
88
+ # Checked Out Items Functions - Pass a (1-based) numerical position to refer to a specific item line.
89
+ # (Defaults to 1.)
90
+ function(:co_item_selector) {|which = 1| b.checkbox(:id => "checkIdRenewal_line#{which-1}_control")}
91
+ function(:co_item_barcode_link) {|which = 1| b.div(:id => "BarcodeRenewal_line#{which-1}").a}
92
+ function(:co_item_title) {|which = 1| b.span(:id => "titleRenewal_line#{which-1}_control")}
93
+ function(:co_item_author) {|which = 1| b.span(:id => "authorRenewal_line#{which-1}_control")}
94
+ function(:co_item_location) {|which = 1| b.span(:id => "itemLocationRenewal_line#{which-1}_control")}
95
+ function(:co_item_call_number) {|which = 1| b.span(:id => "itemCallNumberRenewal_line#{which-1}_control")}
96
+ function(:co_item_number_of_renewals) {|which = 1| b.span(:id => "previousNoOfrenew_line#{which-1}_control")}
97
+ function(:co_item_due_date) {|which = 1| b.span(:id => "loanDueDateRenewal_line#{which-1}_control")}
98
+ function(:co_item_claims_return_note) {|which = 1| b.span(:id => "claimsReturnNoteRenewal_line#{which-1}_control")}
99
+ function(:co_item_claims_return_date) {|which = 1| b.span(:id => "claimsReturnDateRenewal_line#{which-1}_control")}
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,31 @@
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::OLELS
16
+ # The OLE Library System Main Menu Page
17
+ class Main_Menu < OLE_QA::Framework::Page
18
+ # Set page URL to OLE Library System URL
19
+ def initialize(ole_session)
20
+ url = ole_session.ls_url
21
+ super(ole_session, url)
22
+ end
23
+
24
+ def set_elements
25
+ super
26
+ element(:loan_link) {b.link(:text => "Loan")}
27
+ element(:return_link) {b.link(:text => "Return")}
28
+ element(:editor_link) {b.link(:text => "Editor")}
29
+ end
30
+ end
31
+ 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::OLELS
16
+ # The Patron lookup page in the OLE Library System.
17
+ class Patron_Lookup < Lookup
18
+ def initialize(ole_session)
19
+ url = ole_session.ls_url + 'portal.do?channelTitle=Patron&channelUrl='
20
+ url += ole_session.ls_url + 'ole-kr-krad/lookup?methodToCall=start&dataObjectClassName=org.kuali.ole.patron.bo.OlePatronDocument&returnLocation='
21
+ url += ole_session.ls_url + 'portal.do&hideReturnLink=true&showMaintenanceLinks=true'
22
+ super(ole_session, url)
23
+ end
24
+
25
+ # Set Patron Lookup elements.
26
+ def set_elements
27
+ super
28
+ element(:patron_id_field) {b.text_field(:id => "olePatronId_control")}
29
+ element(:barcode_field) {b.text_field(:id => "barcode_control")}
30
+ element(:first_name_field) {b.text_field(:id => "firstName_control")}
31
+ element(:last_name_field) {b.text_field(:id => "lastName_control")}
32
+ element(:borrower_type_selector) {b.select_list(:id => "borrowerType_control")}
33
+ element(:email_address_field) {b.text_field(:id => "emailAddress_control")}
34
+ # Search Controls
35
+ # TODO Move these elements to OLE_QA::Framework::OLELS::Lookup (common) when they become universal.
36
+ element(:active_yes_button) {b.radio(:id => 'activeIndicator_control_0')}
37
+ element(:active_no_button) {b.radio(:id => 'activeIndicator_control_1')}
38
+ element(:active_both_button) {b.radio(:id => 'activeIndicator_control_2')}
39
+ element(:search_button) {b.button(:text => "Search")}
40
+ element(:clear_button) {b.button(:text => "Clear Values")}
41
+ element(:cancel_button) {b.button(:text => "Cancel")}
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,64 @@
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::OLELS
16
+ # The Return page in the OLE Library System.
17
+ class Return < OLE_QA::Framework::Page
18
+ def initialize(ole_session)
19
+ url = ole_session.ls_url + 'portal.do?channelTitle=Loan&channelUrl='
20
+ url += ole_session.ls_url + 'ole-kr-krad/loancontroller?viewId=ReturnItemView&methodToCall=start'
21
+ super(ole_session, url)
22
+ end
23
+
24
+ # Set elements for return page.
25
+ def set_elements
26
+ # General Elements
27
+ element(:loan_button) {b.button(:id => 'LoanScreenLinkView-buttons')}
28
+ element(:end_session_button) {b.button(:id => 'endSessionButton')}
29
+ # Checkin Elements
30
+ element(:damaged_checkin_checkbox) {b.checkbox(:id => 'DamagedCheckIn_control')}
31
+ element(:checkin_date_field) {b.text_field(:id => 'CheckInDate_control')}
32
+ element(:checkin_time_field) {b.text_field(:id => 'CheckInTime_control')}
33
+ element(:item_field) {b.text_field(:id => 'CheckInItem_control')}
34
+ element(:item_search_button) {b.fieldset(:id => 'CheckInItem_fieldset').input(:title => 'Search Field')}
35
+ element(:items_returned_toggle) {b.a(:id => 'ItemReturnedList-HorizontalBoxSection_toggle')}
36
+ # Checkin Message Elements
37
+ element(:checkin_message_box) {b.div(:id => 'MessagePopupSectionForReturn')}
38
+ element(:return_button) {b.button(:id => 'returnBtn')}
39
+ element(:do_not_return_button) {b.button(:id => 'noReturnBtn')}
40
+ # Circulation desk elements
41
+ element(:circulation_desk_selector) {b.select_list(:id => 'LoanCirculationDesk_control')}
42
+ element(:circulation_desk_yes) {b.button(:id => 'ChangeCirculationLocationBtn')}
43
+ element(:circulation_desk_no) {b.button(:id => 'CirculationLocationCloseBtn')}
44
+ end
45
+
46
+ # Wait for the loan button and item barcode field to be present.
47
+ def wait_for_elements
48
+ @wait_on << :loan_button
49
+ @wait_on << :item_field
50
+ end
51
+
52
+ # Set commonly used functions on return page.
53
+ def set_functions
54
+ function(:item_barcode_link) {|which = 1| b.div(:id => "returnBarcode_line#{which-1}").a}
55
+ function(:item_title) {|which = 1| b.span(:id => "returnTitle_line#{which-1}_control")}
56
+ function(:item_author) {|which = 1| b.span(:id => "returnAuthor_line#{which-1}_control")}
57
+ function(:item_location) {|which = 1| b.span(:id => "returnItemLocation_line#{which-1}_control")}
58
+ function(:item_call_number) {|which = 1| b.span(:id => "returnItemCallNumber_line#{which-1}_control")}
59
+ function(:item_checkin_date) {|which = 1| b.span(:id => "returnCheckInDate_line#{which-1}_control")}
60
+ function(:item_status) {|which = 1| b.span(:id => "returnItemStatus_line#{which-1}_control")}
61
+ function(:item_bill_link) {|which = 1| b.div(:id => "returnBill_line#{which-1}").a}
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,26 @@
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::OLELS
16
+ # An Ownership Note on an OLE Library System Extent of Ownership Line.
17
+ class Ownership_Note < OLE_QA::Framework::Subline_Object
18
+ # Set ownership note screen elements.
19
+ def set_elements
20
+ element(:note_type_selector) {b.select_list(:id => "extentSubHoldingNoteTypeField_line#{@line_id}_line#{@subline_id}_control")}
21
+ element(:note_field) {b.text_field(:id => "extentSubHoldingNoteDescField_line#{@line_id}_line#{@subline_id}_control")}
22
+ element(:add_button) {b.button(:id => "oleEowHoldingNotes_addTagButton_line#{@line_id}_line#{@subline_id}")}
23
+ element(:remove_button) {b.button(:id => "oleEowHoldingNotes_removeTagButton_line#{@line_id}_line#{@subline_id}")}
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "ole_qa_framework/VERSION"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ole-qa-framework"
8
+ spec.version = OLE_QA::Framework::VERSION
9
+ spec.authors = ["Jain Waldrip"]
10
+ spec.email = ["jkwaldri@indiana.edu"]
11
+ spec.description = "Watir-Webdriver Based Page-Object Framework for Kuali Open Library Environment QA Testing"
12
+ spec.summary = "Kuali Open Library Environment"
13
+ spec.homepage = "http://www.github.com/jkwaldrip/ole-qa-framework/"
14
+ spec.license = "ECLv2"
15
+
16
+ spec.files = Dir.glob("**/**/**")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.required_ruby_version = '~> 1.9.3'
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "yard"
26
+
27
+ spec.add_dependency "watir-webdriver"
28
+ spec.add_dependency "headless"
29
+ spec.add_dependency "rspec"
30
+ end
Binary file
@@ -0,0 +1,37 @@
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
+ require "rspec"
16
+ require "spec_helper"
17
+
18
+
19
+ describe "The Watir Webdriver" do
20
+
21
+ before :all do
22
+ @ole = OLE_QA::Framework::Session.new
23
+ end
24
+
25
+ after :all do
26
+ @ole.quit
27
+ end
28
+
29
+ it 'should create an instance of Watir Webdriver' do
30
+ @ole.browser.class.should == Watir::Browser
31
+ end
32
+
33
+ it "should be able to open Google" do
34
+ @ole.browser.goto("http://www.google.com")
35
+ @ole.browser.title.should == "Google"
36
+ end
37
+ end
@@ -0,0 +1,37 @@
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
+ require 'rspec'
16
+ require 'spec_helper'
17
+
18
+
19
+ describe 'A Data Object' do
20
+
21
+ before :all do
22
+ @ole = OLE_QA::Framework::Session.new
23
+ @data_object = OLE_QA::Framework::Data_Object.new(@ole)
24
+ end
25
+
26
+ after :all do
27
+ @ole.quit
28
+ end
29
+
30
+ it 'should create a new instance' do
31
+ @data_object.class.should == OLE_QA::Framework::Data_Object
32
+ end
33
+
34
+ it 'should have a browser accessor' do
35
+ @data_object.browser.class.should == @ole.browser.class
36
+ end
37
+ end