diff --git a/app/app/controllers/webhooks/pinwheel/events_controller.rb b/app/app/controllers/webhooks/pinwheel/events_controller.rb index 0d10efd07..67f711fa3 100644 --- a/app/app/controllers/webhooks/pinwheel/events_controller.rb +++ b/app/app/controllers/webhooks/pinwheel/events_controller.rb @@ -22,7 +22,7 @@ def create pinwheel_account = PinwheelAccount.find_by_pinwheel_account_id(params["payload"]["account_id"]) pinwheel_account.update!(PinwheelAccount::EVENTS_MAP[params["event"]] => Time.now) if pinwheel_account.present? - if params.dig("payload", "outcome") == "error" + if params.dig("payload", "outcome") == "error" || params.dig("payload", "outcome") == "pending" pinwheel_account.update!(PinwheelAccount::EVENTS_ERRORS_MAP[params["event"]] => Time.now) if pinwheel_account.present? end diff --git a/app/spec/controllers/webhooks/pinwheel/events_controller_spec.rb b/app/spec/controllers/webhooks/pinwheel/events_controller_spec.rb index 1ef0e9455..a49bb725a 100644 --- a/app/spec/controllers/webhooks/pinwheel/events_controller_spec.rb +++ b/app/spec/controllers/webhooks/pinwheel/events_controller_spec.rb @@ -122,5 +122,24 @@ post :create, params: valid_params end end + + context "for an 'pending' event outcome" do + let(:event_name) { "paystubs.fully_synced" } + let(:payload) do + { + "account_id" => account_id, + "end_user_id" => cbv_flow.pinwheel_end_user_id, + "outcome" => "pending" + } + end + let(:pinwheel_account) { PinwheelAccount.create!(cbv_flow: cbv_flow, supported_jobs: supported_jobs, pinwheel_account_id: account_id) } + + it "updates the PinwheelAccount object with an error state" do + expect { post :create, params: valid_params } + .to change { pinwheel_account.reload.paystubs_errored_at } + .from(nil) + .to(within(1.second).of(Time.now)) + end + end end end