Minerva $skinOptions array is a part of SkinMinerva class. The problem is that SkinOptions are used in many places (main menu/page actions menu building, hooks, MinervaTemplate) and is going to be used in many more places (User menu, overflow menu). This is a crucial part of MinervaNeue system and it should be extracted to a separate service and properly hardened.
Acceptance criteria:
- SkinOptions are available as service. SkinMinerva has to know nothing about SkinOptions implementation
- PHPUnit code coverage has to be >95%
- SkinOptions constants do not have OPTION_ or OPTIONS_ prefix.
- allow only known options to be set
- getting an unknown option should result in an exception
Developer notes
During code review of rSMIN258e635ae510: Extract SkinOptions to separate class we noticed many places where code can be improved a bit. That's why we added couple more AC (like "allow only known options" to be set, or "getting an unknown option should result in an exception"). The requested improvements are so small they do not require a new task, we should re-use this task and improve/harden the SkinOptions clas.