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.
- data/README.md +199 -82
- data/Rakefile +8 -14
- data/lib/exlibris-aleph.rb +0 -3
- data/lib/exlibris/aleph/admin_library.rb +27 -0
- data/lib/exlibris/aleph/api/base.rb +27 -0
- data/lib/exlibris/aleph/api/client/base.rb +86 -0
- data/lib/exlibris/aleph/api/client/patron.rb +20 -0
- data/lib/exlibris/aleph/api/client/patron/address.rb +22 -0
- data/lib/exlibris/aleph/api/client/patron/record.rb +23 -0
- data/lib/exlibris/aleph/api/client/patron/record/item.rb +26 -0
- data/lib/exlibris/aleph/api/client/patron/record/item/create_hold.rb +31 -0
- data/lib/exlibris/aleph/api/client/patron/record/item/create_hold/parameters.rb +55 -0
- data/lib/exlibris/aleph/api/client/patron/record/item/hold.rb +29 -0
- data/lib/exlibris/aleph/api/client/patron/status.rb +22 -0
- data/lib/exlibris/aleph/api/client/record.rb +21 -0
- data/lib/exlibris/aleph/api/client/record/filters.rb +23 -0
- data/lib/exlibris/aleph/api/client/record/holding.rb +23 -0
- data/lib/exlibris/aleph/api/client/record/holdings.rb +23 -0
- data/lib/exlibris/aleph/api/client/record/item.rb +23 -0
- data/lib/exlibris/aleph/api/client/record/items.rb +23 -0
- data/lib/exlibris/aleph/api/reader/base.rb +15 -0
- data/lib/exlibris/aleph/api/reader/patron.rb +19 -0
- data/lib/exlibris/aleph/api/reader/patron/address.rb +90 -0
- data/lib/exlibris/aleph/api/reader/patron/record.rb +38 -0
- data/lib/exlibris/aleph/api/reader/patron/record/item.rb +77 -0
- data/lib/exlibris/aleph/api/reader/patron/record/item/create_hold.rb +33 -0
- data/lib/exlibris/aleph/api/reader/patron/record/item/hold.rb +56 -0
- data/lib/exlibris/aleph/api/reader/patron/status.rb +33 -0
- data/lib/exlibris/aleph/api/reader/record.rb +10 -0
- data/lib/exlibris/aleph/api/reader/record/item.rb +45 -0
- data/lib/exlibris/aleph/collection.rb +26 -0
- data/lib/exlibris/aleph/config.rb +17 -57
- data/lib/exlibris/aleph/holding.rb +59 -0
- data/lib/exlibris/aleph/holding/metadata.rb +28 -0
- data/lib/exlibris/aleph/holdings.rb +51 -0
- data/lib/exlibris/aleph/item.rb +138 -0
- data/lib/exlibris/aleph/item/call_number.rb +14 -0
- data/lib/exlibris/aleph/item/circulation_policy.rb +30 -0
- data/lib/exlibris/aleph/item/circulation_policy/display.rb +16 -0
- data/lib/exlibris/aleph/item/circulation_policy/identifier.rb +34 -0
- data/lib/exlibris/aleph/item/circulation_policy/privileges.rb +72 -0
- data/lib/exlibris/aleph/item/circulation_status.rb +31 -0
- data/lib/exlibris/aleph/item/display_mask.rb +19 -0
- data/lib/exlibris/aleph/item/opac_note.rb +17 -0
- data/lib/exlibris/aleph/item/processing_status.rb +23 -0
- data/lib/exlibris/aleph/item/queue.rb +32 -0
- data/lib/exlibris/aleph/item/status.rb +23 -0
- data/lib/exlibris/aleph/items.rb +51 -0
- data/lib/exlibris/aleph/metadata.rb +25 -0
- data/lib/exlibris/aleph/patron.rb +18 -82
- data/lib/exlibris/aleph/patron/address.rb +56 -0
- data/lib/exlibris/aleph/patron/circulation_policy.rb +26 -0
- data/lib/exlibris/aleph/patron/circulation_policy/identifier.rb +29 -0
- data/lib/exlibris/aleph/patron/circulation_policy/privileges.rb +56 -0
- data/lib/exlibris/aleph/patron/record.rb +39 -0
- data/lib/exlibris/aleph/patron/record/circulation_policy.rb +18 -0
- data/lib/exlibris/aleph/patron/record/circulation_policy/privileges.rb +42 -0
- data/lib/exlibris/aleph/patron/record/item.rb +63 -0
- data/lib/exlibris/aleph/patron/record/item/circulation_policy.rb +21 -0
- data/lib/exlibris/aleph/patron/record/item/circulation_policy/privileges.rb +39 -0
- data/lib/exlibris/aleph/patron/record/item/create_hold.rb +43 -0
- data/lib/exlibris/aleph/patron/record/item/hold.rb +41 -0
- data/lib/exlibris/aleph/patron/status.rb +19 -0
- data/lib/exlibris/aleph/pickup_location.rb +12 -0
- data/lib/exlibris/aleph/record.rb +14 -43
- data/lib/exlibris/aleph/record/metadata.rb +8 -0
- data/lib/exlibris/aleph/sub_library.rb +30 -0
- data/lib/exlibris/aleph/table/base.rb +22 -0
- data/lib/exlibris/aleph/table/collections.rb +17 -0
- data/lib/exlibris/aleph/table/item/circulation_policies.rb +65 -0
- data/lib/exlibris/aleph/table/item/display_masks.rb +19 -0
- data/lib/exlibris/aleph/table/patron/circulation_policies.rb +47 -0
- data/lib/exlibris/aleph/table/patron/statuses.rb +19 -0
- data/lib/exlibris/aleph/table/reader/base.rb +57 -0
- data/lib/exlibris/aleph/table/reader/collections.rb +35 -0
- data/lib/exlibris/aleph/table/reader/item_circulation_policies.rb +50 -0
- data/lib/exlibris/aleph/table/reader/item_display_masks.rb +19 -0
- data/lib/exlibris/aleph/table/reader/matcher/base.rb +30 -0
- data/lib/exlibris/aleph/table/reader/matcher/collections.rb +17 -0
- data/lib/exlibris/aleph/table/reader/matcher/item_circulation_policies.rb +17 -0
- data/lib/exlibris/aleph/table/reader/matcher/item_display_masks.rb +17 -0
- data/lib/exlibris/aleph/table/reader/matcher/patron_circulation_policies.rb +17 -0
- data/lib/exlibris/aleph/table/reader/matcher/patron_statuses.rb +17 -0
- data/lib/exlibris/aleph/table/reader/matcher/sub_libraries.rb +17 -0
- data/lib/exlibris/aleph/table/reader/patron_circulation_policies.rb +51 -0
- data/lib/exlibris/aleph/table/reader/patron_statuses.rb +19 -0
- data/lib/exlibris/aleph/table/reader/row/base.rb +25 -0
- data/lib/exlibris/aleph/table/reader/row/collections.rb +13 -0
- data/lib/exlibris/aleph/table/reader/row/item_circulation_policies.rb +17 -0
- data/lib/exlibris/aleph/table/reader/row/item_display_masks.rb +13 -0
- data/lib/exlibris/aleph/table/reader/row/patron_circulation_policies.rb +20 -0
- data/lib/exlibris/aleph/table/reader/row/patron_statuses.rb +13 -0
- data/lib/exlibris/aleph/table/reader/row/sub_libraries.rb +13 -0
- data/lib/exlibris/aleph/table/reader/sub_libraries.rb +32 -0
- data/lib/exlibris/aleph/table/sub_libraries.rb +11 -0
- data/lib/exlibris/aleph/tables_manager.rb +66 -0
- data/lib/exlibris/aleph/version.rb +1 -1
- data/spec/exlibris/aleph/admin_library_spec.rb +83 -0
- data/spec/exlibris/aleph/api/base_spec.rb +23 -0
- data/spec/exlibris/aleph/api/client/base_spec.rb +40 -0
- data/spec/exlibris/aleph/api/client/patron/address_spec.rb +40 -0
- data/spec/exlibris/aleph/api/client/patron/record/item/create_hold/parameters_spec.rb +101 -0
- data/spec/exlibris/aleph/api/client/patron/record/item/create_hold_spec.rb +102 -0
- data/spec/exlibris/aleph/api/client/patron/record/item/hold_spec.rb +89 -0
- data/spec/exlibris/aleph/api/client/patron/record/item_spec.rb +52 -0
- data/spec/exlibris/aleph/api/client/patron/record_spec.rb +45 -0
- data/spec/exlibris/aleph/api/client/patron/status_spec.rb +40 -0
- data/spec/exlibris/aleph/api/client/patron_spec.rb +38 -0
- data/spec/exlibris/aleph/api/client/record/filters_spec.rb +46 -0
- data/spec/exlibris/aleph/api/client/record/holding_spec.rb +41 -0
- data/spec/exlibris/aleph/api/client/record/holdings_spec.rb +46 -0
- data/spec/exlibris/aleph/api/client/record/item_spec.rb +41 -0
- data/spec/exlibris/aleph/api/client/record/items_spec.rb +46 -0
- data/spec/exlibris/aleph/api/client/record_spec.rb +43 -0
- data/spec/exlibris/aleph/api/reader/base_spec.rb +18 -0
- data/spec/exlibris/aleph/api/reader/patron/address_spec.rb +151 -0
- data/spec/exlibris/aleph/api/reader/patron/record/item/create_hold_spec.rb +65 -0
- data/spec/exlibris/aleph/api/reader/patron/record/item/hold_spec.rb +145 -0
- data/spec/exlibris/aleph/api/reader/patron/record/item_spec.rb +266 -0
- data/spec/exlibris/aleph/api/reader/patron/record_spec.rb +98 -0
- data/spec/exlibris/aleph/api/reader/patron/status_spec.rb +57 -0
- data/spec/exlibris/aleph/api/reader/patron_spec.rb +28 -0
- data/spec/exlibris/aleph/api/reader/record/item_spec.rb +178 -0
- data/spec/exlibris/aleph/collection_spec.rb +95 -0
- data/spec/exlibris/aleph/config_spec.rb +17 -0
- data/spec/exlibris/aleph/holding/metadata_spec.rb +57 -0
- data/spec/exlibris/aleph/holding_spec.rb +53 -0
- data/spec/exlibris/aleph/holdings_spec.rb +59 -0
- data/spec/exlibris/aleph/item/call_number_spec.rb +20 -0
- data/spec/exlibris/aleph/item/circulation_policy/display_spec.rb +33 -0
- data/spec/exlibris/aleph/item/circulation_policy/identifier_spec.rb +154 -0
- data/spec/exlibris/aleph/item/circulation_policy/privileges_spec.rb +183 -0
- data/spec/exlibris/aleph/item/circulation_policy_spec.rb +146 -0
- data/spec/exlibris/aleph/item/circulation_status_spec.rb +83 -0
- data/spec/exlibris/aleph/item/display_mask_spec.rb +72 -0
- data/spec/exlibris/aleph/item/opac_note_spec.rb +19 -0
- data/spec/exlibris/aleph/item/processing_status_spec.rb +75 -0
- data/spec/exlibris/aleph/item/queue_spec.rb +31 -0
- data/spec/exlibris/aleph/item/status_spec.rb +80 -0
- data/spec/exlibris/aleph/item_spec.rb +97 -0
- data/spec/exlibris/aleph/items_spec.rb +59 -0
- data/spec/exlibris/aleph/metadata_spec.rb +118 -0
- data/spec/exlibris/aleph/patron/address_spec.rb +68 -0
- data/spec/exlibris/aleph/patron/circulation_policy/identifier_spec.rb +115 -0
- data/spec/exlibris/aleph/patron/circulation_policy/privileges_spec.rb +128 -0
- data/spec/exlibris/aleph/patron/circulation_policy_spec.rb +119 -0
- data/spec/exlibris/aleph/patron/record/circulation_policy/privileges_spec.rb +88 -0
- data/spec/exlibris/aleph/patron/record/circulation_policy_spec.rb +37 -0
- data/spec/exlibris/aleph/patron/record/item/circulation_policy/privileges_spec.rb +76 -0
- data/spec/exlibris/aleph/patron/record/item/circulation_policy_spec.rb +52 -0
- data/spec/exlibris/aleph/patron/record/item/create_hold_spec.rb +49 -0
- data/spec/exlibris/aleph/patron/record/item/hold_spec.rb +41 -0
- data/spec/exlibris/aleph/patron/record/item_spec.rb +64 -0
- data/spec/exlibris/aleph/patron/record_spec.rb +30 -0
- data/spec/exlibris/aleph/patron/status_spec.rb +72 -0
- data/spec/exlibris/aleph/patron_spec.rb +28 -0
- data/spec/exlibris/aleph/pickup_location_spec.rb +19 -0
- data/spec/exlibris/aleph/record/metadata_spec.rb +120 -0
- data/spec/exlibris/aleph/record_spec.rb +44 -0
- data/spec/exlibris/aleph/sub_library_spec.rb +110 -0
- data/spec/exlibris/aleph/table/base_spec.rb +17 -0
- data/spec/exlibris/aleph/table/collections_spec.rb +24 -0
- data/spec/exlibris/aleph/table/item/circulation_policies_spec.rb +65 -0
- data/spec/exlibris/aleph/table/item/display_masks_spec.rb +26 -0
- data/spec/exlibris/aleph/table/patron/circulation_policies_spec.rb +47 -0
- data/spec/exlibris/aleph/table/patron/statuses_spec.rb +26 -0
- data/spec/exlibris/aleph/table/reader/base_spec.rb +28 -0
- data/spec/exlibris/aleph/table/reader/collections_spec.rb +33 -0
- data/spec/exlibris/aleph/table/reader/item_circulation_policies_spec.rb +33 -0
- data/spec/exlibris/aleph/table/reader/item_display_masks_spec.rb +27 -0
- data/spec/exlibris/aleph/table/reader/matcher/base_spec.rb +32 -0
- data/spec/exlibris/aleph/table/reader/matcher/collections_spec.rb +39 -0
- data/spec/exlibris/aleph/table/reader/matcher/item_circulation_policies_spec.rb +39 -0
- data/spec/exlibris/aleph/table/reader/matcher/item_display_masks_spec.rb +40 -0
- data/spec/exlibris/aleph/table/reader/matcher/patron_circulation_policies_spec.rb +40 -0
- data/spec/exlibris/aleph/table/reader/matcher/patron_statuses_spec.rb +40 -0
- data/spec/exlibris/aleph/table/reader/matcher/sub_libraries_spec.rb +40 -0
- data/spec/exlibris/aleph/table/reader/patron_circulation_policies_spec.rb +27 -0
- data/spec/exlibris/aleph/table/reader/patron_statuses_spec.rb +27 -0
- data/spec/exlibris/aleph/table/reader/row/base_spec.rb +20 -0
- data/spec/exlibris/aleph/table/reader/row/collections_spec.rb +37 -0
- data/spec/exlibris/aleph/table/reader/row/item_circulation_policies_spec.rb +89 -0
- data/spec/exlibris/aleph/table/reader/row/item_display_masks_spec.rb +29 -0
- data/spec/exlibris/aleph/table/reader/row/patron_circulation_policies_spec.rb +115 -0
- data/spec/exlibris/aleph/table/reader/row/patron_statuses_spec.rb +29 -0
- data/spec/exlibris/aleph/table/reader/row/sub_libraries_spec.rb +41 -0
- data/spec/exlibris/aleph/table/reader/sub_libraries_spec.rb +36 -0
- data/spec/exlibris/aleph/table/sub_libraries_spec.rb +19 -0
- data/spec/exlibris/aleph/tables_manager_spec.rb +120 -0
- data/spec/exlibris/aleph_spec.rb +5 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/support/mnt/aleph_tab/adm50/tab/filename +0 -0
- data/{test → spec/support}/mnt/aleph_tab/alephe/tab/tab_sub_library.eng +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/pc_tab_exp_field_extended.eng +0 -0
- data/{test/mnt/aleph_tab → spec/support/mnt/aleph_tab/nyu50/tab}/tab15.eng +2 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/tab16 +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/tab31 +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/tab37 +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/tab40.eng +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu50/tab/tab_www_item_desc.eng +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/pc_tab_exp_field_extended.eng +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab15.eng +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab16 +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab31 +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab37 +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab40.eng +0 -0
- data/{test → spec/support}/mnt/aleph_tab/nyu51/tab/tab_www_item_desc.eng +0 -0
- data/spec/vcr_cassettes/patron.yml +1443 -0
- data/spec/vcr_cassettes/record.yml +763 -0
- metadata +351 -165
- data/lib/exlibris/aleph/abstract.rb +0 -28
- data/lib/exlibris/aleph/rest/base.rb +0 -56
- data/lib/exlibris/aleph/tab_helper.rb +0 -303
- data/lib/exlibris/aleph/tabs_parser/base.rb +0 -49
- data/lib/exlibris/aleph/tabs_parser/pc_tab_exp_field_extended.rb +0 -20
- data/lib/exlibris/aleph/tabs_parser/sub_library.rb +0 -32
- data/lib/exlibris/aleph/tabs_parser/tab15_by_item_process_status.rb +0 -33
- data/lib/exlibris/aleph/tabs_parser/tab15_by_item_status.rb +0 -33
- data/lib/exlibris/aleph/tabs_parser/tab31.rb +0 -39
- data/lib/exlibris/aleph/tabs_parser/tab37.rb +0 -63
- data/lib/exlibris/aleph/tabs_parser/tab40.rb +0 -20
- data/lib/exlibris/aleph/tabs_parser/tab_sub_library.rb +0 -21
- data/lib/exlibris/aleph/tabs_parser/tab_www_item_desc.rb +0 -20
- data/lib/exlibris/aleph/task_installer.rb +0 -25
- data/lib/exlibris/aleph/write_attributes.rb +0 -38
- data/lib/exlibris/aleph/xml_util.rb +0 -50
- data/lib/exlibris/aleph/xservice/bor_auth.rb +0 -47
- data/lib/tasks/exlibris-aleph_tasks.rake +0 -48
- data/test/config/aleph/alephe/sub_libraries.yml +0 -801
- data/test/config/aleph/nyu50/collections.yml +0 -1168
- data/test/config/aleph/nyu50/item_permissions_by_item_process_status.yml +0 -61876
- data/test/config/aleph/nyu50/item_permissions_by_item_status.yml +0 -17319
- data/test/config/aleph/nyu50/items.yml +0 -617
- data/test/config/aleph/nyu50/patron_permissions.yml +0 -19720
- data/test/config/aleph/nyu50/patrons.yml +0 -249
- data/test/config/aleph/nyu50/pickup_locations.yml +0 -2910
- data/test/config/aleph/nyu51/collections.yml +0 -41
- data/test/config/aleph/nyu51/item_permissions_by_item_process_status.yml +0 -7689
- data/test/config/aleph/nyu51/item_permissions_by_item_status.yml +0 -430
- data/test/config/aleph/nyu51/items.yml +0 -617
- data/test/config/aleph/nyu51/patron_permissions.yml +0 -6588
- data/test/config/aleph/nyu51/patrons.yml +0 -237
- data/test/config/aleph/nyu51/pickup_locations.yml +0 -456
- data/test/config_test.rb +0 -24
- data/test/exlibris-aleph_test.rb +0 -7
- data/test/mnt/aleph_tab/nyu50/tab/tab15.eng +0 -4742
- data/test/mnt/aleph_tab/pc_tab_exp_field_extended.eng +0 -158
- data/test/mnt/aleph_tab/tab16 +0 -3792
- data/test/mnt/aleph_tab/tab31 +0 -998
- data/test/mnt/aleph_tab/tab37 +0 -405
- data/test/mnt/aleph_tab/tab40.eng +0 -335
- data/test/mnt/aleph_tab/tab_sub_library.eng +0 -378
- data/test/mnt/aleph_tab/tab_www_item_desc.eng +0 -208
- data/test/patron_test.rb +0 -98
- data/test/record_benchmarks.rb +0 -26
- data/test/record_test.rb +0 -64
- data/test/support/config.yml +0 -2
- data/test/tab_helper_benchmarks.rb +0 -53
- data/test/tab_helper_test.rb +0 -192
- data/test/test_helper.rb +0 -46
- data/test/vcr_cassettes/bor_auth.yml +0 -42
- data/test/vcr_cassettes/patron.yml +0 -142
- data/test/vcr_cassettes/patron_address.yml +0 -45
- data/test/vcr_cassettes/patron_bogus_url.yml +0 -731
- data/test/vcr_cassettes/patron_error.yml +0 -93
- data/test/vcr_cassettes/record.yml +0 -146
- data/test/vcr_cassettes/record_bogus_url.yml +0 -690
- 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
|