File: test_form.py

package info (click to toggle)
django-ninja 1.6.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 11,280 kB
  • sloc: python: 16,041; javascript: 1,689; makefile: 40; sh: 25
file content (60 lines) | stat: -rw-r--r-- 1,597 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import sys
from unittest.mock import patch

import pytest

from ninja import NinjaAPI
from ninja.testing import TestClient


def test_examples():
    api = NinjaAPI()

    with patch("builtins.api", api, create=True):
        import docs.src.tutorial.form.code01  # noqa: F401
        import docs.src.tutorial.form.code02  # noqa: F401

        client = TestClient(api)

        assert client.post(
            "/items", data={"name": "Katana", "price": 299.00, "quantity": 10}
        ).json() == {
            "name": "Katana",
            "description": None,
            "price": 299.0,
            "quantity": 10,
        }

        assert client.post(
            "/items/1?q=test", data={"name": "Katana", "price": 299.00, "quantity": 10}
        ).json() == {
            "item_id": 1,
            "q": "test",
            "item": {
                "name": "Katana",
                "description": None,
                "price": 299.0,
                "quantity": 10,
            },
        }


@pytest.mark.skipif(sys.version_info[:2] < (3, 9), reason="requires py3.9+")
def test_examples_extra():
    api = NinjaAPI()

    with patch("builtins.api", api, create=True):
        import docs.src.tutorial.form.code03  # noqa: F401

        client = TestClient(api)

        assert client.post(
            "/items-blank-default",
            data={"name": "Katana", "price": "", "quantity": "", "in_stock": ""},
        ).json() == {
            "name": "Katana",
            "description": None,
            "in_stock": True,
            "price": 0.0,
            "quantity": 0,
        }