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

pulibrary / allsearch_api / 69a58078-7c74-46c7-a70c-36d7ba34ec41

01 Dec 2025 11:31PM UTC coverage: 99.903%. Remained the same
69a58078-7c74-46c7-a70c-36d7ba34ec41

push

circleci

web-flow
Merge pull request #413 from pulibrary/rom-repo

Update ROM-related gems

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✔
11
    @query_terms = query_terms
16✔
12
    @service = 'artmuseum'
16✔
13
    @service_response = art_museum_service_response
16✔
14
  end
15

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

20
  private
3✔
21

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

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

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

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

46
  def handle_parser_error(response)
3✔
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