Run a job on target branch only after MR is finished

We are managing our terraform infrastructure in several GitLab repos.
We want to implement a better workflow that will look like this:

When we push a commit (“push and merge” without a MR) it should run the “test” job (which runs terraform plan command).
IFF we open a MR, after everything is finished (so after approving, and after the source branch got merged and deleted), run the “apply” job.

I’ve tried to configure this in several ways, but it seems that
rules:
- if: ($CI_MERGE_REQUEST_APPROVED == “true” && $CI_PIPELINE_SOURCE == “merge_request_event”)

triggers the job even when I force push without a MR.

Any suggestions would be welcomed, thank you

Checkout a similar discussion here: Why won't this job wait?