def test_required(self): f = ArrayField(required=False) self.assertEqual(None, f.clean(None)) f = ArrayField() self.assertEqual([], f.clean([])) with self.assertRaises(ValidationError): f.clean(None)
def test_empty_value_validators(self): # By default django skips run_validators methods, if value is in empty_values # It's not correct for REST, as empty value is not equal to None value now f = ArrayField(validators=[TestErrorValidator(0)]) with self.assertRaises(ValidationError): f.clean([])
def test_initial(self): test_data = [1, 2, 3] f = ArrayField(required=False, initial=test_data) self.assertEqual(test_data, f.clean(None))
def test_max_items_valid(self): test_data = [{'test': 1}, {'test': 1}] f = ArrayField(max_items=2) self.assertListEqual(test_data, f.clean(json.dumps(test_data)))
def test_max_items_invalid(self): test_data = [{'test': 1}, {'test': 1}, {'test': 1}] f = ArrayField(max_items=2) with self.assertRaises(ValidationError): f.clean(json.dumps(test_data))
def test_items_invalid(self): test_data = [{'test': 1}, {'test': 0}] f = ArrayField(item_schema=JsonFieldTest.TEST_SCHEMA) with self.assertRaises(ValidationError): f.clean(json.dumps(test_data))
def test_min_items_invalid(self): test_data = [] f = ArrayField(min_items=1) with self.assertRaises(ValidationError): f.clean(json.dumps(test_data))
def test_items_valid(self): test_data = [{'test': 1}, {'test': 2}] f = ArrayField(item_schema=JsonFieldTest.TEST_SCHEMA) self.assertListEqual(test_data, f.clean(json.dumps(test_data)))
def test_comma_separated(self): f = ArrayField() self.assertListEqual(['1', '2', '3'], f.clean('1,2,3'))
def test_json_invalid(self): f = ArrayField() with self.assertRaises(ValidationError): f.clean('[1,2,3')
def test_json_object(self): f = ArrayField() with self.assertRaises(ValidationError): f.clean('{}')
def test_json_valid(self): f = ArrayField() self.assertListEqual([1, 2, 3], f.clean('[1, 2, 3]'))