Here are some additional comments about my solution:
- I think the code for selecting an article from a suppliers is not correct (according to description in a readme.txt) but I kept the functionality of it as it was, as I understood that the goal was not to alter functionality.
- Proper solution might be to make dedicated factory class instead of static create method for ShopService. I didn't implemet it in order to keep client facing changes as minimal as possible.