filterSaver(CompanySettings::defaults()); $this->assertTrue(property_exists($filtered, 'timezone_id')); $this->assertTrue(property_exists(CompanySettings::defaults(), 'timezone_id')); $this->assertTrue(property_exists(CompanySettings::defaults(), 'auto_archive_invoice')); $this->assertFalse(property_exists($filtered, 'auto_archive_invoice')); } private function filterSaver($settings) { $saveable_cast = CompanySettings::$free_plan_casts; foreach($settings as $key => $value){ if(!array_key_exists($key, $saveable_cast)) unset($settings->{$key}); } return $settings; } }