• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In
Build has been canceled!

pulibrary / orangelight / e6351b02-aa50-4c9d-8c1f-fbf95192716f

pending completion
e6351b02-aa50-4c9d-8c1f-fbf95192716f

push

circleci

Christina Chortaria
Add illiad service when preservation and conservation

3 of 3 new or added lines in 2 files covered. (100.0%)

6 existing lines in 1 file now uncovered.

5475 of 5746 relevant lines covered (95.28%)

1432.07 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.25
/app/models/requests/requestable/item.rb
1
# frozen_string_literal: true
2
class Requests::Requestable
3✔
3
  class Item < SimpleDelegator
3✔
4
    def pick_up_location_id
3✔
5
      self['pickup_location_id'] || ""
2✔
6
    end
7

8
    # pick_up_location_code on the item level
9
    def pick_up_location_code
3✔
10
      self['pickup_location_code'] || ""
19✔
11
    end
12

13
    def item_type
3✔
14
      self['item_type'] || ""
2,409✔
15
    end
16

17
    def description
3✔
18
      self[:description] || enum_value
160✔
19
    end
20

21
    def enum_value
3✔
22
      # enum_display from alma, enumeration from scsb
23
      [self['enum_display'], self['enumeration']].join(" ").strip
467✔
24
    end
25

26
    def cron_value
3✔
27
      self['chron_display'] || ""
108✔
28
    end
29

30
    def copy_number
3✔
31
      self[:copy_number] || ""
159✔
32
    end
33

34
    def copy_value
3✔
35
      @copy_value ||= if self[:copy_number].present? && self[:copy_number].to_i != 0 && self[:copy_number].to_i != 1
160✔
36
                        "Copy #{self[:copy_number]}"
2✔
37
                      else
38
                        ""
158✔
39
                      end
40
      @copy_value
160✔
41
    end
42

43
    def item_data?
3✔
44
      self[:id].present?
2,434✔
45
    end
46

47
    def temp_loc?
3✔
48
      self[:in_temp_library]
1,101✔
49
    end
50

51
    def in_resource_sharing?
3✔
52
      self[:temp_location_code] == "RES_SHARE$IN_RS_REQ"
90✔
53
    end
54

55
    def on_reserve?
3✔
56
      self[:on_reserve] == 'Y'
179✔
57
    end
58

59
    def inaccessible?
3✔
60
      status == 'Inaccessible'
×
61
    end
62

63
    def hold_request?
3✔
64
      status_label == 'Hold Shelf'
1✔
65
    end
66

67
    def preservation_conservation?
3✔
68
      status_label == "Preservation and Conservation"
8✔
69
    end
70

71
    def enumerated?
3✔
72
      enum_value.present?
74✔
73
    end
74

75
    # item type on the item level
76
    def item_type_non_circulate?
3✔
77
      ['NoCirc', 'Closed', 'Res-No'].include? item_type
2,409✔
78
    end
79

80
    def id
3✔
81
      self['id']
4,271✔
82
    end
83

84
    def use_statement
3✔
85
      self[:use_statement]
3,478✔
86
    end
87

88
    def collection_code
3✔
89
      self[:collection_code]
117✔
90
    end
91

92
    def missing?
3✔
UNCOV
93
      status_label == 'Missing'
×
94
    end
95

96
    def charged?
3✔
97
      unavailable_statuses.include?(status_label)
3,129✔
98
    end
99

100
    def status
3✔
101
      # SCSB still returns a status of "Not Available", which we should change to "Unavailable"
102
      return self[:status] if self[:status].present? && self[:status] != "Not Available"
315✔
103
      if available?
86✔
104
        "Available"
39✔
105
      else
106
        "Unavailable"
47✔
107
      end
108
    end
109

110
    def status_label
3✔
111
      self[:status_label]
3,374✔
112
    end
113

114
    def available?
3✔
115
      available_statuses.include?(status_label)
236✔
116
    end
117

118
    def barcode?
3✔
119
      /^[0-9]+/.match(barcode).present?
16✔
120
    end
121

122
    def barcode
3✔
123
      self[:barcode]
34✔
124
    end
125

126
    # Is the ReCAP Item from a partner location
127
    def partner_holding?
3✔
128
      Requests::Config[:recap_partner_locations].keys.include? self["location_code"]
8,139✔
129
    end
130

131
    class NullItem
3✔
132
      def nil?
3✔
133
        true
1✔
134
      end
135

136
      def present?
3✔
137
        false
187✔
138
      end
139

140
      def blank?
3✔
141
        true
2✔
142
      end
143

144
      def item_data?
3✔
145
        false
284✔
146
      end
147

148
      def pick_up_location_id
3✔
149
        ""
1✔
150
      end
151

152
      def pick_up_location_code
3✔
153
        ""
1✔
154
      end
155

156
      def item_type
3✔
157
        ""
1✔
158
      end
159

160
      def enum_value
3✔
161
        ""
17✔
162
      end
163

164
      def cron_value
3✔
165
        ""
17✔
166
      end
167

168
      def copy_value
3✔
UNCOV
169
        ""
×
170
      end
171

172
      def temp_loc?
3✔
173
        ""
18✔
174
      end
175

176
      def in_resource_sharing?
3✔
UNCOV
177
        false
×
178
      end
179

180
      def on_reserve?
3✔
181
        false
24✔
182
      end
183

184
      def inaccessible?
3✔
UNCOV
185
        false
×
186
      end
187

188
      def hold_request?
3✔
189
        false
×
190
      end
191

192
      def enumerated?
3✔
193
        false
×
194
      end
195

196
      def item_type_non_circulate?
3✔
197
        false
88✔
198
      end
199

200
      def id
3✔
201
        nil
202
      end
203

204
      def use_statement
3✔
205
        ''
90✔
206
      end
207

208
      def collection_code
3✔
UNCOV
209
        ''
×
210
      end
211

212
      def missing?
3✔
213
        false
×
214
      end
215

216
      def charged?
3✔
217
        false
120✔
218
      end
219

220
      def status_label
3✔
UNCOV
221
        ''
×
222
      end
223

224
      def status
3✔
225
        'Unavailable'
4✔
226
      end
227

228
      def available?
3✔
229
        false
29✔
230
      end
231

232
      def barcode?
3✔
233
        false
41✔
234
      end
235

236
      def barcode
3✔
237
        ''
4✔
238
      end
239

240
      def partner_holding?
3✔
241
        false
149✔
242
      end
243
    end
244

245
    private
3✔
246

247
      def available_statuses
3✔
248
        scsb = ["Available"]
236✔
249
        alma = ['Item in place']
236✔
250
        scsb + alma
236✔
251
      end
252

253
      def unavailable_statuses
3✔
254
        scsb = ['Not Available', "Item Barcode doesn't exist in SCSB database."]
3,129✔
255
        alma = ['Unavailable', 'Claimed Returned', 'Lost', 'Hold Shelf', 'Transit', 'Missing', 'Resource Sharing Request',
3,129✔
256
                'Lost Resource Sharing Item', 'Requested', 'In Transit to Remote Storage', 'Lost and paid',
257
                'Loan', 'Controlled Digital Lending', 'At Preservation', 'Technical - Migration', 'Preservation and Conservation']
258
        scsb + alma
3,129✔
259
      end
260
  end
261
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc