Validation of repository_storages_weighted is spread across the class and concern, difficult to test
The following discussion from !170457 should be addressed:
- [ ] @drew started a [discussion](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170457#note_2189419466):
> So the undercoverage on 705 seems to be legitimately never run, but it seems legitimately unreachable because of the `coerce_repository_storages_weighted` implementation:
>
> ```ruby
> def coerce_repository_storages_weighted
> repository_storages_weighted.transform_values!(&:to_i)
> end
> ```
>
> which is [run _before_ validation by ApplicationSetting](https://gitlab.com/gitlab-org/gitlab/-/blob/a486d8ffab552c8fc2aa29c31884ffbef97cd657/app/models/application_setting.rb#L840).
>
> This validation that lives in `ApplicationSettingImplementation` is like a... backup validation? That would run if `ApplicationSetting` wasn't written the way it was? But `ApplicationSettingImplementation` doesn't seem to have it's own spec.
>
> This is a kind of messy blend of responsibility shared between the model and the concern, and we should probably sort it out to make it easier to understand which code is responsible for what. I'm going to make a follow-up about this and apply ~"pipeline:skip-undercoverage" to let this refactor pass :eyes:
issue