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

pulibrary / tigerdata-app / b489533f-9066-4a1f-b488-40e1f0465f4b

04 Aug 2025 05:29PM UTC coverage: 75.6% (-1.5%) from 77.142%
b489533f-9066-4a1f-b488-40e1f0465f4b

Pull #1657

circleci

JaymeeH
Merge branch 'i1632-save-data-users' of https://github.com/pulibrary/tiger-data-app into i1632-save-data-users
Pull Request #1657: Add data users to a project after it is created in mediaflux

23 of 81 new or added lines in 4 files covered. (28.4%)

5 existing lines in 2 files now uncovered.

2206 of 2918 relevant lines covered (75.6%)

314.38 hits per line

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

52.94
/app/operations/project_create.rb
1
# frozen_string_literal: true
2
class ProjectCreate < Dry::Operation
1✔
3
  class ProjectCreateError < StandardError; end
1✔
4

5
  def call(request:, approver:)
1✔
6
    project = step create_project_from_request(request)
1✔
7
    step persist_in_mediaflux(project, approver)
1✔
NEW
8
    step persist_users_in_mediaflux(project, approver)
×
NEW
9
    Success project
×
10
  end
11

12
  private
1✔
13

14
    def create_project_from_request(request)
1✔
15
      # Create the project in the Rails database
16
      project_metadata_json = RequestProjectMetadata.convert(request)
1✔
17
      project = Project.create!({ metadata_json: project_metadata_json })
1✔
18
      project.draft_doi
1✔
19
      project.save!
1✔
20

21
      # Return Success(attrs) or Failure(error)
22
      Success project
1✔
23
    end
24

25
    # rubocop:disable Metrics/MethodLength
26
    def persist_in_mediaflux(project, current_user)
1✔
27
      # Create the project in Mediaflux
28
      request = Mediaflux::ProjectCreateServiceRequest.new(session_token: current_user.mediaflux_session, project: project)
1✔
29
      request.resolve
1✔
30

31
      if request.mediaflux_id.to_i == 0
1✔
32
        raise ProjectCreateError, "Error saving project #{project.id} to Mediaflux: #{request.response_error}. Debug output: #{request.debug_output}"
1✔
33
      end
NEW
34
      project.mediaflux_id = request.mediaflux_id
×
NEW
35
      project.metadata_model.status = Project::APPROVED_STATUS
×
NEW
36
      project.save!
×
37

NEW
38
      debug_output = if request.mediaflux_id == 0
×
NEW
39
                       "Error saving project #{project.id} to Mediaflux: #{request.response_error}. Debug output: #{request.debug_output}"
×
40
                     else
NEW
41
                       request.debug_output.to_s
×
42
                     end
NEW
43
      Rails.logger.error debug_output
×
44

NEW
45
      ProvenanceEvent.generate_approval_events(project: project, user: current_user, debug_output: debug_output)
×
46

NEW
47
      Success project.mediaflux_id
×
48
      # Return Success(user) or Failure(error)
49
    end
50
    # rubocop:enable Metrics/MethodLength
51

52
    def persist_users_in_mediaflux(project, current_user)
1✔
53
      # Add the data users to the project in Mediaflux
NEW
54
      add_users_request = Mediaflux::ProjectUserAddRequest.new(session_token: current_user.mediaflux_session, project: project)
×
NEW
55
      add_users_request.resolve
×
56

NEW
57
      user_debug = add_users_request.debug_output.to_s
×
NEW
58
      Rails.logger.debug { "Project #{project.id} users have been added to MediaFlux: #{user_debug}" }
×
59

NEW
60
      Success true
×
61
      # Return Success(true) or Failure(error)
62
    end
63
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