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

pulibrary / tigerdata-app / 9c14aca7-a804-4b08-99b1-4bf4a988fba2

01 Aug 2025 02:47PM UTC coverage: 77.946% (+2.1%) from 75.821%
9c14aca7-a804-4b08-99b1-4bf4a988fba2

Pull #1666

circleci

carolyncole
Consolidated all the logic for the project creation in the Project model
Pull Request #1666: Refactor project creation in Mediaflux

0 of 2 new or added lines in 2 files covered. (0.0%)

2216 of 2843 relevant lines covered (77.95%)

329.97 hits per line

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

25.71
/app/services/test_project_generator.rb
1
# frozen_string_literal: true
2
class TestProjectGenerator
1✔
3
  attr_reader :user, :number, :sequence, :project_prefix
1✔
4

5
  def initialize(user:, number:, project_prefix:)
1✔
6
    @user = user
×
7
    @number = number
×
8
    @sequence = number.to_s.rjust(5, "0")
×
9
    @project_prefix = project_prefix
×
10
  end
11

12
  def generate
1✔
13
    project = create_project
×
NEW
14
    project.approve!(current_user: user)
×
15
    project.save!
×
16
    project
×
17
  end
18

19
  private
1✔
20

21
    def create_project
1✔
22
      metadata = {
23
        created_on: Time.current.in_time_zone("America/New_York").iso8601,
×
24
        created_by: user.uid,
25
        data_sponsor: sponsor.uid,
26
        data_manager: sponsor.uid,
27
        data_user_read_write: [user.uid],
28
        departments: departments,
29
        project_directory: "#{project_prefix}-#{sequence}",
30
        title: "Project #{project_prefix} #{sequence}",
31
        description: "Description of project #{project_prefix} #{sequence}",
32
        data_user_read_only: [],
33
        data_user_read_write: [],
34
        project_id: project_id,
35
        storage_capacity: Rails.configuration.project_defaults[:storage_capacity],
36
        project_purpose: Rails.configuration.project_defaults[:project_purpose],
37
        storage_performance_expectations: Rails.configuration.project_defaults[:storage_performance_expectations],
38
        status: Project::PENDING_STATUS
39
      }
40
      # For testing purposes we use the same size as the requested values
41
      metadata[:storage_capacity][:size][:approved] = metadata[:storage_capacity][:size][:requested]
×
42
      metadata[:storage_capacity][:unit][:approved] = metadata[:storage_capacity][:unit][:requested]
×
43
      project = Project.new(metadata: )
×
44
      project.save!
×
45
      project
×
46
    end
47

48
    def sponsor
1✔
49
      return User.where(uid: "hc8719").first
×
50
    end
51

52
    def departments
1✔
53
      ldepartments = []
×
54
      ldepartments << Affiliation.all[3][:code] if (number % 7) == 0
×
55
      ldepartments << Affiliation.all[2][:code] if (number % 3) == 0
×
56
      ldepartments << Affiliation.all[1][:code] if (number % 5) == 0
×
57
      ldepartments << Affiliation.all[0][:code] if ldepartments.count == 0
×
58
      ldepartments
×
59
    end
60

61
    def project_id
1✔
62
      part1 = rand(1...99).to_s.rjust(2, "0")
×
63
      part2 = rand(1...99999).to_s.rjust(5, "0")
×
64
      part3 = rand(1...9999).to_s.rjust(4, "0")
×
65
      part4 = rand(1...9999).to_s.rjust(4, "0")
×
66
      "#{part1}.#{part2}/#{part3}-#{part4}"
×
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