exlibris-aleph 1.1.0 → 2.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.
Files changed (268) hide show
  1. data/README.md +199 -82
  2. data/Rakefile +8 -14
  3. data/lib/exlibris-aleph.rb +0 -3
  4. data/lib/exlibris/aleph/admin_library.rb +27 -0
  5. data/lib/exlibris/aleph/api/base.rb +27 -0
  6. data/lib/exlibris/aleph/api/client/base.rb +86 -0
  7. data/lib/exlibris/aleph/api/client/patron.rb +20 -0
  8. data/lib/exlibris/aleph/api/client/patron/address.rb +22 -0
  9. data/lib/exlibris/aleph/api/client/patron/record.rb +23 -0
  10. data/lib/exlibris/aleph/api/client/patron/record/item.rb +26 -0
  11. data/lib/exlibris/aleph/api/client/patron/record/item/create_hold.rb +31 -0
  12. data/lib/exlibris/aleph/api/client/patron/record/item/create_hold/parameters.rb +55 -0
  13. data/lib/exlibris/aleph/api/client/patron/record/item/hold.rb +29 -0
  14. data/lib/exlibris/aleph/api/client/patron/status.rb +22 -0
  15. data/lib/exlibris/aleph/api/client/record.rb +21 -0
  16. data/lib/exlibris/aleph/api/client/record/filters.rb +23 -0
  17. data/lib/exlibris/aleph/api/client/record/holding.rb +23 -0
  18. data/lib/exlibris/aleph/api/client/record/holdings.rb +23 -0
  19. data/lib/exlibris/aleph/api/client/record/item.rb +23 -0
  20. data/lib/exlibris/aleph/api/client/record/items.rb +23 -0
  21. data/lib/exlibris/aleph/api/reader/base.rb +15 -0
  22. data/lib/exlibris/aleph/api/reader/patron.rb +19 -0
  23. data/lib/exlibris/aleph/api/reader/patron/address.rb +90 -0
  24. data/lib/exlibris/aleph/api/reader/patron/record.rb +38 -0
  25. data/lib/exlibris/aleph/api/reader/patron/record/item.rb +77 -0
  26. data/lib/exlibris/aleph/api/reader/patron/record/item/create_hold.rb +33 -0
  27. data/lib/exlibris/aleph/api/reader/patron/record/item/hold.rb +56 -0
  28. data/lib/exlibris/aleph/api/reader/patron/status.rb +33 -0
  29. data/lib/exlibris/aleph/api/reader/record.rb +10 -0
  30. data/lib/exlibris/aleph/api/reader/record/item.rb +45 -0
  31. data/lib/exlibris/aleph/collection.rb +26 -0
  32. data/lib/exlibris/aleph/config.rb +17 -57
  33. data/lib/exlibris/aleph/holding.rb +59 -0
  34. data/lib/exlibris/aleph/holding/metadata.rb +28 -0
  35. data/lib/exlibris/aleph/holdings.rb +51 -0
  36. data/lib/exlibris/aleph/item.rb +138 -0
  37. data/lib/exlibris/aleph/item/call_number.rb +14 -0
  38. data/lib/exlibris/aleph/item/circulation_policy.rb +30 -0
  39. data/lib/exlibris/aleph/item/circulation_policy/display.rb +16 -0
  40. data/lib/exlibris/aleph/item/circulation_policy/identifier.rb +34 -0
  41. data/lib/exlibris/aleph/item/circulation_policy/privileges.rb +72 -0
  42. data/lib/exlibris/aleph/item/circulation_status.rb +31 -0
  43. data/lib/exlibris/aleph/item/display_mask.rb +19 -0
  44. data/lib/exlibris/aleph/item/opac_note.rb +17 -0
  45. data/lib/exlibris/aleph/item/processing_status.rb +23 -0
  46. data/lib/exlibris/aleph/item/queue.rb +32 -0
  47. data/lib/exlibris/aleph/item/status.rb +23 -0
  48. data/lib/exlibris/aleph/items.rb +51 -0
  49. data/lib/exlibris/aleph/metadata.rb +25 -0
  50. data/lib/exlibris/aleph/patron.rb +18 -82
  51. data/lib/exlibris/aleph/patron/address.rb +56 -0
  52. data/lib/exlibris/aleph/patron/circulation_policy.rb +26 -0
  53. data/lib/exlibris/aleph/patron/circulation_policy/identifier.rb +29 -0
  54. data/lib/exlibris/aleph/patron/circulation_policy/privileges.rb +56 -0
  55. data/lib/exlibris/aleph/patron/record.rb +39 -0
  56. data/lib/exlibris/aleph/patron/record/circulation_policy.rb +18 -0
  57. data/lib/exlibris/aleph/patron/record/circulation_policy/privileges.rb +42 -0
  58. data/lib/exlibris/aleph/patron/record/item.rb +63 -0
  59. data/lib/exlibris/aleph/patron/record/item/circulation_policy.rb +21 -0
  60. data/lib/exlibris/aleph/patron/record/item/circulation_policy/privileges.rb +39 -0
  61. data/lib/exlibris/aleph/patron/record/item/create_hold.rb +43 -0
  62. data/lib/exlibris/aleph/patron/record/item/hold.rb +41 -0
  63. data/lib/exlibris/aleph/patron/status.rb +19 -0
  64. data/lib/exlibris/aleph/pickup_location.rb +12 -0
  65. data/lib/exlibris/aleph/record.rb +14 -43
  66. data/lib/exlibris/aleph/record/metadata.rb +8 -0
  67. data/lib/exlibris/aleph/sub_library.rb +30 -0
  68. data/lib/exlibris/aleph/table/base.rb +22 -0
  69. data/lib/exlibris/aleph/table/collections.rb +17 -0
  70. data/lib/exlibris/aleph/table/item/circulation_policies.rb +65 -0
  71. data/lib/exlibris/aleph/table/item/display_masks.rb +19 -0
  72. data/lib/exlibris/aleph/table/patron/circulation_policies.rb +47 -0
  73. data/lib/exlibris/aleph/table/patron/statuses.rb +19 -0
  74. data/lib/exlibris/aleph/table/reader/base.rb +57 -0
  75. data/lib/exlibris/aleph/table/reader/collections.rb +35 -0
  76. data/lib/exlibris/aleph/table/reader/item_circulation_policies.rb +50 -0
  77. data/lib/exlibris/aleph/table/reader/item_display_masks.rb +19 -0
  78. data/lib/exlibris/aleph/table/reader/matcher/base.rb +30 -0
  79. data/lib/exlibris/aleph/table/reader/matcher/collections.rb +17 -0
  80. data/lib/exlibris/aleph/table/reader/matcher/item_circulation_policies.rb +17 -0
  81. data/lib/exlibris/aleph/table/reader/matcher/item_display_masks.rb +17 -0
  82. data/lib/exlibris/aleph/table/reader/matcher/patron_circulation_policies.rb +17 -0
  83. data/lib/exlibris/aleph/table/reader/matcher/patron_statuses.rb +17 -0
  84. data/lib/exlibris/aleph/table/reader/matcher/sub_libraries.rb +17 -0
  85. data/lib/exlibris/aleph/table/reader/patron_circulation_policies.rb +51 -0
  86. data/lib/exlibris/aleph/table/reader/patron_statuses.rb +19 -0
  87. data/lib/exlibris/aleph/table/reader/row/base.rb +25 -0
  88. data/lib/exlibris/aleph/table/reader/row/collections.rb +13 -0
  89. data/lib/exlibris/aleph/table/reader/row/item_circulation_policies.rb +17 -0
  90. data/lib/exlibris/aleph/table/reader/row/item_display_masks.rb +13 -0
  91. data/lib/exlibris/aleph/table/reader/row/patron_circulation_policies.rb +20 -0
  92. data/lib/exlibris/aleph/table/reader/row/patron_statuses.rb +13 -0
  93. data/lib/exlibris/aleph/table/reader/row/sub_libraries.rb +13 -0
  94. data/lib/exlibris/aleph/table/reader/sub_libraries.rb +32 -0
  95. data/lib/exlibris/aleph/table/sub_libraries.rb +11 -0
  96. data/lib/exlibris/aleph/tables_manager.rb +66 -0
  97. data/lib/exlibris/aleph/version.rb +1 -1
  98. data/spec/exlibris/aleph/admin_library_spec.rb +83 -0
  99. data/spec/exlibris/aleph/api/base_spec.rb +23 -0
  100. data/spec/exlibris/aleph/api/client/base_spec.rb +40 -0
  101. data/spec/exlibris/aleph/api/client/patron/address_spec.rb +40 -0
  102. data/spec/exlibris/aleph/api/client/patron/record/item/create_hold/parameters_spec.rb +101 -0
  103. data/spec/exlibris/aleph/api/client/patron/record/item/create_hold_spec.rb +102 -0
  104. data/spec/exlibris/aleph/api/client/patron/record/item/hold_spec.rb +89 -0
  105. data/spec/exlibris/aleph/api/client/patron/record/item_spec.rb +52 -0
  106. data/spec/exlibris/aleph/api/client/patron/record_spec.rb +45 -0
  107. data/spec/exlibris/aleph/api/client/patron/status_spec.rb +40 -0
  108. data/spec/exlibris/aleph/api/client/patron_spec.rb +38 -0
  109. data/spec/exlibris/aleph/api/client/record/filters_spec.rb +46 -0
  110. data/spec/exlibris/aleph/api/client/record/holding_spec.rb +41 -0
  111. data/spec/exlibris/aleph/api/client/record/holdings_spec.rb +46 -0
  112. data/spec/exlibris/aleph/api/client/record/item_spec.rb +41 -0
  113. data/spec/exlibris/aleph/api/client/record/items_spec.rb +46 -0
  114. data/spec/exlibris/aleph/api/client/record_spec.rb +43 -0
  115. data/spec/exlibris/aleph/api/reader/base_spec.rb +18 -0
  116. data/spec/exlibris/aleph/api/reader/patron/address_spec.rb +151 -0
  117. data/spec/exlibris/aleph/api/reader/patron/record/item/create_hold_spec.rb +65 -0
  118. data/spec/exlibris/aleph/api/reader/patron/record/item/hold_spec.rb +145 -0
  119. data/spec/exlibris/aleph/api/reader/patron/record/item_spec.rb +266 -0
  120. data/spec/exlibris/aleph/api/reader/patron/record_spec.rb +98 -0
  121. data/spec/exlibris/aleph/api/reader/patron/status_spec.rb +57 -0
  122. data/spec/exlibris/aleph/api/reader/patron_spec.rb +28 -0
  123. data/spec/exlibris/aleph/api/reader/record/item_spec.rb +178 -0
  124. data/spec/exlibris/aleph/collection_spec.rb +95 -0
  125. data/spec/exlibris/aleph/config_spec.rb +17 -0
  126. data/spec/exlibris/aleph/holding/metadata_spec.rb +57 -0
  127. data/spec/exlibris/aleph/holding_spec.rb +53 -0
  128. data/spec/exlibris/aleph/holdings_spec.rb +59 -0
  129. data/spec/exlibris/aleph/item/call_number_spec.rb +20 -0
  130. data/spec/exlibris/aleph/item/circulation_policy/display_spec.rb +33 -0
  131. data/spec/exlibris/aleph/item/circulation_policy/identifier_spec.rb +154 -0
  132. data/spec/exlibris/aleph/item/circulation_policy/privileges_spec.rb +183 -0
  133. data/spec/exlibris/aleph/item/circulation_policy_spec.rb +146 -0
  134. data/spec/exlibris/aleph/item/circulation_status_spec.rb +83 -0
  135. data/spec/exlibris/aleph/item/display_mask_spec.rb +72 -0
  136. data/spec/exlibris/aleph/item/opac_note_spec.rb +19 -0
  137. data/spec/exlibris/aleph/item/processing_status_spec.rb +75 -0
  138. data/spec/exlibris/aleph/item/queue_spec.rb +31 -0
  139. data/spec/exlibris/aleph/item/status_spec.rb +80 -0
  140. data/spec/exlibris/aleph/item_spec.rb +97 -0
  141. data/spec/exlibris/aleph/items_spec.rb +59 -0
  142. data/spec/exlibris/aleph/metadata_spec.rb +118 -0
  143. data/spec/exlibris/aleph/patron/address_spec.rb +68 -0
  144. data/spec/exlibris/aleph/patron/circulation_policy/identifier_spec.rb +115 -0
  145. data/spec/exlibris/aleph/patron/circulation_policy/privileges_spec.rb +128 -0
  146. data/spec/exlibris/aleph/patron/circulation_policy_spec.rb +119 -0
  147. data/spec/exlibris/aleph/patron/record/circulation_policy/privileges_spec.rb +88 -0
  148. data/spec/exlibris/aleph/patron/record/circulation_policy_spec.rb +37 -0
  149. data/spec/exlibris/aleph/patron/record/item/circulation_policy/privileges_spec.rb +76 -0
  150. data/spec/exlibris/aleph/patron/record/item/circulation_policy_spec.rb +52 -0
  151. data/spec/exlibris/aleph/patron/record/item/create_hold_spec.rb +49 -0
  152. data/spec/exlibris/aleph/patron/record/item/hold_spec.rb +41 -0
  153. data/spec/exlibris/aleph/patron/record/item_spec.rb +64 -0
  154. data/spec/exlibris/aleph/patron/record_spec.rb +30 -0
  155. data/spec/exlibris/aleph/patron/status_spec.rb +72 -0
  156. data/spec/exlibris/aleph/patron_spec.rb +28 -0
  157. data/spec/exlibris/aleph/pickup_location_spec.rb +19 -0
  158. data/spec/exlibris/aleph/record/metadata_spec.rb +120 -0
  159. data/spec/exlibris/aleph/record_spec.rb +44 -0
  160. data/spec/exlibris/aleph/sub_library_spec.rb +110 -0
  161. data/spec/exlibris/aleph/table/base_spec.rb +17 -0
  162. data/spec/exlibris/aleph/table/collections_spec.rb +24 -0
  163. data/spec/exlibris/aleph/table/item/circulation_policies_spec.rb +65 -0
  164. data/spec/exlibris/aleph/table/item/display_masks_spec.rb +26 -0
  165. data/spec/exlibris/aleph/table/patron/circulation_policies_spec.rb +47 -0
  166. data/spec/exlibris/aleph/table/patron/statuses_spec.rb +26 -0
  167. data/spec/exlibris/aleph/table/reader/base_spec.rb +28 -0
  168. data/spec/exlibris/aleph/table/reader/collections_spec.rb +33 -0
  169. data/spec/exlibris/aleph/table/reader/item_circulation_policies_spec.rb +33 -0
  170. data/spec/exlibris/aleph/table/reader/item_display_masks_spec.rb +27 -0
  171. data/spec/exlibris/aleph/table/reader/matcher/base_spec.rb +32 -0
  172. data/spec/exlibris/aleph/table/reader/matcher/collections_spec.rb +39 -0
  173. data/spec/exlibris/aleph/table/reader/matcher/item_circulation_policies_spec.rb +39 -0
  174. data/spec/exlibris/aleph/table/reader/matcher/item_display_masks_spec.rb +40 -0
  175. data/spec/exlibris/aleph/table/reader/matcher/patron_circulation_policies_spec.rb +40 -0
  176. data/spec/exlibris/aleph/table/reader/matcher/patron_statuses_spec.rb +40 -0
  177. data/spec/exlibris/aleph/table/reader/matcher/sub_libraries_spec.rb +40 -0
  178. data/spec/exlibris/aleph/table/reader/patron_circulation_policies_spec.rb +27 -0
  179. data/spec/exlibris/aleph/table/reader/patron_statuses_spec.rb +27 -0
  180. data/spec/exlibris/aleph/table/reader/row/base_spec.rb +20 -0
  181. data/spec/exlibris/aleph/table/reader/row/collections_spec.rb +37 -0
  182. data/spec/exlibris/aleph/table/reader/row/item_circulation_policies_spec.rb +89 -0
  183. data/spec/exlibris/aleph/table/reader/row/item_display_masks_spec.rb +29 -0
  184. data/spec/exlibris/aleph/table/reader/row/patron_circulation_policies_spec.rb +115 -0
  185. data/spec/exlibris/aleph/table/reader/row/patron_statuses_spec.rb +29 -0
  186. data/spec/exlibris/aleph/table/reader/row/sub_libraries_spec.rb +41 -0
  187. data/spec/exlibris/aleph/table/reader/sub_libraries_spec.rb +36 -0
  188. data/spec/exlibris/aleph/table/sub_libraries_spec.rb +19 -0
  189. data/spec/exlibris/aleph/tables_manager_spec.rb +120 -0
  190. data/spec/exlibris/aleph_spec.rb +5 -0
  191. data/spec/spec_helper.rb +27 -0
  192. data/spec/support/mnt/aleph_tab/adm50/tab/filename +0 -0
  193. data/{test → spec/support}/mnt/aleph_tab/alephe/tab/tab_sub_library.eng +0 -0
  194. data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/pc_tab_exp_field_extended.eng +0 -0
  195. data/{test/mnt/aleph_tab → spec/support/mnt/aleph_tab/nyu50/tab}/tab15.eng +2 -0
  196. data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/tab16 +0 -0
  197. data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/tab31 +0 -0
  198. data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/tab37 +0 -0
  199. data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/tab40.eng +0 -0
  200. data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/tab_www_item_desc.eng +0 -0
  201. data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/pc_tab_exp_field_extended.eng +0 -0
  202. data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab15.eng +0 -0
  203. data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab16 +0 -0
  204. data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab31 +0 -0
  205. data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab37 +0 -0
  206. data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab40.eng +0 -0
  207. data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab_www_item_desc.eng +0 -0
  208. data/spec/vcr_cassettes/patron.yml +1443 -0
  209. data/spec/vcr_cassettes/record.yml +763 -0
  210. metadata +351 -165
  211. data/lib/exlibris/aleph/abstract.rb +0 -28
  212. data/lib/exlibris/aleph/rest/base.rb +0 -56
  213. data/lib/exlibris/aleph/tab_helper.rb +0 -303
  214. data/lib/exlibris/aleph/tabs_parser/base.rb +0 -49
  215. data/lib/exlibris/aleph/tabs_parser/pc_tab_exp_field_extended.rb +0 -20
  216. data/lib/exlibris/aleph/tabs_parser/sub_library.rb +0 -32
  217. data/lib/exlibris/aleph/tabs_parser/tab15_by_item_process_status.rb +0 -33
  218. data/lib/exlibris/aleph/tabs_parser/tab15_by_item_status.rb +0 -33
  219. data/lib/exlibris/aleph/tabs_parser/tab31.rb +0 -39
  220. data/lib/exlibris/aleph/tabs_parser/tab37.rb +0 -63
  221. data/lib/exlibris/aleph/tabs_parser/tab40.rb +0 -20
  222. data/lib/exlibris/aleph/tabs_parser/tab_sub_library.rb +0 -21
  223. data/lib/exlibris/aleph/tabs_parser/tab_www_item_desc.rb +0 -20
  224. data/lib/exlibris/aleph/task_installer.rb +0 -25
  225. data/lib/exlibris/aleph/write_attributes.rb +0 -38
  226. data/lib/exlibris/aleph/xml_util.rb +0 -50
  227. data/lib/exlibris/aleph/xservice/bor_auth.rb +0 -47
  228. data/lib/tasks/exlibris-aleph_tasks.rake +0 -48
  229. data/test/config/aleph/alephe/sub_libraries.yml +0 -801
  230. data/test/config/aleph/nyu50/collections.yml +0 -1168
  231. data/test/config/aleph/nyu50/item_permissions_by_item_process_status.yml +0 -61876
  232. data/test/config/aleph/nyu50/item_permissions_by_item_status.yml +0 -17319
  233. data/test/config/aleph/nyu50/items.yml +0 -617
  234. data/test/config/aleph/nyu50/patron_permissions.yml +0 -19720
  235. data/test/config/aleph/nyu50/patrons.yml +0 -249
  236. data/test/config/aleph/nyu50/pickup_locations.yml +0 -2910
  237. data/test/config/aleph/nyu51/collections.yml +0 -41
  238. data/test/config/aleph/nyu51/item_permissions_by_item_process_status.yml +0 -7689
  239. data/test/config/aleph/nyu51/item_permissions_by_item_status.yml +0 -430
  240. data/test/config/aleph/nyu51/items.yml +0 -617
  241. data/test/config/aleph/nyu51/patron_permissions.yml +0 -6588
  242. data/test/config/aleph/nyu51/patrons.yml +0 -237
  243. data/test/config/aleph/nyu51/pickup_locations.yml +0 -456
  244. data/test/config_test.rb +0 -24
  245. data/test/exlibris-aleph_test.rb +0 -7
  246. data/test/mnt/aleph_tab/nyu50/tab/tab15.eng +0 -4742
  247. data/test/mnt/aleph_tab/pc_tab_exp_field_extended.eng +0 -158
  248. data/test/mnt/aleph_tab/tab16 +0 -3792
  249. data/test/mnt/aleph_tab/tab31 +0 -998
  250. data/test/mnt/aleph_tab/tab37 +0 -405
  251. data/test/mnt/aleph_tab/tab40.eng +0 -335
  252. data/test/mnt/aleph_tab/tab_sub_library.eng +0 -378
  253. data/test/mnt/aleph_tab/tab_www_item_desc.eng +0 -208
  254. data/test/patron_test.rb +0 -98
  255. data/test/record_benchmarks.rb +0 -26
  256. data/test/record_test.rb +0 -64
  257. data/test/support/config.yml +0 -2
  258. data/test/tab_helper_benchmarks.rb +0 -53
  259. data/test/tab_helper_test.rb +0 -192
  260. data/test/test_helper.rb +0 -46
  261. data/test/vcr_cassettes/bor_auth.yml +0 -42
  262. data/test/vcr_cassettes/patron.yml +0 -142
  263. data/test/vcr_cassettes/patron_address.yml +0 -45
  264. data/test/vcr_cassettes/patron_bogus_url.yml +0 -731
  265. data/test/vcr_cassettes/patron_error.yml +0 -93
  266. data/test/vcr_cassettes/record.yml +0 -146
  267. data/test/vcr_cassettes/record_bogus_url.yml +0 -690
  268. data/test/xservice/bor_auth_test.rb +0 -28
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Patron
5
+ class Record
6
+ class Item
7
+ describe CirculationPolicy do
8
+ let(:hold_request) { 'N' }
9
+ let(:short_loan) { 'N' }
10
+ let(:photocopy_request) { 'N' }
11
+ let(:booking_request) { 'N' }
12
+ let(:arg) { double }
13
+ before do
14
+ allow(arg).to receive(:hold_request).and_return(hold_request)
15
+ allow(arg).to receive(:short_loan).and_return(short_loan)
16
+ allow(arg).to receive(:photocopy_request).and_return(photocopy_request)
17
+ allow(arg).to receive(:booking_request).and_return(booking_request)
18
+ end
19
+ let(:privileges) { CirculationPolicy::Privileges.new(arg) }
20
+ let(:pickup_locations) do
21
+ [
22
+ PickupLocation.new('PICK1', 'Pickup Location 1'),
23
+ PickupLocation.new('PICK2', 'Pickup Location 2')
24
+ ]
25
+ end
26
+ subject(:circulation_policy) { CirculationPolicy.new(privileges, *pickup_locations) }
27
+ describe '#privileges' do
28
+ subject { circulation_policy.privileges }
29
+ it { should eq privileges }
30
+ end
31
+ describe '#pickup_locations' do
32
+ subject { circulation_policy.pickup_locations }
33
+ it { should be_an Array }
34
+ it { should_not be_empty }
35
+ it { should eq pickup_locations }
36
+ context 'when initialized with no pickup locations' do
37
+ let(:circulation_policy) { CirculationPolicy.new(privileges) }
38
+ it { should be_empty }
39
+ end
40
+ end
41
+ context 'when the privileges argument is not a CirculationPolicy::Privileges' do
42
+ let(:privileges) { 'invalid' }
43
+ it 'should raise an ArgumentError' do
44
+ expect { subject }.to raise_error ArgumentError
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Patron
5
+ class Record
6
+ class Item
7
+ describe CreateHold, vcr: {cassette_name: 'patron'} do
8
+ let(:patron_id) { 'BOR_ID' }
9
+ let(:record_id) { 'NYU01002296594' }
10
+ let(:item_id) { 'NYU50002296594000010' }
11
+ let(:pickup_location) do
12
+ Exlibris::Aleph::PickupLocation.new('BOBST', 'NYU Bobst')
13
+ end
14
+ let(:parameters) { {pickup_location: pickup_location} }
15
+ subject(:create_hold) { CreateHold.new(patron_id, record_id, item_id, parameters) }
16
+ describe '#patron_id' do
17
+ subject { create_hold.patron_id }
18
+ it { should eq patron_id }
19
+ end
20
+ describe '#record_id' do
21
+ subject { create_hold.record_id }
22
+ it { should eq record_id }
23
+ end
24
+ describe '#item_id' do
25
+ subject { create_hold.item_id }
26
+ it { should eq item_id }
27
+ end
28
+ describe '#note' do
29
+ subject { create_hold.note }
30
+ it { should eq 'Action Succeeded' }
31
+ context 'when the patron does not have permissions place a hold on the item' do
32
+ let(:patron_id) { 'BOR_ID_WITHOUT_HOLD_PERMISSION' }
33
+ it { should eq 'Item or like copy is on shelf. Cannot place hold request.' }
34
+ end
35
+ end
36
+ describe '#error?' do
37
+ subject { create_hold.error? }
38
+ it { should be_false }
39
+ context 'when the patron does not have permissions place a hold on the item' do
40
+ let(:patron_id) { 'BOR_ID_WITHOUT_HOLD_PERMISSION' }
41
+ it { should be_true }
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Patron
5
+ class Record
6
+ class Item
7
+ describe Hold, vcr: {cassette_name: 'patron'} do
8
+ let(:patron_id) { 'BOR_ID' }
9
+ let(:record_id) { 'NYU01000864162' }
10
+ let(:item_id) { 'NYU50000864162000010' }
11
+ subject(:hold) { Hold.new(patron_id, record_id, item_id) }
12
+ describe '#patron_id' do
13
+ subject { hold.patron_id }
14
+ it { should eq patron_id }
15
+ end
16
+ describe '#record_id' do
17
+ subject { hold.record_id }
18
+ it { should eq record_id }
19
+ end
20
+ describe '#item_id' do
21
+ subject { hold.item_id }
22
+ it { should eq item_id }
23
+ end
24
+ describe '#pickup_locations' do
25
+ subject { hold.pickup_locations }
26
+ it { should be_an Array }
27
+ end
28
+ describe '#allowed?' do
29
+ subject { hold.allowed? }
30
+ it { should be_true }
31
+ context 'when the patron does not have permissions place a hold on the item' do
32
+ let(:patron_id) { 'BOR_ID_WITHOUT_HOLD_PERMISSION' }
33
+ it { should be_false }
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Patron
5
+ class Record
6
+ describe Item, vcr: {cassette_name: 'patron'} do
7
+ let(:patron_id) { 'BOR_ID' }
8
+ let(:record_id) { 'NYU01000980206' }
9
+ let(:id) { 'NYU50001951476001220' }
10
+ subject(:item) { Item.new(patron_id, record_id, id) }
11
+ it { should be_an Item }
12
+ describe '#patron_id' do
13
+ subject { item.patron_id }
14
+ it { should eq patron_id }
15
+ end
16
+ describe '#record_id' do
17
+ subject { item.record_id }
18
+ it { should eq record_id }
19
+ end
20
+ describe '#id' do
21
+ subject { item.id }
22
+ it { should eq id }
23
+ end
24
+ describe '#item' do
25
+ subject { item.item }
26
+ it { should be_an Aleph::Item }
27
+ end
28
+ describe '#circulation_policy' do
29
+ subject { item.circulation_policy }
30
+ it { should be_an Item::CirculationPolicy }
31
+ it 'should have an empty Array of pickup locations' do
32
+ expect(subject.pickup_locations).to be_an Array
33
+ expect(subject.pickup_locations).to be_empty
34
+ end
35
+ context 'when the circulation policy has pickup locations' do
36
+ let(:record_id) { 'NYU01000864162' }
37
+ let(:id) { 'NYU50000864162000010' }
38
+ it 'should have a non-empty Array of pickup locations' do
39
+ expect(subject.pickup_locations).to be_an Array
40
+ expect(subject.pickup_locations).not_to be_empty
41
+ end
42
+ end
43
+ end
44
+ describe '#hold' do
45
+ let(:record_id) { 'NYU01000864162' }
46
+ let(:id) { 'NYU50000864162000010' }
47
+ subject { item.hold }
48
+ it { should be_an Item::Hold }
49
+ end
50
+ describe '#create_hold' do
51
+ let(:record_id) { 'NYU01002296594' }
52
+ let(:id) { 'NYU50002296594000010' }
53
+ let(:pickup_location) do
54
+ Exlibris::Aleph::PickupLocation.new('BOBST', 'NYU Bobst')
55
+ end
56
+ let(:parameters) { {pickup_location: pickup_location} }
57
+ subject { item.create_hold(parameters) }
58
+ it { should be_an Item::CreateHold }
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Patron
5
+ describe Record, vcr: {cassette_name: 'patron', record: :new_episodes} do
6
+ let(:patron_id) { 'BOR_ID' }
7
+ let(:id) { 'NYU01000980206' }
8
+ subject(:record) { Record.new(patron_id, id) }
9
+ it { should be_an Record }
10
+ describe '#patron_id' do
11
+ subject { record.patron_id }
12
+ it { should eq patron_id }
13
+ end
14
+ describe '#id' do
15
+ subject { record.id }
16
+ it { should eq id }
17
+ end
18
+ describe '#circulation_policy' do
19
+ subject { record.circulation_policy }
20
+ it { should be_a Record::CirculationPolicy }
21
+ end
22
+ describe '#item' do
23
+ let(:item_id) { 'NYU50001951476001220' }
24
+ subject { record.item(item_id) }
25
+ it { should be_a Record::Item }
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Patron
5
+ describe Status do
6
+ let(:code) { '01' }
7
+ let(:display) { 'Patron' }
8
+ subject(:status) { Status.new(code, display) }
9
+ it { should be_a Status }
10
+ describe '#code' do
11
+ subject { status.code }
12
+ it { should eq code }
13
+ end
14
+ describe '#display' do
15
+ subject { status.display }
16
+ it { should eq display }
17
+ end
18
+ describe '#==' do
19
+ subject { status == other_object }
20
+ context 'when the other object is an Patron::Status' do
21
+ context 'and the code is the same' do
22
+ let(:other_object) { Status.new(code, display) }
23
+ it { should be_true }
24
+ end
25
+ context 'but the code is different' do
26
+ let(:other_object) { Status.new('02', display) }
27
+ it { should be_false }
28
+ end
29
+ end
30
+ context 'when the other object is not an Patron::Status' do
31
+ let(:other_object) { "string" }
32
+ it { should be_false }
33
+ end
34
+ end
35
+ describe '#===' do
36
+ subject { status === other_object }
37
+ context 'when the other object is an Patron::Status' do
38
+ context 'and the code is the same' do
39
+ let(:other_object) { Status.new(code, display) }
40
+ it { should be_true }
41
+ end
42
+ context 'but the code is different' do
43
+ let(:other_object) { Status.new('02', display) }
44
+ it { should be_false }
45
+ end
46
+ end
47
+ context 'when the other object is not an Patron::Status' do
48
+ let(:other_object) { "string" }
49
+ it { should be_false }
50
+ end
51
+ end
52
+ describe '#eql?' do
53
+ subject { status.eql?(other_object) }
54
+ context 'when the other object is an Patron::Status' do
55
+ context 'and the code is the same' do
56
+ let(:other_object) { Status.new(code, display) }
57
+ it { should be_true }
58
+ end
59
+ context 'but the code is different' do
60
+ let(:other_object) { Status.new('02', display) }
61
+ it { should be_false }
62
+ end
63
+ end
64
+ context 'when the other object is not an Patron::Status' do
65
+ let(:other_object) { "string" }
66
+ it { should be_false }
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ describe Patron, vcr: {cassette_name: 'patron'} do
5
+ let(:id) { 'BOR_ID' }
6
+ subject(:patron) { Patron.new(id) }
7
+ it { should be_a Patron }
8
+ describe '#id' do
9
+ subject { patron.id }
10
+ it { should eq id }
11
+ end
12
+ describe '#admin_library' do
13
+ subject { patron.admin_library }
14
+ it { should be_an AdminLibrary }
15
+ it { should eql AdminLibrary.new('NYU50')}
16
+ end
17
+ describe '#address' do
18
+ subject { patron.address }
19
+ it { should be_an Patron::Address }
20
+ end
21
+ describe '#record' do
22
+ let(:record_id) { 'NYU01000980206' }
23
+ subject { patron.record(record_id) }
24
+ it { should be_a Patron::Record }
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ describe PickupLocation do
5
+ let(:code) { 'PICK' }
6
+ let(:display) { 'Pickup Location' }
7
+ subject(:pickup_location) { PickupLocation.new(code, display) }
8
+ it { should be_a PickupLocation }
9
+ describe '#code' do
10
+ subject { pickup_location.code }
11
+ it { should eq code }
12
+ end
13
+ describe '#display' do
14
+ subject { pickup_location.display }
15
+ it { should eq display }
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Record
5
+ describe Metadata do
6
+ let(:marc_xml) { %Q{
7
+ <record>
8
+ <info type="Items" href="http://aleph.library.nyu.edu:1891/rest-dlf/record/NYU01001951476/items"/>
9
+ <info type="Holdings" href="http://aleph.library.nyu.edu:1891/rest-dlf/record/NYU01001951476/holdings"/>
10
+ <info type="Filters" href="http://aleph.library.nyu.edu:1891/rest-dlf/record/NYU01001951476/filters"/>
11
+ <leader>00000nas 2200241 a 4500</leader>
12
+ <controlfield tag="001">001951476</controlfield>
13
+ <controlfield tag="003">NNU</controlfield>
14
+ <controlfield tag="005">20131122143305.0</controlfield>
15
+ <controlfield tag="008">910904c19919999nyuqr p 0 0eng d</controlfield>
16
+ <datafield tag="035" ind1=" " ind2=" ">
17
+ <subfield code="a">(CStRLIN)NYUG91-S1859</subfield>
18
+ </datafield>
19
+ <datafield tag="035" ind1=" " ind2=" ">
20
+ <subfield code="a">GLIS008967192</subfield>
21
+ </datafield>
22
+ <datafield tag="035" ind1="9" ind2=" ">
23
+ <subfield code="a">NYUb10896719</subfield>
24
+ </datafield>
25
+ <datafield tag="040" ind1=" " ind2=" ">
26
+ <subfield code="a">NNU</subfield>
27
+ <subfield code="c">NNU</subfield>
28
+ </datafield>
29
+ <datafield tag="090" ind1=" " ind2=" ">
30
+ <subfield code="i">09/04/91 CT</subfield>
31
+ </datafield>
32
+ <datafield tag="245" ind1="0" ind2="0">
33
+ <subfield code="a">Visionaire.</subfield>
34
+ </datafield>
35
+ <datafield tag="260" ind1=" " ind2=" ">
36
+ <subfield code="a">[New York] :</subfield>
37
+ <subfield code="b">Visionaire Publishing,</subfield>
38
+ <subfield code="c">c1991-</subfield>
39
+ </datafield>
40
+ <datafield tag="300" ind1=" " ind2=" ">
41
+ <subfield code="a">v. :</subfield>
42
+ <subfield code="b">ill. (some col.) ;</subfield>
43
+ <subfield code="c">29 cm.</subfield>
44
+ </datafield>
45
+ <datafield tag="310" ind1=" " ind2=" ">
46
+ <subfield code="a">Quarterly</subfield>
47
+ </datafield>
48
+ <datafield tag="362" ind1="0" ind2=" ">
49
+ <subfield code="a">No. 1 (Spring 1991)-</subfield>
50
+ </datafield>
51
+ <datafield tag="500" ind1=" " ind2=" ">
52
+ <subfield code="a">Title from cover.</subfield>
53
+ </datafield>
54
+ <datafield tag="650" ind1=" " ind2="0">
55
+ <subfield code="a">Fashion</subfield>
56
+ <subfield code="v">Periodicals.</subfield>
57
+ </datafield>
58
+ <datafield tag="650" ind1=" " ind2="0">
59
+ <subfield code="a">Art, Modern</subfield>
60
+ <subfield code="y">20th century</subfield>
61
+ <subfield code="v">Periodicals.</subfield>
62
+ </datafield>
63
+ <datafield tag="866" ind1="4" ind2="1">
64
+ <subfield code="l">New School Gimbel</subfield>
65
+ <subfield code="d">Special Collections Periodicals</subfield>
66
+ <subfield code="e">1306</subfield>
67
+ <subfield code="i">
68
+ Latest issues held in Periodicals; bound volumes held Offsite.
69
+ </subfield>
70
+ </datafield>
71
+ <datafield tag="866" ind1="4" ind2="1">
72
+ <subfield code="l">New School Gimbel Offsite</subfield>
73
+ <subfield code="d">Special Collections Periodicals</subfield>
74
+ <subfield code="e">1306</subfield>
75
+ <subfield code="j">1-</subfield>
76
+ <subfield code="k">1991-</subfield>
77
+ </datafield>
78
+ <datafield tag="998" ind1=" " ind2=" ">
79
+ <subfield code="a">09/04/91</subfield>
80
+ <subfield code="t">c</subfield>
81
+ <subfield code="s">9114</subfield>
82
+ <subfield code="n">NNU</subfield>
83
+ <subfield code="d">09/04/91</subfield>
84
+ <subfield code="c">JJR</subfield>
85
+ <subfield code="b">MJD</subfield>
86
+ <subfield code="i">910904</subfield>
87
+ <subfield code="l">NYUG</subfield>
88
+ </datafield>
89
+ <datafield tag="966" ind1="4" ind2="1">
90
+ <subfield code="l">
91
+ New School University Center Special Collections Periodicals
92
+ </subfield>
93
+ <subfield code="e">1306</subfield>
94
+ <subfield code="i">
95
+ Latest issues held in Periodicals; bound volumes held Offsite.
96
+ </subfield>
97
+ </datafield>
98
+ <datafield tag="966" ind1="4" ind2="1">
99
+ <subfield code="l">
100
+ New School University Center Special Collections Periodicals
101
+ </subfield>
102
+ <subfield code="e">1306</subfield>
103
+ <subfield code="j">1-</subfield>
104
+ <subfield code="k">1991-</subfield>
105
+ </datafield>
106
+ </record>
107
+ }}
108
+ subject(:metadata) { Metadata.new(marc_xml) }
109
+ describe '#marc_xml' do
110
+ subject { metadata.marc_xml }
111
+ it { should eq marc_xml.strip }
112
+ end
113
+ describe '#marc_record' do
114
+ subject { metadata.marc_record }
115
+ it { should be_a MARC::Record }
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end