Leon4gr45 commited on
Commit
22bd17c
·
verified ·
1 Parent(s): 0c20f80

Delete test/plausible/stats/sparkline_test.exs with huggingface_hub

Browse files
test/plausible/stats/sparkline_test.exs DELETED
@@ -1,357 +0,0 @@
1
- defmodule Plausible.Stats.SparklineTest do
2
- use Plausible.DataCase, async: true
3
-
4
- alias Plausible.Stats.Sparkline
5
-
6
- describe "errors" do
7
- setup %{test_pid: test_pid} do
8
- Plausible.Test.Support.Sentry.setup(test_pid)
9
- end
10
-
11
- test "safe overview catches errors" do
12
- bad_site = %Plausible.Site{domain: "bad-site"}
13
- assert Sparkline.safe_overview_24h(bad_site) == {:error, :inaccessible}
14
-
15
- assert [report] = Sentry.Test.pop_sentry_reports()
16
-
17
- assert report.extra.error =~
18
- "(FunctionClauseError) no function clause matching in NaiveDateTime.compare"
19
-
20
- assert report.extra.site == "bad-site"
21
- assert report.extra.comment == "Probing error volume"
22
- end
23
- end
24
-
25
- describe "parallel_overview" do
26
- test "returns no data on no sites" do
27
- assert Sparkline.parallel_overview([]) == %{}
28
- end
29
-
30
- test "returns empty intervals placeholder on no clickhouse stats" do
31
- now = ~N[2023-10-26 10:00:15]
32
-
33
- site = new_site()
34
- domain = site.domain
35
-
36
- assert %{
37
- ^domain => %{
38
- visitors: 0,
39
- visitors_change: 0,
40
- intervals: intervals
41
- }
42
- } =
43
- Sparkline.parallel_overview(
44
- [site],
45
- now
46
- )
47
-
48
- assert intervals == [
49
- %{interval: "2023-10-25 10:00:00", visitors: 0},
50
- %{interval: "2023-10-25 11:00:00", visitors: 0},
51
- %{interval: "2023-10-25 12:00:00", visitors: 0},
52
- %{interval: "2023-10-25 13:00:00", visitors: 0},
53
- %{interval: "2023-10-25 14:00:00", visitors: 0},
54
- %{interval: "2023-10-25 15:00:00", visitors: 0},
55
- %{interval: "2023-10-25 16:00:00", visitors: 0},
56
- %{interval: "2023-10-25 17:00:00", visitors: 0},
57
- %{interval: "2023-10-25 18:00:00", visitors: 0},
58
- %{interval: "2023-10-25 19:00:00", visitors: 0},
59
- %{interval: "2023-10-25 20:00:00", visitors: 0},
60
- %{interval: "2023-10-25 21:00:00", visitors: 0},
61
- %{interval: "2023-10-25 22:00:00", visitors: 0},
62
- %{interval: "2023-10-25 23:00:00", visitors: 0},
63
- %{interval: "2023-10-26 00:00:00", visitors: 0},
64
- %{interval: "2023-10-26 01:00:00", visitors: 0},
65
- %{interval: "2023-10-26 02:00:00", visitors: 0},
66
- %{interval: "2023-10-26 03:00:00", visitors: 0},
67
- %{interval: "2023-10-26 04:00:00", visitors: 0},
68
- %{interval: "2023-10-26 05:00:00", visitors: 0},
69
- %{interval: "2023-10-26 06:00:00", visitors: 0},
70
- %{interval: "2023-10-26 07:00:00", visitors: 0},
71
- %{interval: "2023-10-26 08:00:00", visitors: 0},
72
- %{interval: "2023-10-26 09:00:00", visitors: 0},
73
- %{interval: "2023-10-26 10:00:00", visitors: 0}
74
- ]
75
-
76
- assert intervals == Sparkline.empty_24h_intervals(now)
77
- end
78
-
79
- test "returns clickhouse data merged with placeholder" do
80
- now = ~U[2023-10-26 10:00:15Z]
81
-
82
- site = new_site()
83
-
84
- user_id = 111
85
-
86
- populate_stats(site, [
87
- build(:pageview, timestamp: ~N[2023-10-25 11:01:00]),
88
- build(:pageview, timestamp: ~N[2023-10-25 13:59:00]),
89
- build(:pageview, timestamp: ~N[2023-10-25 13:58:00]),
90
- build(:pageview, user_id: user_id, timestamp: ~N[2023-10-25 15:00:00]),
91
- build(:pageview, user_id: user_id, timestamp: ~N[2023-10-25 15:01:00]),
92
- build(:pageview, timestamp: ~N[2023-10-26 10:00:14])
93
- ])
94
-
95
- assert %{
96
- visitors: 5,
97
- visitors_change: 100,
98
- intervals: [
99
- %{interval: "2023-10-25 10:00:00", visitors: 0},
100
- %{interval: "2023-10-25 11:00:00", visitors: 1},
101
- %{interval: "2023-10-25 12:00:00", visitors: 0},
102
- %{interval: "2023-10-25 13:00:00", visitors: 2},
103
- %{interval: "2023-10-25 14:00:00", visitors: 0},
104
- %{interval: "2023-10-25 15:00:00", visitors: 1},
105
- %{interval: "2023-10-25 16:00:00", visitors: 0},
106
- %{interval: "2023-10-25 17:00:00", visitors: 0},
107
- %{interval: "2023-10-25 18:00:00", visitors: 0},
108
- %{interval: "2023-10-25 19:00:00", visitors: 0},
109
- %{interval: "2023-10-25 20:00:00", visitors: 0},
110
- %{interval: "2023-10-25 21:00:00", visitors: 0},
111
- %{interval: "2023-10-25 22:00:00", visitors: 0},
112
- %{interval: "2023-10-25 23:00:00", visitors: 0},
113
- %{interval: "2023-10-26 00:00:00", visitors: 0},
114
- %{interval: "2023-10-26 01:00:00", visitors: 0},
115
- %{interval: "2023-10-26 02:00:00", visitors: 0},
116
- %{interval: "2023-10-26 03:00:00", visitors: 0},
117
- %{interval: "2023-10-26 04:00:00", visitors: 0},
118
- %{interval: "2023-10-26 05:00:00", visitors: 0},
119
- %{interval: "2023-10-26 06:00:00", visitors: 0},
120
- %{interval: "2023-10-26 07:00:00", visitors: 0},
121
- %{interval: "2023-10-26 08:00:00", visitors: 0},
122
- %{interval: "2023-10-26 09:00:00", visitors: 0},
123
- %{interval: "2023-10-26 10:00:00", visitors: 1}
124
- ]
125
- } = Sparkline.parallel_overview([site], now)[site.domain]
126
- end
127
-
128
- test "ignores visits before native stats start time (after reset)" do
129
- now = ~N[2023-10-26 10:00:15]
130
- site1 = insert(:site, native_stats_start_at: ~N[2023-10-25 14:15:00])
131
- site2 = insert(:site, native_stats_start_at: ~N[2023-10-23 12:00:00])
132
-
133
- user_id1 = 111
134
- user_id2 = 222
135
-
136
- populate_stats(site1, [
137
- build(:pageview, timestamp: ~N[2023-10-25 13:59:00]),
138
- build(:pageview, timestamp: ~N[2023-10-25 13:58:00]),
139
- build(:pageview, user_id: user_id1, timestamp: ~N[2023-10-25 15:00:00]),
140
- build(:pageview, user_id: user_id1, timestamp: ~N[2023-10-25 15:01:00])
141
- ])
142
-
143
- populate_stats(site2, [
144
- build(:pageview, timestamp: ~N[2023-10-25 13:59:00]),
145
- build(:pageview, timestamp: ~N[2023-10-25 13:58:00]),
146
- build(:pageview, user_id: user_id2, timestamp: ~N[2023-10-25 15:00:00]),
147
- build(:pageview, user_id: user_id2, timestamp: ~N[2023-10-25 15:01:00])
148
- ])
149
-
150
- assert %{
151
- visitors_change: 100,
152
- visitors: 1,
153
- intervals: [
154
- %{interval: "2023-10-25 10:00:00", visitors: 0},
155
- %{interval: "2023-10-25 11:00:00", visitors: 0},
156
- %{interval: "2023-10-25 12:00:00", visitors: 0},
157
- %{interval: "2023-10-25 13:00:00", visitors: 0},
158
- %{interval: "2023-10-25 14:00:00", visitors: 0},
159
- %{interval: "2023-10-25 15:00:00", visitors: 1},
160
- %{interval: "2023-10-25 16:00:00", visitors: 0},
161
- %{interval: "2023-10-25 17:00:00", visitors: 0},
162
- %{interval: "2023-10-25 18:00:00", visitors: 0},
163
- %{interval: "2023-10-25 19:00:00", visitors: 0},
164
- %{interval: "2023-10-25 20:00:00", visitors: 0},
165
- %{interval: "2023-10-25 21:00:00", visitors: 0},
166
- %{interval: "2023-10-25 22:00:00", visitors: 0},
167
- %{interval: "2023-10-25 23:00:00", visitors: 0},
168
- %{interval: "2023-10-26 00:00:00", visitors: 0},
169
- %{interval: "2023-10-26 01:00:00", visitors: 0},
170
- %{interval: "2023-10-26 02:00:00", visitors: 0},
171
- %{interval: "2023-10-26 03:00:00", visitors: 0},
172
- %{interval: "2023-10-26 04:00:00", visitors: 0},
173
- %{interval: "2023-10-26 05:00:00", visitors: 0},
174
- %{interval: "2023-10-26 06:00:00", visitors: 0},
175
- %{interval: "2023-10-26 07:00:00", visitors: 0},
176
- %{interval: "2023-10-26 08:00:00", visitors: 0},
177
- %{interval: "2023-10-26 09:00:00", visitors: 0},
178
- %{interval: "2023-10-26 10:00:00", visitors: 0}
179
- ]
180
- } = Sparkline.parallel_overview([site1], now)[site1.domain]
181
-
182
- assert %{
183
- visitors_change: 100,
184
- visitors: 3,
185
- intervals: [
186
- %{interval: "2023-10-25 10:00:00", visitors: 0},
187
- %{interval: "2023-10-25 11:00:00", visitors: 0},
188
- %{interval: "2023-10-25 12:00:00", visitors: 0},
189
- %{interval: "2023-10-25 13:00:00", visitors: 2},
190
- %{interval: "2023-10-25 14:00:00", visitors: 0},
191
- %{interval: "2023-10-25 15:00:00", visitors: 1},
192
- %{interval: "2023-10-25 16:00:00", visitors: 0},
193
- %{interval: "2023-10-25 17:00:00", visitors: 0},
194
- %{interval: "2023-10-25 18:00:00", visitors: 0},
195
- %{interval: "2023-10-25 19:00:00", visitors: 0},
196
- %{interval: "2023-10-25 20:00:00", visitors: 0},
197
- %{interval: "2023-10-25 21:00:00", visitors: 0},
198
- %{interval: "2023-10-25 22:00:00", visitors: 0},
199
- %{interval: "2023-10-25 23:00:00", visitors: 0},
200
- %{interval: "2023-10-26 00:00:00", visitors: 0},
201
- %{interval: "2023-10-26 01:00:00", visitors: 0},
202
- %{interval: "2023-10-26 02:00:00", visitors: 0},
203
- %{interval: "2023-10-26 03:00:00", visitors: 0},
204
- %{interval: "2023-10-26 04:00:00", visitors: 0},
205
- %{interval: "2023-10-26 05:00:00", visitors: 0},
206
- %{interval: "2023-10-26 06:00:00", visitors: 0},
207
- %{interval: "2023-10-26 07:00:00", visitors: 0},
208
- %{interval: "2023-10-26 08:00:00", visitors: 0},
209
- %{interval: "2023-10-26 09:00:00", visitors: 0},
210
- %{interval: "2023-10-26 10:00:00", visitors: 0}
211
- ]
212
- } = Sparkline.parallel_overview([site2], now)[site2.domain]
213
- end
214
-
215
- test "returns clickhouse data merged with placeholder for multiple sites" do
216
- now = ~N[2023-10-26 10:00:15]
217
- site1 = new_site()
218
- site2 = new_site()
219
- site3 = new_site()
220
-
221
- user_id = 111
222
-
223
- populate_stats(site1, [
224
- build(:pageview, user_id: user_id, timestamp: ~N[2023-10-25 13:00:00]),
225
- build(:pageview, user_id: user_id, timestamp: ~N[2023-10-25 13:01:00]),
226
- build(:pageview, timestamp: ~N[2023-10-25 15:59:00]),
227
- build(:pageview, timestamp: ~N[2023-10-25 15:58:00])
228
- ])
229
-
230
- populate_stats(site2, [
231
- build(:pageview, timestamp: ~N[2023-10-25 13:59:00]),
232
- build(:pageview, timestamp: ~N[2023-10-25 13:58:00]),
233
- build(:pageview, user_id: user_id, timestamp: ~N[2023-10-25 15:00:00]),
234
- build(:pageview, user_id: user_id, timestamp: ~N[2023-10-25 15:01:00])
235
- ])
236
-
237
- assert result =
238
- Sparkline.parallel_overview([site1, site2, site3], now)
239
-
240
- assert result[site1.domain].visitors == 3
241
- assert result[site1.domain].visitors_change == 100
242
- assert result[site2.domain].visitors == 3
243
- assert result[site2.domain].visitors_change == 100
244
- assert result[site3.domain].visitors == 0
245
- assert result[site3.domain].visitors_change == 0
246
-
247
- find_interval = fn result, domain, interval ->
248
- Enum.find(result[domain].intervals, &(&1.interval == interval))
249
- end
250
-
251
- assert find_interval.(result, site1.domain, "2023-10-25 13:00:00").visitors == 1
252
- assert find_interval.(result, site1.domain, "2023-10-25 15:00:00").visitors == 2
253
- assert find_interval.(result, site2.domain, "2023-10-25 13:00:00").visitors == 2
254
- assert find_interval.(result, site2.domain, "2023-10-25 15:00:00").visitors == 1
255
- end
256
-
257
- test "returns calculated change" do
258
- now = ~N[2023-10-26 10:00:15]
259
- site = new_site()
260
-
261
- populate_stats(site, [
262
- build(:pageview, timestamp: ~N[2023-10-24 11:58:00]),
263
- build(:pageview, timestamp: ~N[2023-10-24 12:59:00]),
264
- build(:pageview, timestamp: ~N[2023-10-25 13:59:00]),
265
- build(:pageview, timestamp: ~N[2023-10-25 13:58:00]),
266
- build(:pageview, timestamp: ~N[2023-10-25 13:59:00])
267
- ])
268
-
269
- assert %{
270
- visitors_change: 50,
271
- visitors: 3
272
- } = Sparkline.parallel_overview([site], now)[site.domain]
273
- end
274
-
275
- test "calculates uniques correctly across hour boundaries" do
276
- now = ~N[2023-10-26 10:00:15]
277
- site = new_site()
278
-
279
- user_id = 111
280
-
281
- populate_stats(site, [
282
- build(:pageview, user_id: user_id, timestamp: ~N[2023-10-25 15:59:00]),
283
- build(:pageview, user_id: user_id, timestamp: ~N[2023-10-25 16:00:00])
284
- ])
285
-
286
- result = Sparkline.parallel_overview([site], now)[site.domain]
287
- assert result[:visitors] == 1
288
- end
289
-
290
- test "another one" do
291
- now = ~N[2023-10-26 10:00:15]
292
- site = new_site()
293
-
294
- user_id = 111
295
-
296
- populate_stats(site, [
297
- build(:pageview, timestamp: ~N[2023-10-25 13:59:00]),
298
- build(:pageview, timestamp: ~N[2023-10-25 13:58:00]),
299
- build(:pageview, user_id: user_id, timestamp: ~N[2023-10-25 15:00:00]),
300
- build(:pageview, user_id: user_id, timestamp: ~N[2023-10-25 16:00:00])
301
- ])
302
-
303
- assert %{
304
- visitors_change: 100,
305
- visitors: 3,
306
- intervals: [
307
- %{interval: "2023-10-25 10:00:00", visitors: 0},
308
- %{interval: "2023-10-25 11:00:00", visitors: 0},
309
- %{interval: "2023-10-25 12:00:00", visitors: 0},
310
- %{interval: "2023-10-25 13:00:00", visitors: 2},
311
- %{interval: "2023-10-25 14:00:00", visitors: 0},
312
- %{interval: "2023-10-25 15:00:00", visitors: 1},
313
- %{interval: "2023-10-25 16:00:00", visitors: 1},
314
- %{interval: "2023-10-25 17:00:00", visitors: 0},
315
- %{interval: "2023-10-25 18:00:00", visitors: 0},
316
- %{interval: "2023-10-25 19:00:00", visitors: 0},
317
- %{interval: "2023-10-25 20:00:00", visitors: 0},
318
- %{interval: "2023-10-25 21:00:00", visitors: 0},
319
- %{interval: "2023-10-25 22:00:00", visitors: 0},
320
- %{interval: "2023-10-25 23:00:00", visitors: 0},
321
- %{interval: "2023-10-26 00:00:00", visitors: 0},
322
- %{interval: "2023-10-26 01:00:00", visitors: 0},
323
- %{interval: "2023-10-26 02:00:00", visitors: 0},
324
- %{interval: "2023-10-26 03:00:00", visitors: 0},
325
- %{interval: "2023-10-26 04:00:00", visitors: 0},
326
- %{interval: "2023-10-26 05:00:00", visitors: 0},
327
- %{interval: "2023-10-26 06:00:00", visitors: 0},
328
- %{interval: "2023-10-26 07:00:00", visitors: 0},
329
- %{interval: "2023-10-26 08:00:00", visitors: 0},
330
- %{interval: "2023-10-26 09:00:00", visitors: 0},
331
- %{interval: "2023-10-26 10:00:00", visitors: 0}
332
- ]
333
- } = Sparkline.parallel_overview([site], now)[site.domain]
334
- end
335
-
336
- test "excludes engagement events from visitor counts" do
337
- site = new_site()
338
- now = ~N[2025-10-20 12:49:15]
339
-
340
- populate_stats(site, [
341
- build(:pageview, user_id: 111, timestamp: ~N[2025-10-20 12:00:00]),
342
- build(:pageview, user_id: 222, timestamp: ~N[2025-10-20 10:50:00]),
343
- build(:engagement,
344
- user_id: 222,
345
- pathname: "/blog",
346
- timestamp: ~N[2025-10-20 10:50:01],
347
- scroll_depth: 20,
348
- engagement_time: 50_000
349
- )
350
- ])
351
-
352
- result = Sparkline.parallel_overview([site], now)[site.domain]
353
-
354
- assert %{visitors: 2} = result
355
- end
356
- end
357
- end