• 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

21.35
/app/models/mediaflux/project_approve_request.rb
1
# frozen_string_literal: true
2
module Mediaflux
1✔
3
  # Constructs a request to mediaflux to approve a project
4
  #
5
  # @example
6
  #  project = Project.first
7
  #  project.save_in_mediaflux(session_id: SystemUser.mediaflux_session)
8
  #  approve_req = Mediaflux::ProjectApproveRequest.new(session_token: SystemUser.mediaflux_session, project:)
9
  #  approve_req.resolve
10
  #
11
  class ProjectApproveRequest < Request
1✔
12
    attr_reader :project_metadata, :project
1✔
13
    # Constructor
14
    # @param session_token [String] the API token for the authenticated session
15
    # @param project [Project] project to approve
16
    # @param xml_namespace [String] XML namespace for the <project> element
17
    def initialize(session_token:, project:, xml_namespace: nil, xml_namespace_uri: nil)
1✔
UNCOV
18
      super(session_token: session_token)
×
UNCOV
19
      @project = project
×
UNCOV
20
      @project_metadata = project.metadata
×
UNCOV
21
      @xml_namespace = xml_namespace || self.class.default_xml_namespace
×
UNCOV
22
      @xml_namespace_uri = xml_namespace_uri || self.class.default_xml_namespace_uri
×
23
    end
24

25
    # Specifies the Mediaflux service to use when updating assets
26
    # @return [String]
27
    def self.service
1✔
UNCOV
28
      "asset.set"
×
29
    end
30

31
    private
1✔
32

33
      # The generated XML mimics what we get when we issue an Aterm command as follows:
34
      # service.execute :service -name "asset.set" \
35
      # < :id "1574" :meta -action "replace" < :tigerdata:project -xmlns:tigerdata "tigerdata" < \
36
      #      :ProjectDirectory "/td-demo-001/tigerdataNS/test-05-30-24" :Title "testing approval" :Description "I want to test the approval updates" \
37
      #      :Status "approved" :DataSponsor "cac9" :DataManager "mjc12" :Department "RDSS" :DataUser -ReadOnly "true" "la15" :DataUser "woongkim" \
38
      #      :CreatedOn "30-MAY-2024 09:11:09" :CreatedBy "cac9" :ProjectID "10.34770/tbd"
39
      #      :StorageCapacity < :Size -Requested "500" -Approved "1" "1" :Unit -Requested "GB" -Approved "TB" "TB" > \
40
      #      :Performance -Requested "Standard" -Approved "Standard" "Standard" :Submission < :RequestedBy "cac9" \
41
      #      :RequestDateTime "30-MAY-2024 13:11:09" :ApprovedBy "cac9" :ApprovalDateTime "30-MAY-2024 13:12:44" \
42
      #      :EventlNote < :NoteDateTime "30-MAY-2024 13:12:44" :NoteBy "cac9" :EventType "Quota" :Message "A note"\
43
      #   > > :ProjectPurpose "Research" :SchemaVersion "0.6.1" > > >
44
      #
45
      def build_http_request_body(name:)
1✔
UNCOV
46
        super do |xml|
×
UNCOV
47
          xml.args do
×
UNCOV
48
            xml.id project.mediaflux_id
×
UNCOV
49
            xml.meta do
×
UNCOV
50
              xml.parent.set_attribute("action", "replace")
×
UNCOV
51
              doc = xml.doc
×
UNCOV
52
              root = doc.root
×
53
              # Define the namespace only if this is required
UNCOV
54
              root.add_namespace_definition(@xml_namespace, @xml_namespace_uri)
×
55

UNCOV
56
              element_name = @xml_namespace.nil? ? "project" : "#{@xml_namespace}:project"
×
UNCOV
57
              xml.send(element_name) do
×
UNCOV
58
                build_project(xml)
×
59
              end
60
            end
61
          end
62
        end
63
      end
64

65
      def build_project(xml)
1✔
UNCOV
66
        build_basic_project_meta(xml)
×
UNCOV
67
        build_departments(xml, project_metadata[:departments])
×
UNCOV
68
        build_read_only_user(xml, project_metadata[:data_user_read_only])
×
UNCOV
69
        build_read_write_users(xml, project_metadata[:data_user_read_write])
×
UNCOV
70
        xml.CreatedOn self.class.format_date_for_mediaflux(project_metadata[:created_on])
×
UNCOV
71
        xml.CreatedBy project_metadata[:created_by]
