예제 #1
0
 def test_validate_fail_base_field_error_params(self):
     field = SimpleArrayField(forms.CharField(max_length=2))
     with self.assertRaises(exceptions.ValidationError) as cm:
         field.clean('abc,c,defg')
     errors = cm.exception.error_list
     self.assertEqual(len(errors), 2)
     first_error = errors[0]
     self.assertEqual(
         first_error.message,
         'Item 1 in the array did not validate: Ensure this value has at most 2 characters (it has 3).'
     )
     self.assertEqual(first_error.code, 'item_invalid')
     self.assertEqual(first_error.params, {'nth': 1, 'value': 'abc', 'limit_value': 2, 'show_value': 3})
     second_error = errors[1]
     self.assertEqual(
         second_error.message,
         'Item 3 in the array did not validate: Ensure this value has at most 2 characters (it has 4).'
     )
     self.assertEqual(second_error.code, 'item_invalid')
     self.assertEqual(second_error.params, {'nth': 3, 'value': 'defg', 'limit_value': 2, 'show_value': 4})
예제 #2
0
 def test_has_changed_empty(self):
     field = SimpleArrayField(forms.CharField())
     self.assertIs(field.has_changed(None, None), False)
     self.assertIs(field.has_changed(None, ''), False)
     self.assertIs(field.has_changed(None, []), False)
     self.assertIs(field.has_changed([], None), False)
     self.assertIs(field.has_changed([], ''), False)
예제 #3
0
 def test_has_changed(self):
     field = SimpleArrayField(forms.IntegerField())
     self.assertIs(field.has_changed([1, 2], [1, 2]), False)
     self.assertIs(field.has_changed([1, 2], '1,2'), False)
     self.assertIs(field.has_changed([1, 2], '1,2,3'), True)
     self.assertIs(field.has_changed([1, 2], 'a,b'), True)
예제 #4
0
 def test_already_converted_value(self):
     field = SimpleArrayField(forms.CharField())
     vals = ['a', 'b', 'c']
     self.assertEqual(field.clean(vals), vals)
예제 #5
0
 def test_required(self):
     field = SimpleArrayField(forms.CharField(), required=True)
     with self.assertRaises(exceptions.ValidationError) as cm:
         field.clean('')
     self.assertEqual(cm.exception.messages[0], 'This field is required.')
예제 #6
0
 def test_min_length(self):
     field = SimpleArrayField(forms.CharField(), min_length=4)
     with self.assertRaises(exceptions.ValidationError) as cm:
         field.clean('a,b,c')
     self.assertEqual(cm.exception.messages[0], 'List contains 3 items, it should contain no fewer than 4.')
예제 #7
0
 def test_prepare_value(self):
     field = SimpleArrayField(forms.CharField())
     value = field.prepare_value(['a', 'b', 'c'])
     self.assertEqual(value, 'a,b,c')
예제 #8
0
 def test_delimiter_with_nesting(self):
     field = SimpleArrayField(SimpleArrayField(forms.CharField()), delimiter='|')
     value = field.clean('a,b|c,d')
     self.assertEqual(value, [['a', 'b'], ['c', 'd']])
예제 #9
0
 def test_delimiter(self):
     field = SimpleArrayField(forms.CharField(), delimiter='|')
     value = field.clean('a|b|c')
     self.assertEqual(value, ['a', 'b', 'c'])
예제 #10
0
 def test_validators_fail(self):
     field = SimpleArrayField(forms.RegexField('[a-e]{2}'))
     with self.assertRaises(exceptions.ValidationError) as cm:
         field.clean('a,bc,de')
     self.assertEqual(cm.exception.messages[0], 'Item 1 in the array did not validate: Enter a valid value.')
예제 #11
0
 def test_validate_fail(self):
     field = SimpleArrayField(forms.CharField(required=True))
     with self.assertRaises(exceptions.ValidationError) as cm:
         field.clean('a,b,')
     self.assertEqual(cm.exception.messages[0], 'Item 3 in the array did not validate: This field is required.')
예제 #12
0
 def test_to_python_fail(self):
     field = SimpleArrayField(forms.IntegerField())
     with self.assertRaises(exceptions.ValidationError) as cm:
         field.clean('a,b,9')
     self.assertEqual(cm.exception.messages[0], 'Item 1 in the array did not validate: Enter a whole number.')
예제 #13
0
 def test_valid(self):
     field = SimpleArrayField(forms.CharField())
     value = field.clean('a,b,c')
     self.assertEqual(value, ['a', 'b', 'c'])