'key', 'value' => 'val' )); expect($setting->id() > 0)->true(); expect($setting->getErrors())->false(); } function testItHasToBeValid() { $invalid_setting = Setting::createOrUpdate(); $errors = $invalid_setting->getErrors(); expect($errors)->notEmpty(); expect($errors[0])->equals('Please specify a name.'); } function testItCanGetAllSettings() { Setting::createOrUpdate(['name' => 'key_1', 'value' => 'value_1']); Setting::createOrUpdate(['name' => 'key_2', 'value' => 'value_2']); Setting::createOrUpdate(['name' => 'key_3', 'value' => serialize([ 'subkey_1' => 'subvalue_1', 'subkey_2' => 'subvalue_2' ])]); $settings = Setting::getAll(); expect($settings['key_1'])->equals('value_1'); expect($settings['key_2'])->equals('value_2'); expect($settings['key_3'])->equals(array( 'subkey_1' => 'subvalue_1', 'subkey_2' => 'subvalue_2' )); } function testItCanCreateOrUpdate() { $data = array( 'name' => 'new', 'value' => 'data' ); $created_setting = Setting::createOrUpdate($data); expect($created_setting->id() > 0)->true(); expect($created_setting->getErrors())->false(); $setting = Setting::where('name', $data['name'])->findOne(); expect($setting->value)->equals($data['value']); $data['value'] = 'new data'; $updated_setting = Setting::createOrUpdate($data); expect($updated_setting->id() > 0)->true(); expect($updated_setting->getErrors())->false(); $setting = Setting::where('name', $data['name'])->findOne(); expect($setting->value)->equals('new data'); } function testSaveDefaultSenderIfNeededNotSaveEmptyValue() { $settings_controller = new SettingsController(); Setting::saveDefaultSenderIfNeeded('', null); expect($settings_controller->get('sender'))->null(); } function testSaveDefaultSenderIfNeededDoesntOverride() { $settings_controller = new SettingsController(); $settings_controller->set('sender', array('name' => 'sender1', 'address' => 'sender1address')); Setting::saveDefaultSenderIfNeeded('sender2address', 'sender1'); $settings = $settings_controller->get('sender'); expect($settings['name'])->equals('sender1'); expect($settings['address'])->equals('sender1address'); } function testSaveDefaultSenderIfNeeded() { $settings_controller = new SettingsController(); Setting::saveDefaultSenderIfNeeded('senderAddress', 'sender'); $settings = $settings_controller->get('sender'); expect($settings['name'])->equals('sender'); expect($settings['address'])->equals('senderAddress'); } function _after() { Setting::deleteMany(); } }