voyager_oracle_api 0.1.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.
@@ -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