assert template should raise ArgumentError for unsupported layout types

fixes that  `assert_template(layout: 1)` will not fail (false positive), also tried to refactor `assert_template` by splitting up in smaller chunks covered in private methods. Stopped at :partial since it not seemed to be covered by tests.