voyager_oracle_api 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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}]}}
@@ -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
+
@@ -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