Permalink
Browse files

MINOR Removed overzealous value validation in ListboxField, should si…

…lently ignore unknown values (lacking better referential integrity measures in the underlying model layer)
  • Loading branch information...
1 parent 82ef236 commit cb74dbccfcb372497851fb2d7badbc8d5cb91a48 @chillu chillu committed Jan 19, 2012
Showing with 3 additions and 19 deletions.
  1. +3 −7 forms/ListboxField.php
  2. +0 −12 tests/forms/ListboxFieldTest.php
View
@@ -162,18 +162,14 @@ function setValue($val) {
throw new InvalidArgumentException('No associative arrays allowed multiple=true');
}
- if($diff = array_diff($parts, array_keys($this->source))) {
- throw new InvalidArgumentException(sprintf(
- 'Invalid keys "%s" in value array for multiple=true',
- Convert::raw2xml(implode(',', $diff))
- ));
- }
+ // Doesn't check against unknown values in order to allow for less rigid data handling.
+ // They're silently ignored and overwritten the next time the field is saved.
parent::setValue($parts);
} else {
if(!in_array($val, array_keys($this->source))) {
throw new InvalidArgumentException(sprintf(
- 'Invalid value "%s" for multiple=true',
+ 'Invalid value "%s" for multiple=false',
Convert::raw2xml($val)
));
}
@@ -90,18 +90,6 @@ function testSetValueFailsOnStringIfChoiceInvalidAndMultipleIsOff() {
$field->setValue('invalid');
}
- /**
- * @expectedException InvalidArgumentException
- */
- function testSetValueFailsOnInvalidArrayKeyIfChoiceInvalidAndMultipleIsOn() {
- $choices = array('a' => 'a value', 'b' => 'b value','c' => 'c value');
- $field = new ListboxField('Choices', 'Choices', $choices);
- $field->multiple = true;
-
- $obj = new ListboxFieldTest_DataObject();
- $field->setValue(array('a', 'invalid'));
- }
-
function testFieldRenderingMultipleOff() {
$choices = array('a' => 'a value', 'b' => 'b value','c' => 'c value');
$field = new ListboxField('Choices', 'Choices', $choices);

0 comments on commit cb74dbc

Please sign in to comment.