@@ -17,13 +17,15 @@ def setUpTestData(cls):
17
17
alias = "smithj" ,
18
18
# https://stackoverflow.com/a/18862958
19
19
birthday = pytz .timezone (get_timezone ()).localize (
20
- datetime (2023 , 11 , 30 , 16 ), is_dst = False
20
+ datetime (2023 , 11 , 30 , hour = 16 , minute = 12 , second = 15 ), is_dst = False
21
21
),
22
22
)
23
23
cls .elena = Author .objects .create (
24
24
name = "Élena Jordan" ,
25
25
alias = "elena" ,
26
- birthday = pytz .utc .localize (datetime (2023 , 11 , 30 , 16 ), is_dst = False ),
26
+ birthday = pytz .utc .localize (
27
+ datetime (2023 , 11 , 30 , hour = 16 , minute = 59 , second = 59 ), is_dst = False
28
+ ),
27
29
)
28
30
29
31
def test_yyyymm (self ):
@@ -50,8 +52,128 @@ def test_yyyymmddhhmmss(self):
50
52
john = Author .objects .annotate (v = models .toYYYYMMDDhhmmss ("birthday" )).get (
51
53
id = self .john .id
52
54
)
53
- self .assertEqual (john .v , 20231130160000 )
55
+ self .assertEqual (john .v , 20231130161215 )
54
56
elena = Author .objects .annotate (
55
57
v = models .toYYYYMMDDhhmmss ("birthday" , "Asia/Shanghai" )
56
58
).get (id = self .elena .id )
57
- self .assertEqual (elena .v , 20231201000000 )
59
+ self .assertEqual (elena .v , 20231201005959 )
60
+
61
+ def test_tostartofminute (self ):
62
+ john = Author .objects .annotate (v = models .toStartOfMinute ("birthday" )).get (
63
+ id = self .john .id
64
+ )
65
+ self .assertEqual (
66
+ john .v ,
67
+ datetime (
68
+ 2023 ,
69
+ 11 ,
70
+ 30 ,
71
+ hour = 16 ,
72
+ minute = 12 ,
73
+ second = 00 ,
74
+ ),
75
+ )
76
+
77
+ elena = Author .objects .annotate (v = models .toStartOfMinute ("birthday" )).get (
78
+ id = self .elena .id
79
+ )
80
+ self .assertEqual (
81
+ elena .v ,
82
+ datetime (2023 , 11 , 30 , hour = 10 , minute = 59 , second = 00 ),
83
+ )
84
+
85
+ def test_tostartoffiveminutes (self ):
86
+ john = Author .objects .annotate (v = models .toStartOfFiveMinutes ("birthday" )).get (
87
+ id = self .john .id
88
+ )
89
+ self .assertEqual (
90
+ john .v ,
91
+ datetime (
92
+ 2023 ,
93
+ 11 ,
94
+ 30 ,
95
+ hour = 16 ,
96
+ minute = 10 ,
97
+ second = 00 ,
98
+ ),
99
+ )
100
+
101
+ elena = Author .objects .annotate (v = models .toStartOfFiveMinutes ("birthday" )).get (
102
+ id = self .elena .id
103
+ )
104
+ self .assertEqual (
105
+ elena .v ,
106
+ datetime (2023 , 11 , 30 , hour = 10 , minute = 55 , second = 00 ),
107
+ )
108
+
109
+ def test_tostartoftenminutes (self ):
110
+ john = Author .objects .annotate (v = models .toStartOfTenMinutes ("birthday" )).get (
111
+ id = self .john .id
112
+ )
113
+ self .assertEqual (
114
+ john .v ,
115
+ datetime (
116
+ 2023 ,
117
+ 11 ,
118
+ 30 ,
119
+ hour = 16 ,
120
+ minute = 10 ,
121
+ second = 00 ,
122
+ ),
123
+ )
124
+
125
+ elena = Author .objects .annotate (v = models .toStartOfTenMinutes ("birthday" )).get (
126
+ id = self .elena .id
127
+ )
128
+ self .assertEqual (
129
+ elena .v ,
130
+ datetime (2023 , 11 , 30 , hour = 10 , minute = 50 , second = 00 ),
131
+ )
132
+
133
+ def test_tostartoffifteenminutes (self ):
134
+ john = Author .objects .annotate (
135
+ v = models .toStartOfFifteenMinutes ("birthday" )
136
+ ).get (id = self .john .id )
137
+ self .assertEqual (
138
+ john .v ,
139
+ datetime (
140
+ 2023 ,
141
+ 11 ,
142
+ 30 ,
143
+ hour = 16 ,
144
+ minute = 00 ,
145
+ second = 00 ,
146
+ ),
147
+ )
148
+
149
+ elena = Author .objects .annotate (
150
+ v = models .toStartOfFifteenMinutes ("birthday" )
151
+ ).get (id = self .elena .id )
152
+ self .assertEqual (
153
+ elena .v ,
154
+ datetime (2023 , 11 , 30 , hour = 10 , minute = 45 , second = 00 ),
155
+ )
156
+
157
+ def test_tostartofhour (self ):
158
+ john = Author .objects .annotate (v = models .toStartOfHour ("birthday" )).get (
159
+ id = self .john .id
160
+ )
161
+ self .assertEqual (
162
+ john .v ,
163
+ datetime (
164
+ 2023 ,
165
+ 11 ,
166
+ 30 ,
167
+ hour = 16 ,
168
+ minute = 00 ,
169
+ second = 00 ,
170
+ ),
171
+ )
172
+
173
+ elena = Author .objects .annotate (v = models .toStartOfHour ("birthday" )).get (
174
+ id = self .elena .id
175
+ )
176
+ self .assertEqual (
177
+ elena .v ,
178
+ datetime (2023 , 11 , 30 , hour = 10 , minute = 00 , second = 00 ),
179
+ )
0 commit comments