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

curationexperts / laevigata / 8087b51d-407b-477d-8eec-438dc461fd38

02 Jul 2025 04:57AM UTC coverage: 97.424%. Remained the same
8087b51d-407b-477d-8eec-438dc461fd38

push

circleci

mark-dce
Speed up AttachFilesToWorkJob test

**ISSUE**
The test was creating a new ETD and file, and then running the
job for each example, and then only reading the results. I.E. we
were running expensive setup multiple times with no variation and
only reading (not modifying or acting on) the output.

**RESOLUTION**
Doing the setup and running the job only once reduces the test
time by over 30% (avg 27.9s down to avg 9.8s).

2837 of 2912 relevant lines covered (97.42%)

51.04 hits per line

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

97.37
/app/controllers/in_progress_etds_controller.rb
1
class InProgressEtdsController < ApplicationController
3✔
2
  def new
3✔
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
3✔
18
    if current_user.nil?
13✔
19
      redirect_to new_user_session_path
2✔
20
    else
21
      @in_progress_etd = InProgressEtd.find(params[:id])
11✔
22
      authorize! :update, @in_progress_etd
10✔
23
      @in_progress_etd.refresh_from_etd!
8✔
24
      @data = @in_progress_etd.data
8✔
25
    end
26
  rescue ActiveRecord::RecordNotFound
27
    redirect_to root_url
1✔
28
  end
29

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

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

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

49
    redirect_to root_url
1✔
50
  end
51

52
  private
3✔
53

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

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

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

68
      # Add the new data to the existing persisted data
69
      @in_progress_etd.add_data(new_data)
9✔
70
    end
71
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