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

pulibrary / tigerdata-app / 54385a8c-ec76-421e-81fd-41bf4c9d5b76

21 Jul 2025 08:55PM UTC coverage: 66.374% (-5.3%) from 71.631%
54385a8c-ec76-421e-81fd-41bf4c9d5b76

push

circleci

web-flow
Upgrade mediaflux build to v0.7.0 (#1617)

* Upgrade mediaflux build to v0.7.0

* prettier

* Upgrade mflux version used by the test suite

* tagging integration tests

* tagging integration tests

4 of 18 branches covered (22.22%)

0 of 1 new or added line in 1 file covered. (0.0%)

222 existing lines in 24 files now uncovered.

2722 of 4101 relevant lines covered (66.37%)

295.38 hits per line

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

63.89
/app/models/project_mediaflux.rb
1
# frozen_string_literal: true
2

3
# A custom exception class for when a namespace path is already taken
4
class MediafluxDuplicateNamespaceError < StandardError
1✔
5
end
6

7
# Take an instance of Project and adds it to MediaFlux
8
class ProjectMediaflux
1✔
9
  # If the project hasn't yet been created in mediaflux, create it.
10
  # If it already exists, update it.
11
  # @return [String] the mediaflux id of the project
12
  def self.save(project:, user:, xml_namespace: nil)
1✔
13
    session_id = user.mediaflux_session
5✔
14
    if project.mediaflux_id.nil?
5✔
15
      mediaflux_id = ProjectMediaflux.create!(project: project, user: user)
5✔
16
      Rails.logger.debug "Project #{project.id} has been created in MediaFlux (asset id #{mediaflux_id})"
5✔
17
    else
UNCOV
18
      ProjectMediaflux.update(project: project, user: user)
×
UNCOV
19
      Rails.logger.debug "Project #{project.id} has been updated in MediaFlux (asset id #{project.mediaflux_id})"
×
20
    end
21
    project.reload
5✔
22
    project.mediaflux_id
5✔
23
  end
24

25
  # Create a project in MediaFlux
26
  #
27
  # @param project [Project] the project that needs to be added to MediaFlux
28
  # @param session_id [] the session id for the user who is currently authenticated to MediaFlux
29
  # @param xml_namespace []
30
  # @return [String] The id of the project that got created
31
  def self.create!(project:, user:, xml_namespace: nil)
1✔
32
    project.approve!(current_user: user)
26✔
33
    project.mediaflux_id
25✔
34
  end
35

36
  def self.update(project:, user:)
1✔
UNCOV
37
    session_id = user.mediaflux_session
×
UNCOV
38
    project.metadata_model.updated_on ||= Time.current.in_time_zone("America/New_York").iso8601
×
UNCOV
39
    project.metadata_model.updated_by ||= user.uid
×
UNCOV
40
    update_request = Mediaflux::ProjectUpdateRequest.new(session_token: session_id, project: project)
×
UNCOV
41
    update_request.resolve
×
UNCOV
42
    raise update_request.response_error[:message] if update_request.error?
×
43

44
    # Save the ActiveRecord to make sure the updated metadata is also saved in our PostgreSQL database
UNCOV
45
    project.save!
×
46
  end
47

48
  def self.xml_payload(project:, xml_namespace: nil)
1✔
49
    project_name = project.project_directory
6✔
50
    project_namespace = "#{project_name}NS"
6✔
51
    project_parent = Mediaflux::Connection.root_collection
6✔
52

53
    create_request = Mediaflux::ProjectCreateRequest.new(session_token: nil, namespace: project_namespace, project:, xml_namespace: xml_namespace, pid: project_parent)
6✔
54
    create_request.xml_payload
6✔
55
  end
56

57
  def self.document(project:, xml_namespace: nil)
1✔
58
    xml_body = xml_payload(project:, xml_namespace:)
1✔
59
    Nokogiri::XML.parse(xml_body)
1✔
60
  end
61

62
  def self.create_root_tree(session_id:)
1✔
UNCOV
63
    root_ns = Rails.configuration.mediaflux["api_root_collection_namespace"]
×
UNCOV
64
    parent_collection = Rails.configuration.mediaflux["api_root_collection_name"]
×
65
    req = Mediaflux::RootCollectionAsset.new(session_token: session_id, root_ns:, parent_collection:)
×
UNCOV
66
    req.create
×
67
  end
68
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