Skip to content

Commit 9848993

Browse files
committed
more scoping to flow
1 parent 5b206a3 commit 9848993

8 files changed

Lines changed: 28 additions & 19 deletions

app/app/controllers/activities/activities_controller.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ def index
44
# on creation. If you exit out of an activity flow in the middle before you save from the
55
# Review page, we should delete all the records that were not completed. This results in no
66
# visible changes when the user returns to the Activity Hub.
7-
if session[:creating_activity]
7+
if session[:creating_activity] && session[:creating_activity]["activity_flow_id"] == @flow.id
88
activity_class = session[:creating_activity]["class_name"].safe_constantize
9-
activity_class&.find_by(id: session[:creating_activity]["id"], activity_flow_id: @flow.id)&.destroy
9+
activity_class&.find_by(id: session[:creating_activity]["id"])&.destroy
1010
session.delete(:creating_activity)
1111
end
1212

13-
if session[:creating_payroll_account]
14-
@flow.payroll_accounts.find_by(aggregator_account_id: session[:creating_payroll_account])&.destroy
13+
if session[:creating_payroll_account] && session[:creating_payroll_account]["flow_id"] == @flow.id
14+
@flow.payroll_accounts.find_by(aggregator_account_id: session[:creating_payroll_account]["aggregator_account_id"])&.destroy
1515
session.delete(:creating_payroll_account)
1616
end
1717

app/app/controllers/activities/base_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ def progress_calculator
4343
end
4444

4545
def track_creating_activity(activity)
46-
session[:creating_activity] = { "class_name" => activity.class.name, "id" => activity.id }
46+
session[:creating_activity] = { "class_name" => activity.class.name, "id" => activity.id, "activity_flow_id" => activity.activity_flow_id }
4747
end
4848

4949
def clear_creating_activity
5050
session.delete(:creating_activity)
5151
end
5252

5353
def track_creating_payroll_account(aggregator_account_id)
54-
session[:creating_payroll_account] = aggregator_account_id
54+
session[:creating_payroll_account] = { "aggregator_account_id" => aggregator_account_id, "flow_id" => @flow.id }
5555
end
5656

5757
def clear_creating_payroll_account

app/spec/controllers/activities/activities_controller_spec.rb

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757

5858
it "destroys the tracked incomplete activity on hub visit" do
5959
activity = create(:volunteering_activity, activity_flow: current_flow)
60-
session[:creating_activity] = { "class_name" => "VolunteeringActivity", "id" => activity.id }
60+
session[:creating_activity] = { "class_name" => "VolunteeringActivity", "id" => activity.id, "activity_flow_id" => current_flow.id }
6161

6262
expect { get :index }.to change(VolunteeringActivity, :count).by(-1)
6363
expect(session[:creating_activity]).to be_nil
@@ -69,32 +69,41 @@
6969
expect { get :index }.not_to change(VolunteeringActivity, :count)
7070
end
7171

72-
it "does not destroy an activity belonging to a different flow" do
72+
it "does not destroy an activity belonging to a different flow and preserves session" do
7373
other_flow = create(:activity_flow)
7474
activity = create(:volunteering_activity, activity_flow: other_flow)
75-
session[:creating_activity] = { "class_name" => "VolunteeringActivity", "id" => activity.id }
75+
session[:creating_activity] = { "class_name" => "VolunteeringActivity", "id" => activity.id, "activity_flow_id" => other_flow.id }
7676

7777
expect { get :index }.not_to change(VolunteeringActivity, :count)
78-
expect(session[:creating_activity]).to be_nil
78+
expect(session[:creating_activity]).to be_present
7979
end
8080

8181
it "handles an already-deleted activity gracefully" do
82-
session[:creating_activity] = { "class_name" => "VolunteeringActivity", "id" => -1 }
82+
session[:creating_activity] = { "class_name" => "VolunteeringActivity", "id" => -1, "activity_flow_id" => current_flow.id }
8383

8484
expect { get :index }.not_to raise_error
8585
expect(session[:creating_activity]).to be_nil
8686
end
8787

8888
it "destroys a tracked incomplete payroll account on hub visit" do
8989
payroll_account = create(:payroll_account, :pinwheel_fully_synced, flow: current_flow)
90-
session[:creating_payroll_account] = payroll_account.aggregator_account_id
90+
session[:creating_payroll_account] = { "aggregator_account_id" => payroll_account.aggregator_account_id, "flow_id" => current_flow.id }
9191

