public function testItCanBeCreatedFromSetting()
 {
     $exception = UnknownSettingException::fromSetting('unknown', ['setting_a', 'setting_b']);
     assertSame('Setting "unknown" is unknown; valid settings are ["setting_a", "setting_b"].', $exception->getMessage());
 }
 /**
  * @param string $name
  * @param mixed  $value
  *
  * @throws UnknownSettingException
  * @throws InvalidArgumentException
  *
  * @return $this
  */
 public function withSetting($name, $value)
 {
     Assertion::string($name);
     Assertion::scalar($value);
     if (!array_key_exists($name, $this->settings)) {
         throw UnknownSettingException::fromSetting($name, array_keys($this->settings));
     }
     $this->settings[$name] = $value;
     return $this;
 }