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

pulibrary / tigerdata-app / d7ce1bf9-25b8-4b3e-b9dd-43f9a26f2d96

17 Oct 2025 05:51PM UTC coverage: 91.054%. Remained the same
d7ce1bf9-25b8-4b3e-b9dd-43f9a26f2d96

Pull #2055

circleci

jrgriffiniii
- Ensuring that `parallelism` is set to 4
- Separating `system` RSpec spec suites in the CI build
- Using an `inconsistent` RSpec tag to mark inconsistently failing tests
- Ensuring that CI does not run for `inconsistent` tests
Pull Request #2055: Ensuring that `parallelism` is set to 4 for CircleCI and separates `system` and inconsistently-failing tests into separate CI jobs

2738 of 3007 relevant lines covered (91.05%)

380.37 hits per line

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

93.33
/app/controllers/request_wizards_controller.rb
1
# frozen_string_literal: true
2
class RequestWizardsController < ApplicationController
5✔
3
  layout "wizard"
5✔
4
  before_action :set_breadcrumbs
5✔
5

6
  before_action :set_request_model, only: %i[save]
5✔
7
  before_action :exit_without_saving, only: %i[save]
5✔
8
  before_action :set_or_init_request_model, only: %i[show]
5✔
9
  before_action :check_access
5✔
10

11
  attr_reader :request_model
5✔
12

13
  # GET /request_wizards/1
14
  def show
5✔
15
    # show the current wizard step form
16
    render_current
80✔
17
  end
18

19
  # PUT /request_wizards/1/save
20
  def save
5✔
21
    # save and render dashboard
22
    save_request
91✔
23
    case params[:commit]
91✔
24
    when "Back"
25
      render_back
19✔
26
    when "Next", "Submit"
27
      render_next
31✔
28
    else
29
      if params[:commit].start_with?("http")
41✔
30
        # Go directly to the step the user clicked on
31
        redirect_to params[:commit]
5✔
32
      else
33
        redirect_to request_path(@request_model)
36✔
34
      end
35
    end
36
  end
37

38
  private
5✔
39

40
    def check_access
5✔
41
      return if user_eligible_to_modify_request?
233✔
42

43
      # request can not be modified by this user, redirect to dashboard
44
      error_message = "You do not have access to this page."
62✔
45
      flash[:notice] = error_message
62✔
46
      redirect_to dashboard_path
62✔
47
    end
48

49
    def exit_without_saving
5✔
50
      if params[:commit] == "Exit without Saving"
115✔
51
        if @request_model.nil?
1✔
52
          redirect_to dashboard_path
1✔
53
        else
54
          redirect_to request_path(@request_model)
×
55
        end
56
      end
57
    end
58

59
    def render_current
5✔
60
      raise "Must be implemented"
×
61
    end
62

63
    def render_next
5✔
64
      raise "Must be implemented"
×
65
    end
66

67
    def render_back
5✔
68
      raise "Must be implemented"
×
69
    end
70

71
    # Use callbacks to share common setup or constraints between actions.
72
    def set_request_model
5✔
73
      # do nothing if we are bailing out without creating a request2
74
      return if params[:request_id] == "0" && params[:commit] == "Exit without Saving"
115✔
75

76
      @request_model = if params[:request_id] == "0"
114✔
77
                         # on the first page with a brand new request that has not been created
78
                         req = Request.create(requested_by: current_user.uid)
8✔
79
                         update_sidebar_url(req)
8✔
80
                         req
8✔
81
                       else
82
                         # on a page when the request has already been created
83
                         Request.find(params[:request_id])
106✔
84
                       end
85
    end
86

87
    def update_sidebar_url(request_model)
5✔
88
      return unless params[:commit].start_with?("http")
8✔
89

90
      # take of the zero in the url and replace it with the real request id
91
      params[:commit] = "#{params[:commit][0..-2]}#{request_model.id}"
3✔
92
    end
93

94
    # set if id is present or initialize a blank request if not
95
    def set_or_init_request_model
5✔
96
      @princeton_departments = Affiliation.all
119✔
97
      @project_purposes = [["Research", "research"], ["Administrative", "administrative"], ["Teaching", "teaching"]]
119✔
98
      @request_model = if params[:request_id].blank?
119✔
99
                         Request.new(id: 0, requested_by: current_user.uid)
14✔
100
                       else
101
                         Request.find(params[:request_id])
105✔
102
                       end
103
    end
104

105
    def save_request
5✔
106
      request_model.update(request_params)
91✔
107
    end
108

109
    # Only allow a list of trusted parameters through.
110
    def request_params
5✔
111
      request_params = params.fetch(:request, {}).permit(:request_title, :project_title, :state, :data_sponsor, :data_manager,
91✔
112
                                        :project_purpose, :description, :parent_folder, :project_folder, :project_id, :quota,
113
                                        :requested_by, :storage_size, :storage_unit, :number_of_files, :hpc, :smb, :globus, user_roles: [], departments: [])
114

115
      if request_params[:departments].present?
91✔
116
        request_params[:departments] = request_params[:departments].compact_blank.map { |dep_str| JSON.parse(dep_str) }
39✔
117
      end
118
      if request_params[:user_roles].present?
91✔
119
        request_params[:user_roles] = request_params[:user_roles].compact_blank.map do |role_str|
16✔
120
          json = JSON.parse(role_str)
4✔
121
          json["read_only"] = params[:request]["read_only_#{json['uid']}"] == "true"
4✔
122
          json
4✔
123
        end
124
      end
125
      request_params
91✔
126
    end
127

128
    def set_breadcrumbs
5✔
129
      add_breadcrumb("Dashboard", dashboard_path)
234✔
130
    end
131

132
    def user_eligible_to_modify_request?
5✔
133
      # elevated privs for the current user
134
      if current_user.sysadmin || (current_user.developer && !Rails.env.production?)
233✔
135
        true
132✔
136
      # allow access for regular users
137
      elsif Flipflop.allow_all_users_wizard_access?
101✔
138
        # current user is the requestor
139
        if (@request_model.requested_by == current_user.uid) && !@request_model.submitted?
56✔
140
          true
39✔
141
        # a brand new request
142
        elsif params[:request_id].blank?
17✔
143
          true
×
144
        # no access for any other reason
145
        else
146
          false
17✔
147
        end
148
      # no access for regular users
149
      else
150
        false
45✔
151
      end
152
    end
153
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