Ejemplo n.º 1
0
    def test_choices(self):

        field = fields.ModelChoiceField(Owner, db)

        self.assertListEqual(list(field.choices), [("", field.empty_label)] +
                             [(owner.id, str(owner)) for owner in Owner.query])

        field = fields.ModelChoiceField(Owner, db, required=True, initial=1)
        self.assertListEqual(list(field.choices),
                             [(owner.id, str(owner)) for owner in Owner.query])
Ejemplo n.º 2
0
    def test_validate(self):
        field = fields.ModelChoiceField(Owner, db, required=True)

        self.assertIsNone(field.validate(1))

        with self.assertRaises(ValidationError):
            field.validate(None)
Ejemplo n.º 3
0
    def test_apply_limit(self):

        field = fields.ModelChoiceField(Owner,
                                        db,
                                        limit_choices_to=[Owner.id == 1])
        fields.apply_limit_choices_to_form_field(field)
        self.assertEqual(field.queryset.count(), 1)
Ejemplo n.º 4
0
    def test_label_from_instance(self):
        owner = Owner.objects.first()

        field = fields.ModelChoiceField(Owner, db)

        self.assertEqual(field.label_from_instance(Owner.query.get(owner.id)),
                         repr(owner))
Ejemplo n.º 5
0
 def test_apply_limit(self):
     db.add_all([
         Owner(first_name="one"),
         Owner(first_name="one_more"),
         Owner(first_name="two")
     ])
     field = sorceryfields.ModelChoiceField(
         Owner, db, limit_choices_to=[Owner.first_name.startswith("one")])
     forms.apply_limit_choices_to_form_field(field)
     self.assertEqual(field.queryset.count(), 2)
Ejemplo n.º 6
0
    def test_apply_limit_callable(self):
        def limit_choices_to():
            return [Owner.first_name == "first_name 1"]

        field = fields.ModelChoiceField(Owner,
                                        db,
                                        required=True,
                                        limit_choices_to=limit_choices_to)
        apply_limit_choices_to_form_field(field)
        self.assertEqual(field.queryset.count(), 1)
Ejemplo n.º 7
0
    def test_get_object_composite_pk(self):
        instance = CompositePkModel(id=1, pk=2)
        db.add(instance)
        db.flush()

        field = fields.ModelChoiceField(CompositePkModel, db)
        pks = field.prepare_value(instance)

        obj = field.get_object(json.dumps(pks))
        self.assertIsNotNone(obj)
        self.assertIs(obj, instance)
Ejemplo n.º 8
0
    def test_get_object(self):

        owner = Owner.objects.first()

        field = fields.ModelChoiceField(Owner, db)

        self.assertIsNone(field.get_object(None))

        owner = field.get_object(owner.id)
        self.assertIsNotNone(owner)
        self.assertIsInstance(owner, Owner)

        with self.assertRaises(ValidationError) as ctx:
            field.get_object(0)

        self.assertEqual(
            ctx.exception.args,
            ("Select a valid choice. That choice is not one of the available choices.",
             "invalid_choice", None),
        )
Ejemplo n.º 9
0
 def test_prepare_value(self):
     field = fields.ModelChoiceField(CompositePkModel, db)
     pks = field.prepare_value(CompositePkModel(id=1, pk="a"))
     self.assertDictEqual(pks, {"id": 1, "pk": "a"})
Ejemplo n.º 10
0
    def test_prepare_instance_value(self):
        field = fields.ModelChoiceField(Owner, db)
        owner = Owner.objects.first()

        pks = field.prepare_instance_value(Owner.query.get(owner.id))
        self.assertEqual(pks, owner.id)
Ejemplo n.º 11
0
 def test_to_python(self):
     owner = Owner.objects.first()
     field = fields.ModelChoiceField(Owner, db)
     owner = field.to_python(owner.id)
     self.assertIsNotNone(owner)
     self.assertIsInstance(owner, Owner)
Ejemplo n.º 12
0
    def test_apply_limit_value(self):

        field = fields.ModelChoiceField(
            Owner, db, limit_choices_to=[Owner.first_name == "first_name 1"])
        apply_limit_choices_to_form_field(field)
        self.assertEqual(field.queryset.count(), 1)