Separating User intent and Business Logic is great, indeed!
However there is something beyond that to help you with testing your global scale app. ☝️🤓
Protocols provide a contract that both your actual ViewModels and your VM Mocks can conform to.
This way you can have a separate and controlled unit testing evironment that doesn't need to depend on network calls to reproduce test scenarios at all.
ViewModels and Providers deserve each their own protocol and mocks!