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

pulibrary / tigerdata-app / 8d70f2ab-acc5-4aab-b64b-743d66ddd2eb

29 Aug 2025 06:22PM UTC coverage: 87.983% (-0.1%) from 88.118%
8d70f2ab-acc5-4aab-b64b-743d66ddd2eb

Pull #1801

circleci

JaymeeH
Merge branch '1586-request-mailer' of https://github.com/pulibrary/tiger-data-app into 1586-request-mailer
Pull Request #1801: 1586 request mailer

10 of 10 new or added lines in 2 files covered. (100.0%)

1173 existing lines in 56 files now uncovered.

2482 of 2821 relevant lines covered (87.98%)

317.98 hits per line

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

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

6
  before_action :set_request_model, only: %i[save]
2✔
7
  before_action :set_or_create_request_model, only: %i[show]
2✔
8

9
  before_action :check_flipper
2✔
10

11
  attr_reader :request_model
2✔
12

13
  # GET /request_wizards/1
14
  def show
2✔
15
    if current_user.superuser || current_user.sysadmin || current_user.trainer
39✔
16
      # create a request in the first step
17
      render_current
39✔
18
    else
19
      error_message = "You do not have access to this page."
×
20
      flash[:notice] = error_message
×
21
      redirect_to dashboard_path
×
22
    end
23
  end
24

25
  # PUT /request_wizards/1/save
26
  def save
2✔
27
    # save and render dashboard
28
    save_request
61✔
29
    case params[:commit]
61✔
30
    when "Back"
31
      render_back
16✔
32
    when "Next"
33
      render_next
25✔
34
    else
35
      if params[:commit].start_with?("http")
20✔
36
        # Go directly to the step the user clicked on
UNCOV
37
        redirect_to params[:commit]
5✔
38
      else
39
        TigerdataMailer.with(request_id: @request_model.id).request_creation.deliver_now
15✔
40
        redirect_to "#{requests_path}/#{@request_model.id}"
15✔
41
      end
42
    end
43
  end
44

45
  private
2✔
46

47
    def render_current
2✔
48
      raise "Must be implemented"
×
49
    end
50

51
    def render_next
2✔
52
      raise "Must be implemented"
×
53
    end
54

55
    def render_back
2✔
56
      raise "Must be implemented"
×
57
    end
58

59
    # Use callbacks to share common setup or constraints between actions.
60
    def set_request_model
2✔
61
      @request_model = Request.find(params[:request_id])
102✔
62
    end
63

64
    # set if id is present or create request if not
65
    def set_or_create_request_model
2✔
66
      @princeton_departments = Affiliation.all
49✔
67
      @princeton_users = PrincetonUsers.user_list
49✔
68
      if params[:request_id].blank?
49✔
69
        @request_model = Request.create
8✔
70
      else
71
        set_request_model
41✔
72
      end
73
    end
74

75
    def save_request
2✔
76
      request_model.update(request_params)
61✔
77
    end
78

79
    # Only allow a list of trusted parameters through.
80
    def request_params
2✔
81
      request_params = params.fetch(:request, {}).permit(:request_title, :project_title, :state, :data_sponsor, :data_manager,
61✔
82
                                        :description, :parent_folder, :project_folder, :project_id, :quota, :requested_by,
83
                                        :storage_size, :storage_unit, user_roles: [], departments: [])
84
      if request_params[:departments].present?
61✔
UNCOV
85
        request_params[:departments] = request_params[:departments].compact_blank.map { |dep_str| JSON.parse(dep_str) }
32✔
86
      end
87
      if request_params[:user_roles].present?
61✔
UNCOV
88
        request_params[:user_roles] = request_params[:user_roles].compact_blank.map { |role_str| JSON.parse(role_str) }
12✔
89
      end
90
      request_params[:requested_by] ||= current_user.uid
61✔
91
      request_params
61✔
92
    end
93

94
    def check_flipper
2✔
95
      return head :forbidden unless Flipflop.new_project_request_wizard?
110✔
96
    end
97

98
    def set_breadcrumbs
2✔
99
      add_breadcrumb("Dashboard", dashboard_path)
110✔
100
    end
101
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