• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / allsearch_api / a80abbec-2aed-4282-a410-0011970d763d

01 Dec 2025 11:13PM UTC coverage: 99.903%. Remained the same
a80abbec-2aed-4282-a410-0011970d763d

push

circleci

web-flow
Merge pull request #411 from pulibrary/database-record-rom

Start using ROM-rb for loading Library Database records from CSV

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

86 existing lines in 13 files now uncovered.

1035 of 1036 relevant lines covered (99.9%)

108.64 hits per line

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

100.0
/app/models/art_museum.rb
1
# frozen_string_literal: true
2

3
# This class is responsible for querying the Art Museum API
4
class ArtMuseum
3✔
5
  include ActiveModel::API
3✔
6
  include Parsed
3✔
7

8
  attr_reader :service, :service_response
3✔
9

10
  def initialize(query_terms:)
3✔
UNCOV
11
    @query_terms = query_terms
16✔
UNCOV
12
    @service = 'artmuseum'
16✔
UNCOV
13
    @service_response = art_museum_service_response
16✔
14
  end
15

16
  def query_terms
3✔
UNCOV
17
    @query_terms.truncate(220, omission: '', separator: /\s/)
44✔
18
  end
19

20
  private
3✔
21

22
  def art_museum_service_response
3✔
UNCOV
23
    uri = URI::HTTPS.build(host: 'data.artmuseum.princeton.edu', path: '/search',
16✔
24
                           query: "q=#{query_terms}&type=all&size=3")
UNCOV
25
    response = Net::HTTP.get(uri)
16✔
26
    begin
UNCOV
27
      JSON.parse(response, symbolize_names: true)
16✔
28
    rescue JSON::ParserError
UNCOV
29
      handle_parser_error response
1✔
30
    end
31
  end
32

33
  def number
3✔
UNCOV
34
    service_response.dig(:hits, :total)
14✔
35
  end
36

37
  def more_link
3✔
UNCOV
38
    URI::HTTPS.build(host: 'artmuseum.princeton.edu', path: '/search/collections',
28✔
39
                     query: "mainSearch=\"#{query_terms}\"")
40
  end
41

42
  def documents
3✔
UNCOV
43
    @documents ||= service_response.dig(:hits, :hits)
14✔
44
  end
45

46
  def handle_parser_error(response)
3✔
UNCOV
47
    raise AllsearchError.new(
1✔
48
      problem: 'UPSTREAM_ERROR',
49
      msg: "Query to upstream failed with #{ActionController::Base.helpers.strip_tags(response)}"
50
    )
51
  end
52
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