File: test_values.py

package info (click to toggle)
python-django 3%3A5.2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 61,236 kB
  • sloc: python: 361,585; javascript: 19,250; xml: 211; makefile: 182; sh: 28
file content (212 lines) | stat: -rw-r--r-- 9,126 bytes parent folder | download
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
from collections import namedtuple
from uuid import UUID

from django.test import TestCase

from .models import Post, Tenant, User


class CompositePKValuesTests(TestCase):
    USER_1_EMAIL = "user0001@example.com"
    USER_2_EMAIL = "user0002@example.com"
    USER_3_EMAIL = "user0003@example.com"
    POST_1_ID = "77777777-7777-7777-7777-777777777777"
    POST_2_ID = "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
    POST_3_ID = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"

    @classmethod
    def setUpTestData(cls):
        super().setUpTestData()
        cls.tenant_1 = Tenant.objects.create()
        cls.tenant_2 = Tenant.objects.create()
        cls.user_1 = User.objects.create(
            tenant=cls.tenant_1, id=1, email=cls.USER_1_EMAIL
        )
        cls.user_2 = User.objects.create(
            tenant=cls.tenant_1, id=2, email=cls.USER_2_EMAIL
        )
        cls.user_3 = User.objects.create(
            tenant=cls.tenant_2, id=3, email=cls.USER_3_EMAIL
        )
        cls.post_1 = Post.objects.create(tenant=cls.tenant_1, id=cls.POST_1_ID)
        cls.post_2 = Post.objects.create(tenant=cls.tenant_1, id=cls.POST_2_ID)
        cls.post_3 = Post.objects.create(tenant=cls.tenant_2, id=cls.POST_3_ID)

    def test_values_list(self):
        with self.subTest('User.objects.values_list("pk")'):
            self.assertSequenceEqual(
                User.objects.values_list("pk").order_by("pk"),
                (
                    (self.user_1.pk,),
                    (self.user_2.pk,),
                    (self.user_3.pk,),
                ),
            )
        with self.subTest('User.objects.values_list("pk", "email")'):
            self.assertSequenceEqual(
                User.objects.values_list("pk", "email").order_by("pk"),
                (
                    (self.user_1.pk, self.USER_1_EMAIL),
                    (self.user_2.pk, self.USER_2_EMAIL),
                    (self.user_3.pk, self.USER_3_EMAIL),
                ),
            )
        with self.subTest('User.objects.values_list("pk", "id")'):
            self.assertSequenceEqual(
                User.objects.values_list("pk", "id").order_by("pk"),
                (
                    (self.user_1.pk, self.user_1.id),
                    (self.user_2.pk, self.user_2.id),
                    (self.user_3.pk, self.user_3.id),
                ),
            )
        with self.subTest('User.objects.values_list("pk", "tenant_id", "id")'):
            self.assertSequenceEqual(
                User.objects.values_list("pk", "tenant_id", "id").order_by("pk"),
                (
                    (self.user_1.pk, self.user_1.tenant_id, self.user_1.id),
                    (self.user_2.pk, self.user_2.tenant_id, self.user_2.id),
                    (self.user_3.pk, self.user_3.tenant_id, self.user_3.id),
                ),
            )
        with self.subTest('User.objects.values_list("pk", flat=True)'):
            self.assertSequenceEqual(
                User.objects.values_list("pk", flat=True).order_by("pk"),
                (
                    self.user_1.pk,
                    self.user_2.pk,
                    self.user_3.pk,
                ),
            )
        with self.subTest('Post.objects.values_list("pk", flat=True)'):
            self.assertSequenceEqual(
                Post.objects.values_list("pk", flat=True).order_by("pk"),
                (
                    (self.tenant_1.id, UUID(self.POST_1_ID)),
                    (self.tenant_1.id, UUID(self.POST_2_ID)),
                    (self.tenant_2.id, UUID(self.POST_3_ID)),
                ),
            )
        with self.subTest('Post.objects.values_list("pk")'):
            self.assertSequenceEqual(
                Post.objects.values_list("pk").order_by("pk"),
                (
                    ((self.tenant_1.id, UUID(self.POST_1_ID)),),
                    ((self.tenant_1.id, UUID(self.POST_2_ID)),),
                    ((self.tenant_2.id, UUID(self.POST_3_ID)),),
                ),
            )
        with self.subTest('Post.objects.values_list("pk", "id")'):
            self.assertSequenceEqual(
                Post.objects.values_list("pk", "id").order_by("pk"),
                (
                    ((self.tenant_1.id, UUID(self.POST_1_ID)), UUID(self.POST_1_ID)),
                    ((self.tenant_1.id, UUID(self.POST_2_ID)), UUID(self.POST_2_ID)),
                    ((self.tenant_2.id, UUID(self.POST_3_ID)), UUID(self.POST_3_ID)),
                ),
            )
        with self.subTest('Post.objects.values_list("id", "pk")'):
            self.assertSequenceEqual(
                Post.objects.values_list("id", "pk").order_by("pk"),
                (
                    (UUID(self.POST_1_ID), (self.tenant_1.id, UUID(self.POST_1_ID))),
                    (UUID(self.POST_2_ID), (self.tenant_1.id, UUID(self.POST_2_ID))),
                    (UUID(self.POST_3_ID), (self.tenant_2.id, UUID(self.POST_3_ID))),
                ),
            )
        with self.subTest('User.objects.values_list("pk", named=True)'):
            Row = namedtuple("Row", ["pk"])
            self.assertSequenceEqual(
                User.objects.values_list("pk", named=True).order_by("pk"),
                (
                    Row(pk=self.user_1.pk),
                    Row(pk=self.user_2.pk),
                    Row(pk=self.user_3.pk),
                ),
            )
        with self.subTest('User.objects.values_list("pk", "pk")'):
            self.assertSequenceEqual(
                User.objects.values_list("pk", "pk").order_by("pk"),
                (
                    (self.user_1.pk, self.user_1.pk),
                    (self.user_2.pk, self.user_2.pk),
                    (self.user_3.pk, self.user_3.pk),
                ),
            )
        with self.subTest('User.objects.values_list("pk", "id", "pk", "id")'):
            self.assertSequenceEqual(
                User.objects.values_list("pk", "id", "pk", "id").order_by("pk"),
                (
                    (self.user_1.pk, self.user_1.id, self.user_1.pk, self.user_1.id),
                    (self.user_2.pk, self.user_2.id, self.user_2.pk, self.user_2.id),
                    (self.user_3.pk, self.user_3.id, self.user_3.pk, self.user_3.id),
                ),
            )

    def test_values(self):
        with self.subTest('User.objects.values("pk")'):
            self.assertSequenceEqual(
                User.objects.values("pk").order_by("pk"),
                (
                    {"pk": self.user_1.pk},
                    {"pk": self.user_2.pk},
                    {"pk": self.user_3.pk},
                ),
            )
        with self.subTest('User.objects.values("pk", "email")'):
            self.assertSequenceEqual(
                User.objects.values("pk", "email").order_by("pk"),
                (
                    {"pk": self.user_1.pk, "email": self.USER_1_EMAIL},
                    {"pk": self.user_2.pk, "email": self.USER_2_EMAIL},
                    {"pk": self.user_3.pk, "email": self.USER_3_EMAIL},
                ),
            )
        with self.subTest('User.objects.values("pk", "id")'):
            self.assertSequenceEqual(
                User.objects.values("pk", "id").order_by("pk"),
                (
                    {"pk": self.user_1.pk, "id": self.user_1.id},
                    {"pk": self.user_2.pk, "id": self.user_2.id},
                    {"pk": self.user_3.pk, "id": self.user_3.id},
                ),
            )
        with self.subTest('User.objects.values("pk", "tenant_id", "id")'):
            self.assertSequenceEqual(
                User.objects.values("pk", "tenant_id", "id").order_by("pk"),
                (
                    {
                        "pk": self.user_1.pk,
                        "tenant_id": self.user_1.tenant_id,
                        "id": self.user_1.id,
                    },
                    {
                        "pk": self.user_2.pk,
                        "tenant_id": self.user_2.tenant_id,
                        "id": self.user_2.id,
                    },
                    {
                        "pk": self.user_3.pk,
                        "tenant_id": self.user_3.tenant_id,
                        "id": self.user_3.id,
                    },
                ),
            )
        with self.subTest('User.objects.values("pk", "pk")'):
            self.assertSequenceEqual(
                User.objects.values("pk", "pk").order_by("pk"),
                (
                    {"pk": self.user_1.pk},
                    {"pk": self.user_2.pk},
                    {"pk": self.user_3.pk},
                ),
            )
        with self.subTest('User.objects.values("pk", "id", "pk", "id")'):
            self.assertSequenceEqual(
                User.objects.values("pk", "id", "pk", "id").order_by("pk"),
                (
                    {"pk": self.user_1.pk, "id": self.user_1.id},
                    {"pk": self.user_2.pk, "id": self.user_2.id},
                    {"pk": self.user_3.pk, "id": self.user_3.id},
                ),
            )