9292
expect { get :index }.to change(current_flow.payroll_accounts, :count).by(-1)
9393
expect(session[:creating_payroll_account]).to be_nil
9494
end
9595

96+
it "does not destroy a payroll account tracked for a different flow and preserves session" do
97+
other_flow = create(:activity_flow)
98+
payroll_account = create(:payroll_account, :pinwheel_fully_synced, flow: other_flow)
99+
session[:creating_payroll_account] = { "aggregator_account_id" => payroll_account.aggregator_account_id, "flow_id" => other_flow.id }
100+
101+
expect { get :index }.not_to change(PayrollAccount, :count)
102+
expect(session[:creating_payroll_account]).to be_present
103+
end
104+
96105
it "handles an already-deleted payroll account gracefully" do
97-
session[:creating_payroll_account] = "nonexistent-account-id"
106+
session[:creating_payroll_account] = { "aggregator_account_id" => "nonexistent-account-id", "flow_id" => current_flow.id }
98107

99108
expect { get :index }.not_to raise_error
100109
expect(session[:creating_payroll_account]).to be_nil

app/spec/controllers/activities/education_controller_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
post :create
4646

4747
activity = EducationActivity.last
48-
expect(session[:creating_activity]).to eq("class_name" => "EducationActivity", "id" => activity.id)
48+
expect(session[:creating_activity]).to eq("class_name" => "EducationActivity", "id" => activity.id, "activity_flow_id" => activity_flow.id)
4949
end
5050

5151
it "creates a self-attested EducationActivity and redirects to month 0" do
@@ -63,7 +63,7 @@
6363
post :create, params: { education_activity: { school_name: "Test University", city: "Springfield", state: "IL", zip_code: "62701", street_address: "123 Main St" } }
6464

6565
activity = EducationActivity.last
66-
expect(session[:creating_activity]).to eq("class_name" => "EducationActivity", "id" => activity.id)
66+
expect(session[:creating_activity]).to eq("class_name" => "EducationActivity", "id" => activity.id, "activity_flow_id" => activity_flow.id)
6767
end
6868

6969
it "re-renders the form when self-attested params are invalid" do

app/spec/controllers/activities/employment_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@
9494
post :create, params: employment_params
9595

9696
activity = activity_flow.employment_activities.last
97-
expect(session[:creating_activity]).to eq("class_name" => "EmploymentActivity", "id" => activity.id)
97+
expect(session[:creating_activity]).to eq("class_name" => "EmploymentActivity", "id" => activity.id, "activity_flow_id" => activity_flow.id)
9898
end
9999
end
100100

app/spec/controllers/activities/income/synchronizations_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
it "tracks the payroll account in the session" do
1818
get :show, params: { user: { account_id: payroll_account.aggregator_account_id } }
1919

20-
expect(session[:creating_payroll_account]).to eq(payroll_account.aggregator_account_id)
20+
expect(session[:creating_payroll_account]).to eq("aggregator_account_id" => payroll_account.aggregator_account_id, "flow_id" => flow.id)
2121
end
2222
end
2323

app/spec/controllers/activities/job_training_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
post :create, params: job_training_params
5656

5757
activity = activity_flow.job_training_activities.last
58-
expect(session[:creating_activity]).to eq("class_name" => "JobTrainingActivity", "id" => activity.id)
58+
expect(session[:creating_activity]).to eq("class_name" => "JobTrainingActivity", "id" => activity.id, "activity_flow_id" => activity_flow.id)
5959
end
6060

6161
it "redirects to month 0 when total hours are below the threshold" do

app/spec/controllers/activities/volunteering_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
post :create, params: volunteering_params
4949

5050
activity = activity_flow.volunteering_activities.last
51-
expect(session[:creating_activity]).to eq("class_name" => "VolunteeringActivity", "id" => activity.id)
51+
expect(session[:creating_activity]).to eq("class_name" => "VolunteeringActivity", "id" => activity.id, "activity_flow_id" => activity_flow.id)
5252
end
5353

5454
it "stores optional fields when provided" do

0 commit comments

Comments
 (0)