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

pulibrary / allsearch_api / 322d09b9-bf13-4991-90db-61f466d8fd7d

02 Dec 2025 06:07PM UTC coverage: 99.905% (+12.0%) from 87.896%
322d09b9-bf13-4991-90db-61f466d8fd7d

push

circleci

web-flow
Merge pull request #416 from pulibrary/repo-factory

Extract ROM repository creation into a factory

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

78 existing lines in 18 files now uncovered.

1055 of 1056 relevant lines covered (99.91%)

102.95 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✔
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✔
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