• 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

94.74
/app/models/mediaflux/project_create_request.rb
1
# frozen_string_literal: true
2
module Mediaflux
1✔
3
    # FOLLOW-UP-PR-1572: think this class should be removed now that we are creating projects
4
    # via ProjectCreateServiceRequest. However we are calling it in ProjectMediaflux.xml_payload
5
    # (not sure why) so I am not deleting it just yet.
6
    # See https://github.com/pulibrary/tigerdata-app/issues/1607
7
    class ProjectCreateRequest < AssetCreateRequest
1✔
8
      attr_reader :namespace, :project, :collection, :project_metadata
1✔
9

10
      # Constructor
11
      # @param session_token [String] the API token for the authenticated session
12
      # @param namespace [String] Parent namespace for the asset to be created in
13
      # @param project [Project] project to be created in Mediaflux
14
      # @param pid [String] Optional Parent collection id (use this or a namespace not both)
15
      # @param xml_namespace [String] Optional parameter for metadata xml namspace
16
      # @param xml_namespace_uri [String] Optional parameter for metadata xml namspace url
17
      def initialize(session_token:, namespace:, project:,  xml_namespace: nil, xml_namespace_uri: nil, pid: nil)
1✔
18
        super(session_token:, namespace:, name: project.project_directory_short,  xml_namespace:, xml_namespace_uri:,  pid:)
6✔
19
        @project = project
6✔
20
        @project_metadata = project.metadata_model
6✔
21
      end
22

23
      private
1✔
24

25
        # The generated XML mimics what we get when we issue an Aterm command as follows:
26
        # > asset.set :id path=/sandbox_ns/rdss_collection
27
        #     :meta <
28
        #       :tigerdata:project <
29
        #         :title "RDSS test project"
30
        #         :description "The description of the project"
31
        #         ...the rest of the fields go here..
32
        #       >
33
        #     >
34
        #
35
        def build_http_request_body(name:)
1✔
36
          super do |xml|
6✔
37
            project_xml(xml)
6✔
38
          end
39
        end
40

41
        # rubocop:disable Metrics/MethodLength
42
        # rubocop:disable Metrics/AbcSize
43
        def project_xml(xml)
1✔
44
          xml.meta do
6✔
45
            root = xml.doc.root
6✔
46
            root.add_namespace_definition(@xml_namespace, @xml_namespace_uri)
6✔
47

48
            xml.send("#{@xml_namespace}:project") do
6✔
49
              xml.ProjectDirectory project.project_directory
6✔
50
              xml.Title project_metadata.title
6✔
51
              if project_metadata.description.blank?
6✔
UNCOV
52
                xml.Description "description not provided"
×
53
              else
54
                xml.Description project_metadata.description
6✔
55
              end
56
              # xml.Status project_metadata.status
57
              xml.DataSponsor project_metadata.data_sponsor
6✔
58
              xml.DataManager project_metadata.data_manager
6✔
59
              departments =  project_metadata.departments || []
6✔
60
              departments.each do |department|
6✔
61
                xml.Department department
12✔
62
              end
63

64
              ro_users = project_metadata.ro_users || []
6✔
65
              rw_users = project_metadata.rw_users || []
6✔
66
              all_users = ro_users + rw_users
6✔
67
              data_users = all_users.join(",")
6✔
68
              if data_users.blank?
6✔
69
                xml.DataUser "n/a"
6✔
70
              else
UNCOV
71
                xml.DataUser data_users
×
72
              end
73
            #   created_on = Mediaflux::Time.format_date_for_mediaflux(project_metadata.created_on)
74
            #   xml.CreatedOn created_on
75
            #   xml.CreatedBy project_metadata.created_by
76
              xml.ProjectID project_metadata.project_id
6✔
77
            #   capacity = project_metadata.storage_capacity.with_indifferent_access
78
            #   xml.StorageCapacity do
79
            #     xml.Size capacity["size"]["requested"]
80
            #     xml.Unit capacity["unit"]["requested"]
81
            #   end
82
            #   performance = project_metadata.storage_performance_expectations
83
            #   xml.Performance do
84
            #     xml.parent.set_attribute("Requested", performance["requested"])
85
            #     xml.text(performance["requested"])
86
            #   end
87
            #   xml.Submission do
88
            #     xml.RequestedBy project_metadata.created_by
89
            #     xml.RequestDateTime created_on
90
            #   end
91
            #   xml.ProjectPurpose project_metadata.project_purpose
92
            #   xml.SchemaVersion TigerdataSchema::SCHEMA_VERSION
93
            end
94
          end
95
          # TODO: SHOULD WE CREATE A PROJECT USING REQUESTED VALUES OR APPROVED VALUES?
96
          allocation = project_metadata.storage_capacity[:size][:requested].to_s << " " << project_metadata.storage_capacity[:unit][:requested]
6✔
97

98
          xml.quota do
6✔
99
            xml.allocation allocation
6✔
100
            xml.description "Project Quota"
6✔
101
          end
102
        end
103
      # rubocop:enable Metrics/AbcSize
104
      # rubocop:enable Metrics/MethodLength
105
    end
106
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