×
UNCOV
72
        xml.ProjectID project_metadata[:project_id]
×
UNCOV
73
        build_storage_capacity(xml)
×
UNCOV
74
        build_performance(xml)
×
UNCOV
75
        build_submission(xml)
×
UNCOV
76
        xml.ProjectPurpose project_metadata[:project_purpose]
×
UNCOV
77
        xml.SchemaVersion TigerdataSchema::SCHEMA_VERSION
×
78
      end
79

80
      def build_basic_project_meta(xml)
1✔
UNCOV
81
        xml.ProjectDirectory project_metadata[:project_directory]
×
UNCOV
82
        xml.Title project_metadata[:title]
×
UNCOV
83
        xml.Description project_metadata[:description] if project_metadata[:description].present?
×
UNCOV
84
        xml.Status project_metadata[:status]
×
UNCOV
85
        xml.DataSponsor project_metadata[:data_sponsor]
×
UNCOV
86
        xml.DataManager project_metadata[:data_manager]
×
87
      end
88

89
      def build_departments(xml, departments)
1✔
UNCOV
90
        return if departments.blank?
×
91

UNCOV
92
        departments.each do |department|
×
UNCOV
93
          xml.Department department
×
94
        end
95
      end
96

97
      def build_read_only_user(xml, ro_users)
1✔
UNCOV
98
        return if ro_users.blank?
×
99

100
        ro_users.each do |ro_user|
×
101
          xml.DataUser do
×
102
            xml.parent.set_attribute("ReadOnly", true)
×
103
            xml.text(ro_user)
×
104
          end
105
        end
106
      end
107

108
      def build_read_write_users(xml, rw_users)
1✔
UNCOV
109
        return if rw_users.blank?
×
110

111
        rw_users.each do |rw_user|
×
112
          xml.DataUser rw_user
×
113
        end
114
      end
115

116
      def build_storage_capacity(xml)
1✔
UNCOV
117
        xml.StorageCapacity do
×
UNCOV
118
          xml.Size do
×
UNCOV
119
            build_value(xml, project_metadata[:storage_capacity][:size][:requested], project_metadata[:storage_capacity][:size][:approved])
×
120
          end
UNCOV
121
          xml.Unit do
×
UNCOV
122
            build_value(xml, project_metadata[:storage_capacity][:unit][:requested], project_metadata[:storage_capacity][:unit][:approved])
×
123
          end
124
        end
125
      end
126

127
      def build_performance(xml)
1✔
UNCOV
128
        xml.Performance do
×
UNCOV
129
          build_value(xml, project_metadata[:storage_performance_expectations][:requested], project_metadata[:storage_performance_expectations][:approved])
×
130
        end
131
      end
132

133
      def build_value(xml, requested, approved)
1✔
UNCOV
134
        xml.parent.set_attribute("Requested", requested)
×
UNCOV
135
        xml.parent.set_attribute("Approved", approved)
×
UNCOV
136
        xml.text(approved)
×
137
      end
138

139
      def build_submission(xml)
1✔
UNCOV
140
        xml.Submission do
×
UNCOV
141
          xml.RequestedBy submission_event.event_person
×
UNCOV
142
          xml.RequestDateTime self.class.format_date_for_mediaflux(submission_event.created_at.iso8601)
×
UNCOV
143
          xml.ApprovedBy approval_event.event_person
×
UNCOV
144
          xml.ApprovalDateTime self.class.format_date_for_mediaflux(approval_event.created_at.iso8601)
×
UNCOV
145
          build_submission_note(xml)
×
146
        end
147
      end
148

149
      def build_submission_note(xml)
1✔
UNCOV
150
        return if approval_event.event_note.blank?
×
151

152
        xml.EventlNote do
×
153
          xml.NoteDateTime self.class.format_date_for_mediaflux(approval_event.created_at.iso8601)
×
154
          xml.NoteBy approval_event.event_note["note_by"]
×
155
          xml.EventType approval_event.event_note["event_type"]
×
156
          xml.Message approval_event.event_note["message"]
×
157
        end
158
      end
159

160
      def approval_event
1✔
UNCOV
161
        @approval_event ||= project.provenance_events.find_by(event_type: ProvenanceEvent::APPROVAL_EVENT_TYPE)
×
162
      end
163

164
      def submission_event
1✔
UNCOV
165
        @submission_event ||= project.provenance_events.find_by(event_type: ProvenanceEvent::SUBMISSION_EVENT_TYPE)
×
166
      end
167
  end
168
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