Test all the things!
There are currently no pipelines.
To run a merge request pipeline, the jobs in the CI/CD configuration file must be configured to run in merge request pipelines and you must have sufficient permissions in the source project.
This merge request improves the code coverage of the project's unit tests.
I broke up this rather large set of changes into separate commits. See the individual commit messages for details.
In 1477621c, I introduced a lesser-known feature of PHP called a trait. It allows one to "inject" common methods into any class without requiring inheritance.
To run a merge request pipeline, the jobs in the CI/CD configuration file must be configured to run in merge request pipelines and you must have sufficient permissions in the source project.