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

pulibrary / tigerdata-app / 7291b10e-eaa3-4284-9371-5a980ceebf59

24 Nov 2025 07:18PM UTC coverage: 87.613% (-3.7%) from 91.333%
7291b10e-eaa3-4284-9371-5a980ceebf59

push

circleci

web-flow
Adds breadcrumb to Wizard (#2231)

Adds the breadcrumb to the Wizard and the functionality to allow the
user to save their changes before leaving the Wizard when clicking on
the "Dashboard" link in the breadcrumbs.

Closes #2102

5 of 12 new or added lines in 11 files covered. (41.67%)

904 existing lines in 36 files now uncovered.

2801 of 3197 relevant lines covered (87.61%)

360.23 hits per line

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

100.0
/app/operations/project_search.rb
UNCOV
1
class ProjectSearch < Dry::Operation
2✔
UNCOV
2
    def call(search_string:, requestor:, field_name: "Title")
2✔
UNCOV
3
        verified_search_string = step verify_search_string(search_string)
13✔
UNCOV
4
        result_ids = step query_mediaflux(search_string: verified_search_string, requestor:, field_name:)
12✔
UNCOV
5
        step convert_results(result_ids)
11✔
UNCOV
6
    end
7

UNCOV
8
    private
2✔
9

UNCOV
10
    def verify_search_string(search_string)
2✔
11
        # An empty search does not make sense
UNCOV
12
        if search_string.blank?
13✔
13
            Failure("Search String cannot be empty")
1✔
14
        # Assuming there may be more verifications in the future
UNCOV
15
        else
UNCOV
16
            Success(search_string)
12✔
UNCOV
17
        end
UNCOV
18
    end
19

UNCOV
20
    def query_mediaflux(search_string:, requestor:, field_name:)
2✔
UNCOV
21
      query = mediaflux_query(search_string:, requestor:, field_name:)
12✔
UNCOV
22
      if query.error?
12✔
23
        Failure("Error querying mediaflux: #{query.response_error[:message]}")
1✔
UNCOV
24
      else
UNCOV
25
        result_ids = query.result_items.map{|result| result[:id]}
44✔
UNCOV
26
        Success(result_ids)
11✔
UNCOV
27
      end
UNCOV
28
    end
29

UNCOV
30
    def mediaflux_query(search_string:, requestor:, field_name:)
2✔
UNCOV
31
      aql_query = "xpath(tigerdata:project/#{field_name}) matches ignore-case '#{search_string}'"
12✔
UNCOV
32
      Mediaflux::QueryRequest.new(session_token: requestor.mediaflux_session, aql_query: , iterator: false )
12✔
UNCOV
33
    end
34

35

UNCOV
36
    def convert_results(result_ids)
2✔
UNCOV
37
      projects_not_found = []
11✔
UNCOV
38
      projects = []
11✔
UNCOV
39
      result_ids.map do |mediaflux_id|
11✔
UNCOV
40
        project = Project.find_by(mediaflux_id: )
33✔
UNCOV
41
        if project.blank?
33✔
UNCOV
42
          projects_not_found << mediaflux_id
20✔
UNCOV
43
        else
UNCOV
44
          projects << project
13✔
UNCOV
45
        end
UNCOV
46
      end
UNCOV
47
      if projects_not_found.count > 0
11✔
UNCOV
48
        Rails.logger.error("The following Mediaflux Projects were not found in the Rails database: #{projects_not_found.join(', ')}")
2✔
UNCOV
49
        Honeybadger.notify("The following Mediaflux Projects were not found in the Rails database: #{projects_not_found.join(', ')}")
2✔
UNCOV
50
      end
UNCOV
51
      Success(projects)
11✔
UNCOV
52
    end
UNCOV
53
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