def test_get_value_returns_empty_value(self): child_instance = RelatedField(read_only=True) instance = ManyRelatedField(child_relation=child_instance) instance.bind('pk_list', None) self.assertEqual( instance.get_value({'pks': [1, 2, 3]}), empty )
def test_to_internal_value_raises_error_for_empty_value(self): child_instance = RelatedField(read_only=True) instance = ManyRelatedField( child_relation=child_instance, allow_empty=False ) with self.assertRaises(ValidationError): instance.to_internal_value([])
def test_to_representation(self): class FakeRelatedField(RelatedField): def to_representation(self, value): return value child_instance = FakeRelatedField(read_only=True) instance = ManyRelatedField(child_relation=child_instance) data = [{'pk': 1}, {'pk': 2}, {'pk': 3}] self.assertEqual(instance.to_representation(data), data)
def test_to_internal_value(self): class FakeRelatedField(RelatedField): def to_internal_value(self, data): return data child_instance = FakeRelatedField(read_only=True) instance = ManyRelatedField(child_relation=child_instance) data = [{'pk': 1}, {'pk': 2}, {'pk': 3}] self.assertEqual(instance.to_internal_value(data), data)
def test_get_attribute_raises_not_implemented_error(self): class FakeObject(object): def __init__(self, pk): self.pk = pk def __str__(self): return str(self.pk) child_instance = RelatedField(read_only=True) instance = ManyRelatedField(child_relation=child_instance) with self.assertRaises(NotImplementedError): instance.get_attribute(FakeObject(10))
def test_grouped_choices(self): class FakeObject(object): def __init__(self, pk): self.pk = pk def __str__(self): return str(self.pk) class FakeRelatedField(RelatedField): def get_queryset(self): return [FakeObject(1), FakeObject(2), FakeObject(3)] def to_representation(self, value): return value child_instance = FakeRelatedField(read_only=True) instance = ManyRelatedField(child_relation=child_instance) self.assertEqual( instance.grouped_choices, collections.OrderedDict([('1', '1'), ('2', '2'), ('3', '3')]) )
def test_to_internal_value_raises_error_for_not_a_list_argument(self): child_instance = RelatedField(read_only=True) instance = ManyRelatedField(child_relation=child_instance) with self.assertRaises(ValidationError): instance.to_internal_value(object())
def test_init_raises_assertion_error_for_missed_child_argument(self): with self.assertRaises(AssertionError): ManyRelatedField()