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

pulibrary / allsearch_api / 90764477-487d-4c2f-bebb-f5a68deec0e3

02 Jul 2025 06:32PM UTC coverage: 99.507% (+0.01%) from 99.494%
90764477-487d-4c2f-bebb-f5a68deec0e3

push

circleci

web-flow
Merge pull request #381 from pulibrary/dpul-rack

Rewrite DPUL and FindingAids controllers as rack applications

16 of 30 new or added lines in 3 files covered. (53.33%)

74 existing lines in 17 files now uncovered.

1009 of 1014 relevant lines covered (99.51%)

96.77 hits per line

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

100.0
/app/controllers/rack_response_controller.rb
1
# frozen_string_literal: true
2

3
class RackResponseController
3✔
4
  def self.call(env)
3✔
NEW
5
    request = Rack::Request.new(env)
40✔
NEW
6
    new(request).response
40✔
7
  end
8

9
  def initialize(request)
3✔
NEW
10
    @request = request
40✔
11
  end
12

13
  def response
3✔
NEW
14
    if empty_query?
40✔
NEW
15
      empty_query_response
6✔
16
    else
NEW
17
      [200, { 'Content-Type' => 'application/json; charset=utf-8' }, [json]]
34✔
18
    end
19
  end
20

21
  private
3✔
22

23
  attr_reader :request, :service
3✔
24

25
  def json
3✔
NEW
26
    service.new(query_terms:).our_response
34✔
27
  end
28

29
  def empty_query?
3✔
NEW
30
    query_terms == ''
40✔
31
  end
32

33
  def query_terms
3✔
NEW
34
    @query_terms ||= case request.params['query']
74✔
35
                     # If the query contains any non-whitespace characters
36
                     in /\S/ => query
NEW
37
                       query.gsub(/[#{Regexp.escape(special_characters)}]/, ' ')
34✔
38
                            .gsub(/\s+/, ' ')
39
                            .strip
40
                     else
NEW
41
                       ''
6✔
42
                     end
43
  end
44

45
  # :reek:UtilityFunction
46
  def empty_query_response
3✔
NEW
47
    error_response(problem: 'QUERY_IS_EMPTY',
6✔
48
                   message: 'The query param must contain non-whitespace characters.',
49
                   status: 400)
50
  end
51

52
  # :reek:UtilityFunction
53
  def error_response(problem:, message:, status:)
3✔
54
    [
NEW
55
      status,
6✔
56
      { 'Content-Type' => 'application/json; charset=utf-8' },
57
      [{ error: {
58
        problem:,
59
        message:
60
      } }.to_json]
61
    ]
62
  end
63

64
  def special_characters
3✔
NEW
65
    '{}#!</>'
34✔
66
  end
67
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

© 2026 Coveralls, Inc