ole-qa-framework 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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