Example #1
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 0 in the array did not validate: Enter a whole number.')
Example #2
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 2 in the array did not validate: This field is required.')
Example #3
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 0 in the array did not validate: Enter a valid value.')
Example #4
0
 def test_max_length(self):
     field = SimpleArrayField(forms.CharField(), max_length=2)
     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 more than 2.')
Example #5
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 0 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': 0,
         'value': 'abc',
         'limit_value': 2,
         'show_value': 3
     })
     second_error = errors[1]
     self.assertEqual(
         second_error.message,
         'Item 2 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': 2,
         'value': 'defg',
         'limit_value': 2,
         'show_value': 4
     })
Example #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.",
     )
Example #7
0
 def lead_export(self, request):
     leads = request.query_params.get('leads', [])
     fields = request.query_params.get('fields', [])
     leads_field = SimpleArrayField(IntegerField())
     leads = leads_field.clean(leads)
     fields = SimpleArrayField(CharField()).clean(fields)
     lead_objs = models.Lead.objects.filter(id__in=leads).annotate(
         full_name=Concat(F('first_name'), Value(" "), F('middle_name'),
                          Value(" "), F('last_name'))).order_by('id')
     file_name = get_file_name(file_type='lead_export')
     print(fields)
     with open(file_name, 'w', newline='') as csvfile:
         writer = csv.DictWriter(csvfile, fieldnames=fields)
         writer.writeheader()
         for l in lead_objs:
             row = {}
             for field in fields:
                 if field in ['latest_callback']:
                     row['latest_callback'] = getattr(
                         models.Callback.objects.filter(lead=l).last(),
                         'datetime', '')
                 else:
                     row[field] = getattr(l, field)
                     writer.writerow(row)
     return Response({'file': file_name})
Example #8
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 0 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": 0, "value": "abc", "limit_value": 2, "show_value": 3})
     second_error = errors[1]
     self.assertEqual(
         second_error.message,
         "Item 2 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": 2, "value": "defg", "limit_value": 2, "show_value": 4})
Example #9
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 0 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': 0, 'value': 'abc', 'limit_value': 2, 'show_value': 3})
     second_error = errors[1]
     self.assertEqual(
         second_error.message,
         'Item 2 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': 2, 'value': 'defg', 'limit_value': 2, 'show_value': 4})
Example #10
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 0 in the array did not validate: Enter a whole number.')
Example #11
0
 def test_valid(self):
     field = SimpleArrayField(forms.CharField())
     value = field.clean('a,b,c')
     self.assertEqual(value, ['a', 'b', 'c'])
Example #12
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.')
Example #13
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']])
Example #14
0
 def test_delimiter(self):
     field = SimpleArrayField(forms.CharField(), delimiter='|')
     value = field.clean('a|b|c')
     self.assertEqual(value, ['a', 'b', 'c'])
Example #15
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"]])
Example #16
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 0 in the array did not validate: Enter a valid value.')
Example #17
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.')
Example #18
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']])
Example #19
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"]])
Example #20
0
 def test_delimiter(self):
     field = SimpleArrayField(forms.CharField(), delimiter="|")
     value = field.clean("a|b|c")
     self.assertEqual(value, ["a", "b", "c"])
Example #21
0
 def test_delimiter(self):
     field = SimpleArrayField(forms.CharField(), delimiter="|")
     value = field.clean("a|b|c")
     self.assertEqual(value, ["a", "b", "c"])
Example #22
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 2 in the array did not validate: This field is required.')
Example #23
0
 def test_valid(self):
     field = SimpleArrayField(forms.CharField())
     value = field.clean("a,b,c")
     self.assertEqual(value, ["a", "b", "c"])
Example #24
0
 def test_valid(self):
     field = SimpleArrayField(forms.CharField())
     value = field.clean('a,b,c')
     self.assertEqual(value, ['a', 'b', 'c'])
Example #25
0
 def test_delimiter(self):
     field = SimpleArrayField(forms.CharField(), delimiter='|')
     value = field.clean('a|b|c')
     self.assertEqual(value, ['a', 'b', 'c'])
Example #26
0
 def test_max_length(self):
     field = SimpleArrayField(forms.CharField(), max_length=2)
     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 more than 2.")
Example #27
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.')
Example #28
0
 def test_valid(self):
     field = SimpleArrayField(forms.CharField())
     value = field.clean("a,b,c")
     self.assertEqual(value, ["a", "b", "c"])
Example #29
0
 def test_already_converted_value(self):
     field = SimpleArrayField(forms.CharField())
     vals = ['a', 'b', 'c']
     self.assertEqual(field.clean(vals), vals)
Example #30
0
 def test_already_converted_value(self):
     field = SimpleArrayField(forms.CharField())
     vals = ['a', 'b', 'c']
     self.assertEqual(field.clean(vals), vals)