voyager_oracle_api 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/Gemfile +21 -0
- data/Gemfile.lock +45 -0
- data/Guardfile +10 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +59 -0
- data/VERSION +1 -0
- data/config/item_status_codes.yml +172 -0
- data/config/order_status_codes.yml +25 -0
- data/lib/collection.rb +33 -0
- data/lib/oracle_connection.rb +94 -0
- data/lib/request.rb +18 -0
- data/lib/status.rb +98 -0
- data/lib/voyager_oracle_api.rb +8 -0
- data/tasks/build_tests.rake +127 -0
- data/test/fixtures/complex_2c_1in_1out.json +1 -0
- data/test/fixtures/complex_some_available_2_3_4_14_17.json +1 -0
- data/test/fixtures/fixture_test.json +1 -0
- data/test/fixtures/simple_1_available_item.json +1 -0
- data/test/fixtures/simple_1_available_item_returned.json +1 -0
- data/test/fixtures/simple_1_available_item_review.json +1 -0
- data/test/fixtures/simple_1_available_item_withdrawal.json +1 -0
- data/test/fixtures/simple_1_unavailable_item_2.json +1 -0
- data/test/fixtures/simple_1_unavailable_lost.json +1 -0
- data/test/fixtures/simple_1_unavailable_missing.json +1 -0
- data/test/fixtures/simple_no_items.json +1 -0
- data/test/fixtures/simple_some_available_1_2.json +1 -0
- data/test/helper.rb +32 -0
- data/test/test_complex.rb +31 -0
- data/test/test_fixtures.rb +15 -0
- data/test/test_simple.rb +115 -0
- data/test/test_voyager_connection.rb +23 -0
- data/voyager_api.gemspec +115 -0
- metadata +234 -0
data/lib/request.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
module Voyager
|
2
|
+
module Request
|
3
|
+
def simple_holdings_check(*bibids)
|
4
|
+
|
5
|
+
con = OracleConnection.new()
|
6
|
+
con.retrieve_holdings(*bibids)
|
7
|
+
|
8
|
+
results = {}
|
9
|
+
|
10
|
+
bibids.each do |bibid|
|
11
|
+
results[bibid] = Collection.new(bibid: bibid, connection: con).to_hash(args)
|
12
|
+
end
|
13
|
+
|
14
|
+
return results
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/status.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
module Voyager
|
2
|
+
class Status
|
3
|
+
attr_reader :statuses
|
4
|
+
|
5
|
+
def initialize(holdings)
|
6
|
+
@statuses = parse_holdings_status(holdings)
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_hash(args = {})
|
10
|
+
@statuses
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def parse_holdings_status(holdings)
|
16
|
+
status_hash = combine_statuses(holdings)
|
17
|
+
holdings_hash = {}
|
18
|
+
status_hash.each_pair { |mfhdid,items| holdings_hash[mfhdid.to_s] = determine_status(items) }
|
19
|
+
holdings_hash
|
20
|
+
end
|
21
|
+
|
22
|
+
def combine_statuses(holdings)
|
23
|
+
|
24
|
+
statuses = {}
|
25
|
+
|
26
|
+
# for each holding, for each item create an array of status codes
|
27
|
+
# we don't need bibid becasue each Collection call processes one bib
|
28
|
+
holdings.each do |holding|
|
29
|
+
bibid, mfhdid, itemid, status = holding.values
|
30
|
+
unless itemid.nil?
|
31
|
+
statuses[mfhdid] ||= {}
|
32
|
+
statuses[mfhdid][itemid] ||= []
|
33
|
+
statuses[mfhdid][itemid] << status
|
34
|
+
else
|
35
|
+
statuses[mfhdid] = {'no_items' => []}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
statuses
|
39
|
+
end
|
40
|
+
|
41
|
+
# 1 Not Charged
|
42
|
+
# 2 Charged
|
43
|
+
# 3 Renewed
|
44
|
+
# 4 Overdue
|
45
|
+
# 5 Recall Request
|
46
|
+
# 6 Hold Request
|
47
|
+
# 7 On Hold
|
48
|
+
# 8 In Transit
|
49
|
+
# 9 In Transit Discharged no longer used but appear in records
|
50
|
+
# 10 In Transit On Hold no longer used but appear in records
|
51
|
+
# 11 Discharged
|
52
|
+
# 12 Missing
|
53
|
+
# 13 Lost--Library Applied
|
54
|
+
# 14 Lost--System Applied
|
55
|
+
# 15 Claims Returned x
|
56
|
+
# 16 Damaged x
|
57
|
+
# 17 Withdrawn skip item
|
58
|
+
# 18 At Bindery
|
59
|
+
# 19 Cataloging Review x
|
60
|
+
# 20 Circulation Review x
|
61
|
+
# 21 Scheduled
|
62
|
+
# 22 In Process
|
63
|
+
# 23 Call Slip Request
|
64
|
+
# 24 Short Loan Request
|
65
|
+
# 25 Remote Storage Request
|
66
|
+
|
67
|
+
def determine_status(items)
|
68
|
+
|
69
|
+
return 'none' if items.has_key?('no_items')
|
70
|
+
|
71
|
+
icnt = 0 # count of items
|
72
|
+
ucnt = 0 # count of unavailable items
|
73
|
+
|
74
|
+
items.each_pair do |itemid,statuses|
|
75
|
+
# skip withdrawn
|
76
|
+
unless statuses.include?(17)
|
77
|
+
icnt += 1
|
78
|
+
# the overwhelming majority of items have only one status
|
79
|
+
if statuses.length == 1
|
80
|
+
ucnt += 1 unless [1,9,11].any? {|code| statuses.include?(code)}
|
81
|
+
else
|
82
|
+
# some unavalable statuses can be in combination with 1, 9 and 11 so we test for them first
|
83
|
+
if [2,3,4,5,6,7,8,10,12,13,14,18,21,22,23,24,25].any? {|code| statuses.include?(code)}
|
84
|
+
ucnt += 1
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
return 'none' if icnt == 0
|
91
|
+
return 'available' if ucnt == 0
|
92
|
+
return 'unavailable' if icnt == ucnt
|
93
|
+
return 'some_available'
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require "oci8"
|
2
|
+
require 'active_support/core_ext'
|
3
|
+
require File.join(File.dirname(__FILE__), "oracle_connection")
|
4
|
+
|
5
|
+
require File.join(File.dirname(__FILE__), "collection")
|
6
|
+
require File.join(File.dirname(__FILE__), "request")
|
7
|
+
require File.join(File.dirname(__FILE__), "status")
|
8
|
+
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "lib", "voyager_oracle_api")
|
2
|
+
include Voyager
|
3
|
+
|
4
|
+
namespace :fixtures do
|
5
|
+
|
6
|
+
desc "Basic test fixture"
|
7
|
+
task :basic_test do
|
8
|
+
con = OracleConnection.new
|
9
|
+
con.retrieve_holdings(102,85,101)
|
10
|
+
|
11
|
+
oracle_save_fixtures('fixture_test', con)
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "No items"
|
16
|
+
task :simple_no_items do
|
17
|
+
con = OracleConnection.new
|
18
|
+
con.retrieve_holdings(989388)
|
19
|
+
|
20
|
+
oracle_save_fixtures('simple_no_items', con)
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "1 available item"
|
25
|
+
task :simple_1_available_item do
|
26
|
+
con = OracleConnection.new
|
27
|
+
con.retrieve_holdings(187780)
|
28
|
+
|
29
|
+
oracle_save_fixtures('simple_1_available_item', con)
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "1 unavailable item = 2"
|
34
|
+
task :simple_1_unavailable_item_2 do
|
35
|
+
con = OracleConnection.new
|
36
|
+
con.retrieve_holdings(245)
|
37
|
+
|
38
|
+
oracle_save_fixtures('simple_1_unavailable_item_2', con)
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
desc "1 available item + withdrawal"
|
43
|
+
task :simple_1_available_item_withdrawal do
|
44
|
+
con = OracleConnection.new
|
45
|
+
con.retrieve_holdings(9835)
|
46
|
+
|
47
|
+
oracle_save_fixtures('simple_1_available_item_withdrawal', con)
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
desc "1 available item = returned"
|
52
|
+
task :simple_1_available_item_returned do
|
53
|
+
con = OracleConnection.new
|
54
|
+
con.retrieve_holdings(1812)
|
55
|
+
|
56
|
+
oracle_save_fixtures('simple_1_available_item_returned', con)
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
desc "some available = 2 3 4 14 17"
|
61
|
+
task :complex_some_available_2_3_4_14_17 do
|
62
|
+
con = OracleConnection.new
|
63
|
+
con.retrieve_holdings(525807)
|
64
|
+
|
65
|
+
oracle_save_fixtures('complex_some_available_2_3_4_14_17', con)
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
desc "1 unavailable = missing"
|
70
|
+
task :simple_1_unavailable_missing do
|
71
|
+
con = OracleConnection.new
|
72
|
+
con.retrieve_holdings(24981)
|
73
|
+
|
74
|
+
oracle_save_fixtures('simple_1_unavailable_missing', con)
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
desc "1 unavailable = lost"
|
79
|
+
task :simple_1_unavailable_lost do
|
80
|
+
con = OracleConnection.new
|
81
|
+
con.retrieve_holdings(54865)
|
82
|
+
|
83
|
+
oracle_save_fixtures('simple_1_unavailable_lost', con)
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
desc "1 available = review"
|
88
|
+
task :simple_1_available_item_review do
|
89
|
+
con = OracleConnection.new
|
90
|
+
con.retrieve_holdings(2656)
|
91
|
+
|
92
|
+
oracle_save_fixtures('simple_1_available_item_review', con)
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
desc "some available 1 2"
|
97
|
+
task :simple_some_available_1_2 do
|
98
|
+
con = OracleConnection.new
|
99
|
+
con.retrieve_holdings(39)
|
100
|
+
|
101
|
+
oracle_save_fixtures('simple_some_available_1_2', con)
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
desc "2copies - 1 in 1 out"
|
106
|
+
task :complex_2c_1in_1out do
|
107
|
+
con = OracleConnection.new
|
108
|
+
con.retrieve_holdings(9538750)
|
109
|
+
|
110
|
+
oracle_save_fixtures('complex_2c_1in_1out', con)
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
def oracle_save_fixtures(name, con)
|
117
|
+
results = con.results.to_json
|
118
|
+
|
119
|
+
filename = File.join(File.dirname(__FILE__), "..", "test", "fixtures", "#{name}.json")
|
120
|
+
|
121
|
+
file = File.open(filename, "w")
|
122
|
+
file << results
|
123
|
+
file.close
|
124
|
+
|
125
|
+
puts "\n\nSaving: to #{filename}\n\n#{results}\n\n"
|
126
|
+
|
127
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"9538750":[{"BIB_ID":9538750,"MFHD_ID":12589678,"ITEM_ID":8036917,"ITEM_STATUS":1},{"BIB_ID":9538750,"MFHD_ID":12703665,"ITEM_ID":8080827,"ITEM_STATUS":2}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"525807":[{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837019,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837020,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837021,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837022,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837023,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837024,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837025,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837026,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837026,"ITEM_STATUS":17},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837027,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837028,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837029,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837030,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837031,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837032,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837033,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837034,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837035,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837036,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837037,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837038,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837039,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837040,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837041,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837042,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837043,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837044,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837045,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837046,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837047,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837048,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837049,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837050,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837051,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837052,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837053,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837054,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837055,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837056,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837057,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837058,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837059,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837060,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837061,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837062,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837063,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837064,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837065,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837066,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837067,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837068,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837069,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837070,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837071,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837072,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837073,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837074,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837075,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837076,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837077,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837078,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837079,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837080,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837081,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837082,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837083,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837084,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837085,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837086,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837087,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837088,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837089,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837090,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837091,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837092,"ITEM_STATUS":2},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837093,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837094,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837095,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837096,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837097,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837098,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837099,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837100,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837101,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837102,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837103,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837104,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837105,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837106,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837107,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837108,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837109,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837110,"ITEM_STATUS":2},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837111,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837112,"ITEM_STATUS":4},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837112,"ITEM_STATUS":14},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837113,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837114,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837115,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837115,"ITEM_STATUS":17},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837116,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837117,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837118,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837119,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837120,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837121,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837122,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837123,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837124,"ITEM_STATUS":4},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837124,"ITEM_STATUS":14},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837125,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837126,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837127,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837128,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837129,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837130,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837131,"ITEM_STATUS":3},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837132,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837133,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837134,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837135,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837136,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837137,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837138,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837139,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837140,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837141,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837142,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837143,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837144,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837145,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837146,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837147,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837148,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837149,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837150,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837151,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837152,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837153,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":837154,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":887024,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":1376743,"ITEM_STATUS":2},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":1872417,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":2177327,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":2663500,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":2663501,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":2663502,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3001502,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002826,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002827,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002828,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002829,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002831,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002832,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002833,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002841,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002842,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002978,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002980,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002986,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002989,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002993,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3002999,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3003000,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3016076,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":3137098,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":4191636,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":4222583,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":4500740,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":4717869,"ITEM_STATUS":3},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":5241984,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":5241987,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":5242520,"ITEM_STATUS":2},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":5275912,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":5502692,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":5542803,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":5599437,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":5855599,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":5894229,"ITEM_STATUS":2},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":5986516,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":6806945,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":6931261,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":6954585,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":7042513,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":7153896,"ITEM_STATUS":3},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":7423630,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":7423639,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":7468173,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":7632365,"ITEM_STATUS":1},{"BIB_ID":525807,"MFHD_ID":690696,"ITEM_ID":8055841,"ITEM_STATUS":2}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"85":[{"BIB_ID":85,"MFHD_ID":102,"ITEM_ID":6334395,"ITEM_STATUS":1}],"101":[{"BIB_ID":101,"MFHD_ID":118,"ITEM_ID":4441386,"ITEM_STATUS":1},{"BIB_ID":101,"MFHD_ID":118,"ITEM_ID":4441387,"ITEM_STATUS":1}],"102":[{"BIB_ID":102,"MFHD_ID":null,"ITEM_ID":null,"ITEM_STATUS":null},{"BIB_ID":102,"MFHD_ID":null,"ITEM_ID":null,"ITEM_STATUS":null}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"187780":[{"BIB_ID":187780,"MFHD_ID":261307,"ITEM_ID":255971,"ITEM_STATUS":1}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"1812":[{"BIB_ID":1812,"MFHD_ID":2895,"ITEM_ID":3202,"ITEM_STATUS":11}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"2656":[{"BIB_ID":2656,"MFHD_ID":4278,"ITEM_ID":7452974,"ITEM_STATUS":1},{"BIB_ID":2656,"MFHD_ID":4278,"ITEM_ID":7452974,"ITEM_STATUS":19},{"BIB_ID":2656,"MFHD_ID":4278,"ITEM_ID":7452974,"ITEM_STATUS":20}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"9835":[{"BIB_ID":9835,"MFHD_ID":15217,"ITEM_ID":15685,"ITEM_STATUS":1},{"BIB_ID":9835,"MFHD_ID":15217,"ITEM_ID":3471972,"ITEM_STATUS":1},{"BIB_ID":9835,"MFHD_ID":15217,"ITEM_ID":3471972,"ITEM_STATUS":17}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"245":[{"BIB_ID":245,"MFHD_ID":356,"ITEM_ID":746,"ITEM_STATUS":2}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"54865":[{"BIB_ID":54865,"MFHD_ID":80701,"ITEM_ID":81935,"ITEM_STATUS":1},{"BIB_ID":54865,"MFHD_ID":80701,"ITEM_ID":81935,"ITEM_STATUS":14}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"24981":[{"BIB_ID":24981,"MFHD_ID":38212,"ITEM_ID":38439,"ITEM_STATUS":1},{"BIB_ID":24981,"MFHD_ID":38212,"ITEM_ID":38439,"ITEM_STATUS":12}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"989388":[{"BIB_ID":989388,"MFHD_ID":1246943,"ITEM_ID":null,"ITEM_STATUS":null}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"retrieve_holdings":{"39":[{"BIB_ID":39,"MFHD_ID":46,"ITEM_ID":7048713,"ITEM_STATUS":1},{"BIB_ID":39,"MFHD_ID":46,"ITEM_ID":7048715,"ITEM_STATUS":2}]}}
|
data/test/helper.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'minitest/unit'
|
11
|
+
require 'mocha'
|
12
|
+
|
13
|
+
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
16
|
+
|
17
|
+
require 'voyager_oracle_api'
|
18
|
+
|
19
|
+
class MiniTest::Unit::TestCase
|
20
|
+
include Voyager
|
21
|
+
|
22
|
+
def load_oracle_fixture(name)
|
23
|
+
filename = File.join(File.dirname(__FILE__), "fixtures", "#{name}.json")
|
24
|
+
raise "Filename #{filename} does not exist" unless File.exists?(filename)
|
25
|
+
con = OracleConnection.new('connection' => nil)
|
26
|
+
con.results = JSON.parse(File.open(filename, "r").read)
|
27
|
+
return con
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
MiniTest::Unit.autorun
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "helper"
|
2
|
+
require "minitest/autorun"
|
3
|
+
|
4
|
+
class TestComplexHoldings < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def test_complex_some_available_2_3_4_14_17
|
7
|
+
con = load_oracle_fixture('complex_some_available_2_3_4_14_17')
|
8
|
+
assert_kind_of Hash, con.results
|
9
|
+
|
10
|
+
collection = Collection.new(bibid: 525807, connection: con)
|
11
|
+
assert !collection.holdings.empty?
|
12
|
+
|
13
|
+
assert_kind_of Hash, collection.holdings_status
|
14
|
+
assert_equal "some_available", collection.holdings_status["690696"]
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_complex_2c_1in_1out
|
19
|
+
con = load_oracle_fixture('complex_2c_1in_1out')
|
20
|
+
assert_kind_of Hash, con.results
|
21
|
+
|
22
|
+
collection = Collection.new(bibid: 9538750, connection: con)
|
23
|
+
assert !collection.holdings.empty?
|
24
|
+
|
25
|
+
assert_kind_of Hash, collection.holdings_status
|
26
|
+
assert_equal "available", collection.holdings_status["12589678"]
|
27
|
+
assert_equal "unavailable", collection.holdings_status["12703665"]
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "helper"
|
2
|
+
require "minitest/autorun"
|
3
|
+
|
4
|
+
class TestOracleConnection < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def test_fixture
|
7
|
+
con = load_oracle_fixture('fixture_test')
|
8
|
+
assert_kind_of Hash, con.results
|
9
|
+
assert con.connection.nil?
|
10
|
+
assert con.results.has_key?('retrieve_holdings')
|
11
|
+
assert_equal 3, con.results['retrieve_holdings'].keys.length
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
data/test/test_simple.rb
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
require "helper"
|
2
|
+
require "minitest/autorun"
|
3
|
+
|
4
|
+
class TestSimpleHoldings < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def test_simple_no_items
|
7
|
+
con = load_oracle_fixture('simple_no_items')
|
8
|
+
assert_kind_of Hash, con.results
|
9
|
+
|
10
|
+
collection = Collection.new(bibid: 989388, connection: con)
|
11
|
+
assert !collection.holdings.empty?
|
12
|
+
|
13
|
+
assert_kind_of Hash, collection.holdings_status
|
14
|
+
assert_equal "none", collection.holdings_status["1246943"]
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_simple_1_available_item
|
19
|
+
con = load_oracle_fixture('simple_1_available_item')
|
20
|
+
assert_kind_of Hash, con.results
|
21
|
+
|
22
|
+
collection = Collection.new(bibid: 187780, connection: con)
|
23
|
+
assert !collection.holdings.empty?
|
24
|
+
|
25
|
+
assert_kind_of Hash, collection.holdings_status
|
26
|
+
assert_equal "available", collection.holdings_status["261307"]
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_simple_1_unavailable_item_2
|
31
|
+
con = load_oracle_fixture('simple_1_unavailable_item_2')
|
32
|
+
assert_kind_of Hash, con.results
|
33
|
+
|
34
|
+
collection = Collection.new(bibid: 245, connection: con)
|
35
|
+
assert !collection.holdings.empty?
|
36
|
+
|
37
|
+
assert_kind_of Hash, collection.holdings_status
|
38
|
+
assert_equal "unavailable", collection.holdings_status["356"]
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_simple_1_available_item_withdrawal
|
43
|
+
con = load_oracle_fixture('simple_1_available_item_withdrawal')
|
44
|
+
assert_kind_of Hash, con.results
|
45
|
+
|
46
|
+
collection = Collection.new(bibid: 9835, connection: con)
|
47
|
+
assert !collection.holdings.empty?
|
48
|
+
|
49
|
+
assert_kind_of Hash, collection.holdings_status
|
50
|
+
assert_equal "available", collection.holdings_status["15217"]
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_simple_1_available_item_returned
|
55
|
+
con = load_oracle_fixture('simple_1_available_item_returned')
|
56
|
+
assert_kind_of Hash, con.results
|
57
|
+
|
58
|
+
collection = Collection.new(bibid: 1812, connection: con)
|
59
|
+
assert !collection.holdings.empty?
|
60
|
+
|
61
|
+
assert_kind_of Hash, collection.holdings_status
|
62
|
+
assert_equal "available", collection.holdings_status["2895"]
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_simple_1_available_item_review
|
67
|
+
con = load_oracle_fixture('simple_1_available_item_review')
|
68
|
+
assert_kind_of Hash, con.results
|
69
|
+
|
70
|
+
collection = Collection.new(bibid: 2656, connection: con)
|
71
|
+
assert !collection.holdings.empty?
|
72
|
+
|
73
|
+
assert_kind_of Hash, collection.holdings_status
|
74
|
+
assert_equal "available", collection.holdings_status["4278"]
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_simple_1_unavailable_missing
|
79
|
+
con = load_oracle_fixture('simple_1_unavailable_missing')
|
80
|
+
assert_kind_of Hash, con.results
|
81
|
+
|
82
|
+
collection = Collection.new(bibid: 24981, connection: con)
|
83
|
+
assert !collection.holdings.empty?
|
84
|
+
|
85
|
+
assert_kind_of Hash, collection.holdings_status
|
86
|
+
assert_equal "unavailable", collection.holdings_status["38212"]
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_simple_1_unavailable_lost
|
91
|
+
con = load_oracle_fixture('simple_1_unavailable_lost')
|
92
|
+
assert_kind_of Hash, con.results
|
93
|
+
|
94
|
+
collection = Collection.new(bibid: 54865, connection: con)
|
95
|
+
assert !collection.holdings.empty?
|
96
|
+
|
97
|
+
assert_kind_of Hash, collection.holdings_status
|
98
|
+
assert_equal "unavailable", collection.holdings_status["80701"]
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
def test_simple_some_available_1_2
|
104
|
+
con = load_oracle_fixture('simple_some_available_1_2')
|
105
|
+
assert_kind_of Hash, con.results
|
106
|
+
|
107
|
+
collection = Collection.new(bibid: 39, connection: con)
|
108
|
+
assert !collection.holdings.empty?
|
109
|
+
|
110
|
+
assert_kind_of Hash, collection.holdings_status
|
111
|
+
assert_equal "some_available", collection.holdings_status["46"]
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|