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,97 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ describe Item, vcr: {cassette_name: 'record', record: :new_episodes} do
5
+ let(:record_id) { 'NYU01000864162' }
6
+ let(:id) { 'NYU50000864162000010' }
7
+ subject(:item) { Item.new(record_id, id) }
8
+ describe '#record_id' do
9
+ subject { item.record_id }
10
+ it { should eq record_id }
11
+ end
12
+ describe '#id' do
13
+ subject { item.id }
14
+ it { should eq id }
15
+ end
16
+ describe '#collection' do
17
+ subject { item.collection }
18
+ it { should be_a Collection }
19
+ end
20
+ describe '#call_number' do
21
+ subject { item.call_number }
22
+ it { should be_a Item::CallNumber }
23
+ end
24
+ describe '#status' do
25
+ subject { item.status }
26
+ it { should be_a Item::Status }
27
+ end
28
+ describe '#processing_status' do
29
+ subject { item.processing_status }
30
+ it { should be_a Item::ProcessingStatus }
31
+ end
32
+ describe '#circulation_status' do
33
+ subject { item.circulation_status }
34
+ it { should be_a Item::CirculationStatus }
35
+ end
36
+ describe '#opac_note' do
37
+ subject { item.opac_note }
38
+ it { should be_a Item::OpacNote }
39
+ end
40
+ describe '#queue' do
41
+ subject { item.queue }
42
+ it { should be_a Item::Queue }
43
+ end
44
+ describe '#on_shelf?' do
45
+ subject { item.on_shelf? }
46
+ it { should be_true }
47
+ context 'when the circulation status is "Reshelving"' do
48
+ let(:id) { 'NYU50000864162000020' }
49
+ it { should be_false }
50
+ end
51
+ end
52
+ describe '#circulation_policy' do
53
+ subject { item.circulation_policy }
54
+ it { should be_an Item::CirculationPolicy }
55
+ end
56
+ context 'when the item does not exist' do
57
+ let(:id) { 'ADM50' }
58
+ describe '#collection' do
59
+ subject { item.collection }
60
+ it { should be_nil }
61
+ end
62
+ describe '#call_number' do
63
+ subject { item.call_number }
64
+ it { should be_nil }
65
+ end
66
+ describe '#status' do
67
+ subject { item.status }
68
+ it { should be_nil }
69
+ end
70
+ describe '#processing_status' do
71
+ subject { item.processing_status }
72
+ it { should be_nil }
73
+ end
74
+ describe '#circulation_status' do
75
+ subject { item.circulation_status }
76
+ it { should be_nil }
77
+ end
78
+ describe '#opac_note' do
79
+ subject { item.opac_note }
80
+ it { should be_nil }
81
+ end
82
+ describe '#queue' do
83
+ subject { item.queue }
84
+ it { should be_nil }
85
+ end
86
+ describe '#on_shelf?' do
87
+ subject { item.on_shelf? }
88
+ it { should be_false }
89
+ end
90
+ describe '#circulation_policy' do
91
+ subject { item.circulation_policy }
92
+ it { should be_nil }
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ describe Items, vcr: {cassette_name: 'record', record: :new_episodes} do
5
+ let(:record_id) { 'NYU01000864162' }
6
+ subject(:items) { Items.new(record_id) }
7
+ it { should be_an Items }
8
+ describe '#record_id' do
9
+ subject { items.record_id }
10
+ it { should eq record_id }
11
+ end
12
+ describe '#each' do
13
+ subject { items.each }
14
+ it { should be_an Enumerable }
15
+ end
16
+ describe '#size' do
17
+ subject { items.size }
18
+ it { should eq 2 }
19
+ end
20
+ describe '#to_a' do
21
+ subject { items.to_a }
22
+ it { should be_an Array }
23
+ it 'should contain Items' do
24
+ subject.each do |item|
25
+ expect(item).to be_an Item
26
+ end
27
+ end
28
+ end
29
+ context 'when there is only one item' do
30
+ let(:record_id) { 'NYU01003415726' }
31
+ describe '#size' do
32
+ subject { items.size }
33
+ it { should eq 1 }
34
+ end
35
+ describe '#to_a' do
36
+ subject { items.to_a }
37
+ it { should be_an Array }
38
+ it 'should contain Items' do
39
+ subject.each do |item|
40
+ expect(item).to be_an Item
41
+ end
42
+ end
43
+ end
44
+ end
45
+ context 'when there are no items' do
46
+ let(:record_id) { 'NYU01000000000' }
47
+ describe '#size' do
48
+ subject { items.size }
49
+ it { should eq 0 }
50
+ end
51
+ describe '#to_a' do
52
+ subject { items.to_a }
53
+ it { should be_an Array }
54
+ it { should be_empty }
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,118 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ describe Metadata do
5
+ let(:marc_xml) { %Q{
6
+ <record>
7
+ <info type="Items" href="http://aleph.library.nyu.edu:1891/rest-dlf/record/NYU01001951476/items"/>
8
+ <info type="Holdings" href="http://aleph.library.nyu.edu:1891/rest-dlf/record/NYU01001951476/holdings"/>
9
+ <info type="Filters" href="http://aleph.library.nyu.edu:1891/rest-dlf/record/NYU01001951476/filters"/>
10
+ <leader>00000nas 2200241 a 4500</leader>
11
+ <controlfield tag="001">001951476</controlfield>
12
+ <controlfield tag="003">NNU</controlfield>
13
+ <controlfield tag="005">20131122143305.0</controlfield>
14
+ <controlfield tag="008">910904c19919999nyuqr p 0 0eng d</controlfield>
15
+ <datafield tag="035" ind1=" " ind2=" ">
16
+ <subfield code="a">(CStRLIN)NYUG91-S1859</subfield>
17
+ </datafield>
18
+ <datafield tag="035" ind1=" " ind2=" ">
19
+ <subfield code="a">GLIS008967192</subfield>
20
+ </datafield>
21
+ <datafield tag="035" ind1="9" ind2=" ">
22
+ <subfield code="a">NYUb10896719</subfield>
23
+ </datafield>
24
+ <datafield tag="040" ind1=" " ind2=" ">
25
+ <subfield code="a">NNU</subfield>
26
+ <subfield code="c">NNU</subfield>
27
+ </datafield>
28
+ <datafield tag="090" ind1=" " ind2=" ">
29
+ <subfield code="i">09/04/91 CT</subfield>
30
+ </datafield>
31
+ <datafield tag="245" ind1="0" ind2="0">
32
+ <subfield code="a">Visionaire.</subfield>
33
+ </datafield>
34
+ <datafield tag="260" ind1=" " ind2=" ">
35
+ <subfield code="a">[New York] :</subfield>
36
+ <subfield code="b">Visionaire Publishing,</subfield>
37
+ <subfield code="c">c1991-</subfield>
38
+ </datafield>
39
+ <datafield tag="300" ind1=" " ind2=" ">
40
+ <subfield code="a">v. :</subfield>
41
+ <subfield code="b">ill. (some col.) ;</subfield>
42
+ <subfield code="c">29 cm.</subfield>
43
+ </datafield>
44
+ <datafield tag="310" ind1=" " ind2=" ">
45
+ <subfield code="a">Quarterly</subfield>
46
+ </datafield>
47
+ <datafield tag="362" ind1="0" ind2=" ">
48
+ <subfield code="a">No. 1 (Spring 1991)-</subfield>
49
+ </datafield>
50
+ <datafield tag="500" ind1=" " ind2=" ">
51
+ <subfield code="a">Title from cover.</subfield>
52
+ </datafield>
53
+ <datafield tag="650" ind1=" " ind2="0">
54
+ <subfield code="a">Fashion</subfield>
55
+ <subfield code="v">Periodicals.</subfield>
56
+ </datafield>
57
+ <datafield tag="650" ind1=" " ind2="0">
58
+ <subfield code="a">Art, Modern</subfield>
59
+ <subfield code="y">20th century</subfield>
60
+ <subfield code="v">Periodicals.</subfield>
61
+ </datafield>
62
+ <datafield tag="866" ind1="4" ind2="1">
63
+ <subfield code="l">New School Gimbel</subfield>
64
+ <subfield code="d">Special Collections Periodicals</subfield>
65
+ <subfield code="e">1306</subfield>
66
+ <subfield code="i">
67
+ Latest issues held in Periodicals; bound volumes held Offsite.
68
+ </subfield>
69
+ </datafield>
70
+ <datafield tag="866" ind1="4" ind2="1">
71
+ <subfield code="l">New School Gimbel Offsite</subfield>
72
+ <subfield code="d">Special Collections Periodicals</subfield>
73
+ <subfield code="e">1306</subfield>
74
+ <subfield code="j">1-</subfield>
75
+ <subfield code="k">1991-</subfield>
76
+ </datafield>
77
+ <datafield tag="998" ind1=" " ind2=" ">
78
+ <subfield code="a">09/04/91</subfield>
79
+ <subfield code="t">c</subfield>
80
+ <subfield code="s">9114</subfield>
81
+ <subfield code="n">NNU</subfield>
82
+ <subfield code="d">09/04/91</subfield>
83
+ <subfield code="c">JJR</subfield>
84
+ <subfield code="b">MJD</subfield>
85
+ <subfield code="i">910904</subfield>
86
+ <subfield code="l">NYUG</subfield>
87
+ </datafield>
88
+ <datafield tag="966" ind1="4" ind2="1">
89
+ <subfield code="l">
90
+ New School University Center Special Collections Periodicals
91
+ </subfield>
92
+ <subfield code="e">1306</subfield>
93
+ <subfield code="i">
94
+ Latest issues held in Periodicals; bound volumes held Offsite.
95
+ </subfield>
96
+ </datafield>
97
+ <datafield tag="966" ind1="4" ind2="1">
98
+ <subfield code="l">
99
+ New School University Center Special Collections Periodicals
100
+ </subfield>
101
+ <subfield code="e">1306</subfield>
102
+ <subfield code="j">1-</subfield>
103
+ <subfield code="k">1991-</subfield>
104
+ </datafield>
105
+ </record>
106
+ }}
107
+ subject(:metadata) { Metadata.new(marc_xml) }
108
+ describe '#marc_xml' do
109
+ subject { metadata.marc_xml }
110
+ it { should eq marc_xml.strip }
111
+ end
112
+ describe '#marc_record' do
113
+ subject { metadata.marc_record }
114
+ it { should be_a MARC::Record }
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Patron
5
+ describe Address, vcr: {cassette_name: 'patron', record: :new_episodes} do
6
+ let(:patron_id) { 'BOR_ID' }
7
+ subject(:address) { Address.new(patron_id) }
8
+ it { should be_an Address }
9
+ describe '#patron_id' do
10
+ subject { address.patron_id }
11
+ it { should eq patron_id }
12
+ end
13
+ describe '#address1' do
14
+ subject { address.address1 }
15
+ it { should eql 'SURNAME,GIVEN NAME'}
16
+ end
17
+ describe '#address2' do
18
+ subject { address.address2 }
19
+ it { should eql '123 ADDRESS, #APT'}
20
+ end
21
+ describe '#address3' do
22
+ subject { address.address3 }
23
+ it { should eql 'BROOKLYN'}
24
+ end
25
+ describe '#address4' do
26
+ subject { address.address4 }
27
+ it { should eql 'NY'}
28
+ end
29
+ describe '#address5' do
30
+ subject { address.address5 }
31
+ it { should eql 'NY'}
32
+ end
33
+ describe '#telephone1' do
34
+ subject { address.telephone1 }
35
+ it { should be_nil }
36
+ end
37
+ describe '#telephone2' do
38
+ subject { address.telephone2 }
39
+ it { should be_nil }
40
+ end
41
+ describe '#telephone3' do
42
+ subject { address.telephone3 }
43
+ it { should be_nil }
44
+ end
45
+ describe '#telephone4' do
46
+ subject { address.telephone4 }
47
+ it { should be_nil }
48
+ end
49
+ describe '#zip' do
50
+ subject { address.zip }
51
+ it { should eq '11215' }
52
+ end
53
+ describe '#sms_number' do
54
+ subject { address.sms_number }
55
+ it { should be_nil }
56
+ end
57
+ describe '#want_sms' do
58
+ subject { address.want_sms }
59
+ it { should eq 'N' }
60
+ end
61
+ describe '#email' do
62
+ subject { address.email }
63
+ it { should eq 'bor_id@library.nyu.edu' }
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,115 @@
1
+ require 'spec_helper'
2
+ module Exlibris
3
+ module Aleph
4
+ class Patron
5
+ class CirculationPolicy
6
+ describe Identifier do
7
+ let(:status) { Status.new('01', 'Patron') }
8
+ let(:admin_library) { AdminLibrary.new('ADM50') }
9
+ let(:sub_library) { SubLibrary.new('SUB', 'Sub Library', admin_library) }
10
+ subject(:identifier) { Identifier.new(status, sub_library) }
11
+ it { should be_a Identifier }
12
+ describe '#sub_library' do
13
+ subject { identifier.sub_library }
14
+ it { should eq sub_library }
15
+ end
16
+ describe '#status' do
17
+ subject { identifier.status }
18
+ it { should eq status }
19
+ end
20
+ describe '#==' do
21
+ subject { identifier == other_object }
22
+ context 'when the other object is an Patron::CirculationPolicy::Identifier' do
23
+ let(:other_status) { status }
24
+ let(:other_sub_library) { sub_library }
25
+ let(:other_object) { Identifier.new(other_status, other_sub_library) }
26
+ context 'but the status of the other object is different' do
27
+ let(:other_status) { Status.new('02', 'Patron') }
28
+ it { should be_false }
29
+ end
30
+ context 'and the status of the other object is the same' do
31
+ context 'but the sub library of the other object is different' do
32
+ let(:other_sub_library) { SubLibrary.new('SUB1', 'Sub Library 1', admin_library) }
33
+ it { should be_false }
34
+ end
35
+ context 'and the sub library of the other object is the same' do
36
+ it { should be_true }
37
+ end
38
+ end
39
+ end
40
+ context 'when the other object is not an Patron::CirculationPolicy::Identifier' do
41
+ let(:other_object) { "invalid" }
42
+ it { should be_false }
43
+ end
44
+ end
45
+ describe '#===' do
46
+ subject { identifier === other_object }
47
+ context 'when the other object is an Patron::CirculationPolicy::Identifier' do
48
+ let(:other_status) { status }
49
+ let(:other_sub_library) { sub_library }
50
+ let(:other_object) { Identifier.new(other_status, other_sub_library) }
51
+ context 'but the status of the other object is different' do
52
+ let(:other_status) { Status.new('02', 'Patron') }
53
+ it { should be_false }
54
+ end
55
+ context 'and the status of the other object is the same' do
56
+ context 'but the sub library of the other object is different' do
57
+ let(:other_sub_library) { SubLibrary.new('SUB1', 'Sub Library 1', admin_library) }
58
+ it { should be_false }
59
+ end
60
+ context 'and the sub library of the other object is the same' do
61
+ it { should be_true }
62
+ end
63
+ end
64
+ end
65
+ context 'when the other object is not an Patron::CirculationPolicy::Identifier' do
66
+ let(:other_object) { "invalid" }
67
+ it { should be_false }
68
+ end
69
+ end
70
+ describe '#eql?' do
71
+ subject { identifier.eql?(other_object) }
72
+ context 'when the other object is an Patron::CirculationPolicy::Identifier' do
73
+ let(:other_status) { status }
74
+ let(:other_sub_library) { sub_library }
75
+ let(:other_object) { Identifier.new(other_status, other_sub_library) }
76
+ context 'but the status of the other object is different' do
77
+ let(:other_status) { Status.new('02', 'Patron') }
78
+ it { should be_false }
79
+ end
80
+ context 'and the status of the other object is the same' do
81
+ context 'but the sub library of the other object is different' do
82
+ let(:other_sub_library) { SubLibrary.new('SUB1', 'Sub Library 1', admin_library) }
83
+ it { should be_false }
84
+ end
85
+ context 'and the sub library of the other object is the same' do
86
+ it { should be_true }
87
+ end
88
+ end
89
+ end
90
+ context 'when the other object is not an Patron::CirculationPolicy::Identifier' do
91
+ let(:other_object) { "invalid" }
92
+ it { should be_false }
93
+ end
94
+ end
95
+ context 'when initialized with arguments' do
96
+ context 'but the "status" argument is not an Patron::Status' do
97
+ let(:status) { "invalid" }
98
+ it 'should raise an ArgumentError' do
99
+ expect { subject }.to raise_error ArgumentError
100
+ end
101
+ end
102
+ context 'and the "status" argument is an Patron::Status' do
103
+ context 'but the "sub library" argument is not a SubLibrary' do
104
+ let(:sub_library) { "invalid" }
105
+ it 'should raise an ArgumentError' do
106
+ expect { subject }.to raise_error ArgumentError
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end