Pregunta de entrevista de Revolut

Code challenge regarding TDD, SOLID, Design Patterns and best OOP practices