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,146 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Item
5
+ describe CirculationPolicy do
6
+ let(:status_code) { '##' }
7
+ let(:status) { Status.new(status_code) }
8
+ let(:processing_status_code) { 'DP' }
9
+ let(:processing_status) { ProcessingStatus.new(processing_status_code) }
10
+ let(:admin_library) { AdminLibrary.new('ADM50') }
11
+ let(:sub_library) { SubLibrary.new('SUB', 'Sub Library', admin_library) }
12
+ let(:identifier) { CirculationPolicy::Identifier.new(status, processing_status, sub_library) }
13
+ let(:display) { CirculationPolicy::Display.new('Display') }
14
+ let(:row) { double }
15
+ let(:loanable) { 'Y' }
16
+ let(:renewable) { 'Y' }
17
+ let(:requestable) { 'Y' }
18
+ let(:photocopyable) { 'Y' }
19
+ let(:displayable) { 'Y' }
20
+ let(:specific_item) { 'Y' }
21
+ let(:limit_hold) { 'Y' }
22
+ let(:recallable) { 'Y' }
23
+ let(:rush_recallable) { 'Y' }
24
+ let(:reloaning_limit) { '00' }
25
+ let(:bookable) { 'Y' }
26
+ let(:booking_hours) { 'A' }
27
+ let(:privileges) { CirculationPolicy::Privileges.new(row) }
28
+ before do
29
+ allow(row).to receive(:loanable).and_return(loanable)
30
+ allow(row).to receive(:renewable).and_return(renewable)
31
+ allow(row).to receive(:requestable).and_return(requestable)
32
+ allow(row).to receive(:photocopyable).and_return(photocopyable)
33
+ allow(row).to receive(:displayable).and_return(displayable)
34
+ allow(row).to receive(:specific_item).and_return(specific_item)
35
+ allow(row).to receive(:limit_hold).and_return(limit_hold)
36
+ allow(row).to receive(:recallable).and_return(recallable)
37
+ allow(row).to receive(:rush_recallable).and_return(photocopyable)
38
+ allow(row).to receive(:reloaning_limit).and_return(rush_recallable)
39
+ allow(row).to receive(:bookable).and_return(bookable)
40
+ allow(row).to receive(:booking_hours).and_return(booking_hours)
41
+ end
42
+ subject(:circulation_policy) { CirculationPolicy.new(identifier, display, privileges) }
43
+ it { should be_a CirculationPolicy }
44
+ describe '#identifier' do
45
+ subject { circulation_policy.identifier }
46
+ it { should eq identifier }
47
+ end
48
+ describe '#display' do
49
+ subject { circulation_policy.display }
50
+ it { should eq display }
51
+ end
52
+ describe '#privileges' do
53
+ subject { circulation_policy.privileges }
54
+ it { should eq privileges }
55
+ end
56
+ describe '#==' do
57
+ subject { circulation_policy == other_object }
58
+ context 'when the other object is an Item::CirculationPolicy' do
59
+ let(:other_identifier) { identifier }
60
+ let(:other_display) { display }
61
+ let(:other_privileges) { privileges }
62
+ let(:other_object) { CirculationPolicy.new(other_identifier, other_display, other_privileges) }
63
+ context 'but the identifier of the other object is different' do
64
+ let(:other_status) { Status.new('01') }
65
+ let(:other_identifier) { CirculationPolicy::Identifier.new(other_status, processing_status, sub_library) }
66
+ it { should be_false }
67
+ end
68
+ context 'and the identifier of the other object is the same' do
69
+ it { should be_true }
70
+ end
71
+ end
72
+ context 'when the other object is not an Item::CirculationPolicy' do
73
+ let(:other_object) { "invalid" }
74
+ it { should be_false }
75
+ end
76
+ end
77
+ describe '#===' do
78
+ subject { circulation_policy === other_object }
79
+ context 'when the other object is an Item::CirculationPolicy' do
80
+ let(:other_identifier) { identifier }
81
+ let(:other_display) { display }
82
+ let(:other_privileges) { privileges }
83
+ let(:other_object) { CirculationPolicy.new(other_identifier, other_display, other_privileges) }
84
+ context 'but the identifier of the other object is different' do
85
+ let(:other_status) { Status.new('01') }
86
+ let(:other_identifier) { CirculationPolicy::Identifier.new(other_status, processing_status, sub_library) }
87
+ it { should be_false }
88
+ end
89
+ context 'and the identifier of the other object is the same' do
90
+ it { should be_true }
91
+ end
92
+ end
93
+ context 'when the other object is not an Item::CirculationPolicy' do
94
+ let(:other_object) { "invalid" }
95
+ it { should be_false }
96
+ end
97
+ end
98
+ describe '#eql?' do
99
+ subject { circulation_policy.eql?(other_object) }
100
+ context 'when the other object is an Item::CirculationPolicy' do
101
+ let(:other_identifier) { identifier }
102
+ let(:other_display) { display }
103
+ let(:other_privileges) { privileges }
104
+ let(:other_object) { CirculationPolicy.new(other_identifier, other_display, other_privileges) }
105
+ context 'but the identifier of the other object is different' do
106
+ let(:other_status) { Status.new('01') }
107
+ let(:other_identifier) { CirculationPolicy::Identifier.new(other_status, processing_status, sub_library) }
108
+ it { should be_false }
109
+ end
110
+ context 'and the identifier of the other object is the same' do
111
+ it { should be_true }
112
+ end
113
+ end
114
+ context 'when the other object is not an Item::CirculationPolicy' do
115
+ let(:other_object) { "invalid" }
116
+ it { should be_false }
117
+ end
118
+ end
119
+ context 'when initialized with arguments' do
120
+ context 'but the "identifier" argument is not an Item::CirculationPolicy::Identifier' do
121
+ let(:identifier) { "invalid" }
122
+ it 'should raise an ArgumentError' do
123
+ expect { subject }.to raise_error ArgumentError
124
+ end
125
+ end
126
+ context 'and the "identifier" argument is an Item::CirculationPolicy::Identifier' do
127
+ context 'but the "display" argument is not an Item::CirculationPolicy::Display' do
128
+ let(:display) { "invalid" }
129
+ it 'should raise an ArgumentError' do
130
+ expect { subject }.to raise_error ArgumentError
131
+ end
132
+ end
133
+ context 'and the "display" argument is an Item::CirculationPolicy::Display' do
134
+ context 'but the "privileges" argument is not a Item::CirculationPolicy::Privileges' do
135
+ let(:privileges) { "invalid" }
136
+ it 'should raise an ArgumentError' do
137
+ expect { subject }.to raise_error ArgumentError
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,83 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Item
5
+ describe CirculationStatus do
6
+ let(:value) { 'On Shelf' }
7
+ subject(:circulation_status) { CirculationStatus.new(value) }
8
+ it { should be_a CirculationStatus }
9
+ describe '#value' do
10
+ subject { circulation_status.value }
11
+ it { should eq value }
12
+ end
13
+ describe '#due_date' do
14
+ subject { circulation_status.due_date }
15
+ it { should be_nil }
16
+ context 'when the value is "05/31/14"' do
17
+ let(:value) { '05/31/14' }
18
+ it { should eq '05/31/14' }
19
+ end
20
+ context 'when the value is "Recalled due date: 05/31/14"' do
21
+ let(:value) { 'Recalled due date: 05/31/14' }
22
+ it { should eq '05/31/14' }
23
+ end
24
+ end
25
+ describe '#to_s' do
26
+ subject { circulation_status.to_s }
27
+ it { should eq value }
28
+ end
29
+ describe '#==' do
30
+ subject { circulation_status == other_object }
31
+ context 'when the other object is an Exlibris::Aleph::Item::DisplayMask' do
32
+ context 'and the value is the same' do
33
+ let(:other_object) { CirculationStatus.new(value) }
34
+ it { should be_true }
35
+ end
36
+ context 'but the value is different' do
37
+ let(:other_object) { CirculationStatus.new('Reshelving') }
38
+ it { should be_false }
39
+ end
40
+ end
41
+ context 'when the other object is not an Exlibris::Aleph::Item::DisplayMask' do
42
+ let(:other_object) { "string" }
43
+ it { should be_false }
44
+ end
45
+ end
46
+ describe '#===' do
47
+ subject { circulation_status === other_object }
48
+ context 'when the other object is an Exlibris::Aleph::Item::DisplayMask' do
49
+ context 'and the value is the same' do
50
+ let(:other_object) { CirculationStatus.new(value) }
51
+ it { should be_true }
52
+ end
53
+ context 'but the value is different' do
54
+ let(:other_object) { CirculationStatus.new('Reshelving') }
55
+ it { should be_false }
56
+ end
57
+ end
58
+ context 'when the other object is not an Exlibris::Aleph::Item::DisplayMask' do
59
+ let(:other_object) { "string" }
60
+ it { should be_false }
61
+ end
62
+ end
63
+ describe '#eql?' do
64
+ subject { circulation_status.eql?(other_object) }
65
+ context 'when the other object is an Exlibris::Aleph::Item::DisplayMask' do
66
+ context 'and the value is the same' do
67
+ let(:other_object) { CirculationStatus.new(value) }
68
+ it { should be_true }
69
+ end
70
+ context 'but the value is different' do
71
+ let(:other_object) { CirculationStatus.new('Reshelving') }
72
+ it { should be_false }
73
+ end
74
+ end
75
+ context 'when the other object is not an Exlibris::Aleph::Item::DisplayMask' do
76
+ let(:other_object) { "string" }
77
+ it { should be_false }
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Item
5
+ describe DisplayMask do
6
+ let(:value) { 'Display' }
7
+ let(:mask) { 'Display Mask' }
8
+ subject(:display_mask ) { DisplayMask.new(value, mask) }
9
+ it { should be_a DisplayMask }
10
+ describe '#value' do
11
+ subject { display_mask.value }
12
+ it { should eq value }
13
+ end
14
+ describe '#mask' do
15
+ subject { display_mask.mask }
16
+ it { should eq mask }
17
+ end
18
+ describe '#==' do
19
+ subject { display_mask == other_object }
20
+ context 'when the other object is an Exlibris::Aleph::Item::DisplayMask' do
21
+ context 'and the value is the same' do
22
+ let(:other_object) { DisplayMask.new(value, mask) }
23
+ it { should be_true }
24
+ end
25
+ context 'but the value is different' do
26
+ let(:other_object) { DisplayMask.new('Display 1', 'Display 1 Mask') }
27
+ it { should be_false }
28
+ end
29
+ end
30
+ context 'when the other object is not an Exlibris::Aleph::Item::DisplayMask' do
31
+ let(:other_object) { "string" }
32
+ it { should be_false }
33
+ end
34
+ end
35
+ describe '#===' do
36
+ subject { display_mask === other_object }
37
+ context 'when the other object is an Exlibris::Aleph::Item::DisplayMask' do
38
+ context 'and the value is the same' do
39
+ let(:other_object) { DisplayMask.new(value, mask) }
40
+ it { should be_true }
41
+ end
42
+ context 'but the value is different' do
43
+ let(:other_object) { DisplayMask.new('Display 1', 'Display 1 Mask') }
44
+ it { should be_false }
45
+ end
46
+ end
47
+ context 'when the other object is not an Exlibris::Aleph::Item::DisplayMask' do
48
+ let(:other_object) { "string" }
49
+ it { should be_false }
50
+ end
51
+ end
52
+ describe '#eql?' do
53
+ subject { display_mask.eql?(other_object) }
54
+ context 'when the other object is an Exlibris::Aleph::Item::DisplayMask' do
55
+ context 'and the value is the same' do
56
+ let(:other_object) { DisplayMask.new(value, mask) }
57
+ it { should be_true }
58
+ end
59
+ context 'but the value is different' do
60
+ let(:other_object) { DisplayMask.new('Display 1', 'Display 1 Mask') }
61
+ it { should be_false }
62
+ end
63
+ end
64
+ context 'when the other object is not an Exlibris::Aleph::Item::DisplayMask' 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,19 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Item
5
+ describe OpacNote do
6
+ let(:value) { "Library's copy is predominantly out of order Advertising and Covers from 1936." }
7
+ subject(:opac_note) { OpacNote.new(value) }
8
+ describe '#value' do
9
+ subject { opac_note.value }
10
+ it { should eq value }
11
+ end
12
+ describe '#to_s' do
13
+ subject { opac_note.to_s }
14
+ it { should eq value }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Item
5
+ describe ProcessingStatus do
6
+ let(:code) { 'DP' }
7
+ subject(:processing_status) { ProcessingStatus.new(code) }
8
+ it { should be_a ProcessingStatus }
9
+ describe '#code' do
10
+ subject { processing_status.code }
11
+ it { should eq code }
12
+ end
13
+ describe '#display' do
14
+ subject { processing_status.display }
15
+ it { should be_nil }
16
+ end
17
+ describe '#to_s' do
18
+ subject { processing_status.to_s }
19
+ it { should eq code }
20
+ end
21
+ describe '#==' do
22
+ subject { processing_status == other_object }
23
+ context 'when the other object is an Item::ProcessingStatus' do
24
+ context 'and the code is the same' do
25
+ let(:other_object) { ProcessingStatus.new(code) }
26
+ it { should be_true }
27
+ end
28
+ context 'but the code is different' do
29
+ let(:other_object) { ProcessingStatus.new('##') }
30
+ it { should be_false }
31
+ end
32
+ end
33
+ context 'when the other object is not an Item::ProcessingStatus' do
34
+ let(:other_object) { "string" }
35
+ it { should be_false }
36
+ end
37
+ end
38
+ describe '#===' do
39
+ subject { processing_status === other_object }
40
+ context 'when the other object is an Item::ProcessingStatus' do
41
+ context 'and the code is the same' do
42
+ let(:other_object) { ProcessingStatus.new(code) }
43
+ it { should be_true }
44
+ end
45
+ context 'but the code is different' do
46
+ let(:other_object) { ProcessingStatus.new('##') }
47
+ it { should be_false }
48
+ end
49
+ end
50
+ context 'when the other object is not an Item::ProcessingStatus' do
51
+ let(:other_object) { "string" }
52
+ it { should be_false }
53
+ end
54
+ end
55
+ describe '#eql?' do
56
+ subject { processing_status.eql?(other_object) }
57
+ context 'when the other object is an Item::ProcessingStatus' do
58
+ context 'and the code is the same' do
59
+ let(:other_object) { ProcessingStatus.new(code) }
60
+ it { should be_true }
61
+ end
62
+ context 'but the code is different' do
63
+ let(:other_object) { ProcessingStatus.new('##') }
64
+ it { should be_false }
65
+ end
66
+ end
67
+ context 'when the other object is not an Item::ProcessingStatus' do
68
+ let(:other_object) { "string" }
69
+ it { should be_false }
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Item
5
+ describe Queue do
6
+ let(:value) { "1 request(s) of 1 items." }
7
+ subject(:queue) { Queue.new(value) }
8
+ describe '#value' do
9
+ subject { queue.value }
10
+ it { should eq value }
11
+ end
12
+ describe '#to_s' do
13
+ subject { queue.to_s }
14
+ it { should eq value }
15
+ end
16
+ describe '#number_of_requests' do
17
+ subject { queue.number_of_requests }
18
+ it { should eq 1 }
19
+ context 'when the input value is nil' do
20
+ let(:value) { nil }
21
+ it { should eq 0 }
22
+ end
23
+ context 'when the input value is blank' do
24
+ let(:value) { '' }
25
+ it { should eq 0 }
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Item
5
+ describe Status do
6
+ let(:code) { '01' }
7
+ let(:display) { 'Regular loan' }
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
+ context 'when initialized without a display' do
18
+ let(:status) { Status.new(code) }
19
+ it { should be_nil }
20
+ end
21
+ end
22
+ describe '#to_s' do
23
+ subject { status.to_s }
24
+ it { should eq display }
25
+ end
26
+ describe '#==' do
27
+ subject { status == other_object }
28
+ context 'when the other object is an Item::Status' do
29
+ context 'and the code is the same' do
30
+ let(:other_object) { Status.new(code) }
31
+ it { should be_true }
32
+ end
33
+ context 'but the code is different' do
34
+ let(:other_object) { Status.new('02') }
35
+ it { should be_false }
36
+ end
37
+ end
38
+ context 'when the other object is not an Item::Status' do
39
+ let(:other_object) { "string" }
40
+ it { should be_false }
41
+ end
42
+ end
43
+ describe '#===' do
44
+ subject { status === other_object }
45
+ context 'when the other object is an Item::Status' do
46
+ context 'and the code is the same' do
47
+ let(:other_object) { Status.new(code) }
48
+ it { should be_true }
49
+ end
50
+ context 'but the code is different' do
51
+ let(:other_object) { Status.new('02') }
52
+ it { should be_false }
53
+ end
54
+ end
55
+ context 'when the other object is not an Item::Status' do
56
+ let(:other_object) { "string" }
57
+ it { should be_false }
58
+ end
59
+ end
60
+ describe '#eql?' do
61
+ subject { status.eql?(other_object) }
62
+ context 'when the other object is an Item::Status' do
63
+ context 'and the code is the same' do
64
+ let(:other_object) { Status.new(code) }
65
+ it { should be_true }
66
+ end
67
+ context 'but the code is different' do
68
+ let(:other_object) { Status.new('02') }
69
+ it { should be_false }
70
+ end
71
+ end
72
+ context 'when the other object is not an Item::Status' do
73
+ let(:other_object) { "string" }
74
+ it { should be_false }
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end