tests.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:django-readonly-field 作者: peopledoc 项目源码 文件源码
def test_deserialize(self):
        pk = Car.objects.latest("id").id + 1
        json_car = json.dumps([{"model": "readonly_app.car",
                                "pk": pk,
                                "fields": {"wheel_number": 12,
                                           "manufacturer": "Volvo"}}])

        # Check that the save works
        with self.assertSQLQueries(Car) as capture:
            deserialized = serializers.deserialize("json", json_car)

            car, = deserialized
            car.save()

        # Because a pk is specified, Django will try to do an UPDATE and then
        # an INSERT when the UPDATE returns with 0 rows affected
        self.assertNumCommands(capture, command="UPDATE", count=1)
        self.assertNumCommands(capture, command="INSERT", count=1)

        car = Car.objects.get(pk=pk)
        self.assertEqual(car.wheel_number, 12)
        self.assertEqual(car.manufacturer, "Renault")

        json_car = json_car.replace("12", "14")
        # Check that the UPDATE works
        with self.assertSQLQueries(Car) as capture:
            deserialized = serializers.deserialize("json", json_car)

            car, = deserialized
            car.save()

        self.assertNumCommands(capture, command="UPDATE", count=1)
        self.assertNumCommands(capture, command="INSERT", count=0)

        car = Car.objects.get(pk=pk)
        self.assertEqual(car.wheel_number, 14)
        self.assertEqual(car.manufacturer, "Renault")
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号