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

curationexperts / laevigata / 31605421-afb8-4109-8782-97bc3f3642e5

17 Apr 2026 12:02AM UTC coverage: 97.448% (+0.006%) from 97.442%
31605421-afb8-4109-8782-97bc3f3642e5

push

circleci

web-flow
Merge pull request #2495 from curationexperts/deactivate_depts

Refactor approver checks to make them easier to stub in tests

14 of 15 new or added lines in 2 files covered. (93.33%)

100 existing lines in 25 files now uncovered.

2864 of 2939 relevant lines covered (97.45%)

51.12 hits per line

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

97.62
/app/controllers/in_progress_etds_controller.rb
1
class InProgressEtdsController < ApplicationController
2✔
2
  def new
2✔
3
    authorize! :create, InProgressEtd
10✔
4

5
    @in_progress_etd = if params[:etd_id]
9✔
6
                         InProgressEtd.find_or_create_by(etd_id: params[:etd_id])
5✔
7
                       else
8
                         InProgressEtd.find_or_create_by(user_ppid: current_user.ppid)
4✔
9
                       end
10

11
    # Now that the record has been created, render the form so student can edit it:
12
    redirect_to action: :edit, id: @in_progress_etd.id
9✔
13
  end
14

15
  # Note: There is no 'create' action because the 'new' action does 'find or create'.
16

17
  def edit
2✔
18
    if current_user.nil?
14✔
UNCOV
19
      redirect_to new_user_session_path
2✔
20
    else
21
      @in_progress_etd = InProgressEtd.find(params[:id])
12✔
22
      authorize! :update, @in_progress_etd
11✔
23
      @in_progress_etd.refresh_from_etd!
9✔
24
      @data = @in_progress_etd.data
9✔
25
      @form_level = form_level
9✔
26
    end
27
  rescue ActiveRecord::RecordNotFound
28
    redirect_to root_url
1✔
29
  end
30

31
  # The Vue.js form uses this action to update the record.
32
  def update
2✔
33
    @in_progress_etd = InProgressEtd.find(params[:id])
11✔
34
    authorize! :update, @in_progress_etd
11✔
35
    @in_progress_etd.data = prepare_etd_data.to_json
9✔
36

37
    if @in_progress_etd.save
9✔
38
      @data = @in_progress_etd.data
9✔
39
      render json: { in_progress_etd: @data, lastCompletedStep: current_step(@data), tab_name: tab_name }, status: 200
9✔
40
    else
41
      render json: { errors: @in_progress_etd.errors.messages }, status: 422
×
42
    end
43
  end
44

45
  def destroy
2✔
UNCOV
46
    @in_progress_etd = InProgressEtd.find(params[:id])
2✔
UNCOV
47
    authorize! :update, @in_progress_etd
2✔
UNCOV
48
    @in_progress_etd.destroy
1✔
49

UNCOV
50
    redirect_to root_url
1✔
51
  end
52

53
  private
2✔
54

55
    def current_step(data)
2✔
56
      saved_data = JSON.parse(data)
9✔
57
      saved_data['currentStep']
9✔
58
    end
59

60
    def tab_name
2✔
61
      etd = request.parameters.fetch(:etd)
9✔
62
      etd.fetch(:currentTab, "About Me")
9✔
63
    end
64

65
    def prepare_etd_data
2✔
66
      # TODO: strong params
67
      new_data = request.parameters.fetch(:etd, {})
9✔
68

69
      # Add the new data to the existing persisted data
70
      @in_progress_etd.add_data(new_data)
9✔
71
    end
72

73
    # Show :basic form for regular users - e.g. active field values only
74
    # Or :advanced form for super_admins - e.g. also show inactive fields values
75
    def form_level
2✔
76
      return :advanced if current_user.admin?
9✔
77
      :basic
3✔
78
    end
79
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

© 2026 Coveralls, Inc