@malloydata/malloy-tests 0.0.67 → 0.0.68-dev230808194809

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/databases/all/db_index.spec.d.ts +1 -0
  2. package/dist/databases/all/db_index.spec.js +36 -0
  3. package/dist/databases/all/db_index.spec.js.map +1 -0
  4. package/dist/databases/all/expr.spec.d.ts +0 -2
  5. package/dist/databases/all/expr.spec.js +2 -547
  6. package/dist/databases/all/expr.spec.js.map +1 -1
  7. package/dist/databases/all/functions.spec.d.ts +1 -2
  8. package/dist/databases/all/functions.spec.js +2 -751
  9. package/dist/databases/all/functions.spec.js.map +1 -1
  10. package/dist/databases/all/join.spec.d.ts +1 -2
  11. package/dist/databases/all/join.spec.js +2 -276
  12. package/dist/databases/all/join.spec.js.map +1 -1
  13. package/dist/databases/all/nomodel.spec.d.ts +1 -2
  14. package/dist/databases/all/nomodel.spec.js +2 -923
  15. package/dist/databases/all/nomodel.spec.js.map +1 -1
  16. package/dist/databases/all/orderby.spec.d.ts +1 -2
  17. package/dist/databases/all/orderby.spec.js +2 -191
  18. package/dist/databases/all/orderby.spec.js.map +1 -1
  19. package/dist/databases/all/problems.spec.d.ts +1 -2
  20. package/dist/databases/all/problems.spec.js +2 -80
  21. package/dist/databases/all/problems.spec.js.map +1 -1
  22. package/dist/databases/all/sql_expressions.spec.d.ts +1 -2
  23. package/dist/databases/all/sql_expressions.spec.js +2 -62
  24. package/dist/databases/all/sql_expressions.spec.js.map +1 -1
  25. package/dist/databases/all/time.spec.d.ts +1 -3
  26. package/dist/databases/all/time.spec.js +2 -615
  27. package/dist/databases/all/time.spec.js.map +1 -1
  28. package/dist/databases/{all/index.spec.d.ts → shared/db_index.d.ts} +1 -0
  29. package/dist/databases/{all/index.spec.js → shared/db_index.js} +2 -33
  30. package/dist/databases/shared/db_index.js.map +1 -0
  31. package/dist/databases/shared/expr.d.ts +3 -0
  32. package/dist/databases/shared/expr.js +551 -0
  33. package/dist/databases/shared/expr.js.map +1 -0
  34. package/dist/databases/shared/functions.d.ts +3 -0
  35. package/dist/databases/shared/functions.js +754 -0
  36. package/dist/databases/shared/functions.js.map +1 -0
  37. package/dist/databases/shared/join.d.ts +3 -0
  38. package/dist/databases/shared/join.js +302 -0
  39. package/dist/databases/shared/join.js.map +1 -0
  40. package/dist/databases/shared/nomodel.d.ts +3 -0
  41. package/dist/databases/shared/nomodel.js +950 -0
  42. package/dist/databases/shared/nomodel.js.map +1 -0
  43. package/dist/databases/shared/orderby.d.ts +3 -0
  44. package/dist/databases/shared/orderby.js +217 -0
  45. package/dist/databases/shared/orderby.js.map +1 -0
  46. package/dist/databases/shared/problems.d.ts +3 -0
  47. package/dist/databases/shared/problems.js +106 -0
  48. package/dist/databases/shared/problems.js.map +1 -0
  49. package/dist/databases/shared/sql_expressions.d.ts +3 -0
  50. package/dist/databases/shared/sql_expressions.js +88 -0
  51. package/dist/databases/shared/sql_expressions.js.map +1 -0
  52. package/dist/databases/shared/test_list.js +18 -18
  53. package/dist/databases/shared/test_list.js.map +1 -1
  54. package/dist/databases/shared/time.d.ts +3 -0
  55. package/dist/databases/shared/time.js +640 -0
  56. package/dist/databases/shared/time.js.map +1 -0
  57. package/dist/index.d.ts +9 -10
  58. package/dist/index.js +19 -21
  59. package/dist/index.js.map +1 -1
  60. package/package.json +6 -6
  61. package/src/databases/all/db_index.spec.ts +37 -0
  62. package/src/databases/all/expr.spec.ts +2 -670
  63. package/src/databases/all/functions.spec.ts +1 -1101
  64. package/src/databases/all/join.spec.ts +1 -315
  65. package/src/databases/all/nomodel.spec.ts +2 -1124
  66. package/src/databases/all/orderby.spec.ts +1 -234
  67. package/src/databases/all/problems.spec.ts +1 -87
  68. package/src/databases/all/sql_expressions.spec.ts +1 -71
  69. package/src/databases/all/time.spec.ts +1 -761
  70. package/src/databases/{all/index.spec.ts → shared/db_index.ts} +2 -13
  71. package/src/databases/shared/expr.ts +695 -0
  72. package/src/databases/shared/functions.ts +1126 -0
  73. package/src/databases/shared/join.ts +340 -0
  74. package/src/databases/shared/nomodel.ts +1150 -0
  75. package/src/databases/shared/orderby.ts +260 -0
  76. package/src/databases/shared/problems.ts +113 -0
  77. package/src/databases/shared/sql_expressions.ts +96 -0
  78. package/src/databases/shared/test_list.ts +9 -9
  79. package/src/databases/shared/time.ts +786 -0
  80. package/src/index.ts +10 -11
  81. package/dist/databases/all/index.spec.js.map +0 -1
@@ -25,321 +25,7 @@
25
25
 
26
26
  import {RuntimeList, allDatabases} from '../../runtimes';
27
27
  import {databasesFromEnvironmentOr} from '../../util';
28
-
29
- const joinModelText = `
30
- source: aircraft_models is table('malloytest.aircraft_models') {
31
- primary_key: aircraft_model_code
32
- measure: model_count is count(*)
33
- query: manufacturer_models is {
34
- group_by: manufacturer
35
- aggregate: num_models is count(*)
36
- }
37
- query: manufacturer_seats is {
38
- group_by: manufacturer
39
- aggregate: total_seats is seats.sum()
40
- }
41
- }
42
-
43
- source: aircraft is table('malloytest.aircraft'){
44
- primary_key: tail_num
45
- measure: aircraft_count is count(*)
46
- }
47
-
48
- source: funnel is from(aircraft_models->manufacturer_models) {
49
- join_one: seats is from(aircraft_models->manufacturer_seats)
50
- with manufacturer
51
- }
52
- `;
53
-
54
- // const models = new Map<string, malloy.ModelMaterializer>();
55
- // runtimes.runtimeMap.forEach((runtime, key) => {
56
- // models.set(key, runtime.loadModel(joinModelText));
57
- // });
58
-
59
- export const joinSharedTests = (
60
- runtimes: RuntimeList,
61
- _splitFunction?: (column: string, splitChar: string) => string
62
- ) => {
63
- afterAll(async () => {
64
- await runtimes.closeAll();
65
- });
66
-
67
- describe('join expression tests', () => {
68
- runtimes.runtimeMap.forEach((runtime, database) => {
69
- it(`model source refine join - ${database}`, async () => {
70
- const result = await runtime
71
- .loadModel(joinModelText)
72
- .loadQuery(
73
- `
74
- source: a2 is aircraft {
75
- join_one: aircraft_models with aircraft_model_code
76
- }
77
-
78
- query: a2 -> {
79
- aggregate:
80
- aircraft_count
81
- aircraft_models.model_count
82
- }
83
- `
84
- )
85
- .run();
86
- expect(result.data.value[0]['model_count']).toBe(1416);
87
- });
88
-
89
- it(`model source refine in query join - ${database}`, async () => {
90
- const result = await runtime
91
- .loadModel(joinModelText)
92
- .loadQuery(
93
- `
94
- query: aircraft {
95
- join_one: aircraft_models with aircraft_model_code
96
- } -> {
97
- aggregate:
98
- aircraft_count
99
- aircraft_models.model_count
100
- }
101
- `
102
- )
103
- .run();
104
- expect(result.data.value[0]['model_count']).toBe(1416);
105
- });
106
-
107
- it(`model: join fact table query - ${database}`, async () => {
108
- const result = await runtime
109
- .loadModel(joinModelText)
110
- .loadQuery(
111
- `
112
- query: aircraft_models {
113
- join_one: am_facts is from(
114
- aircraft_models->{
115
- group_by: m is manufacturer
116
- aggregate: num_models is count(*)
117
- }) with manufacturer
118
- } -> {
119
- project:
120
- manufacturer
121
- am_facts.num_models
122
- order_by: 2 desc
123
- limit: 1
124
- }
125
- `
126
- )
127
- .run();
128
- expect(result.data.value[0]['num_models']).toBe(1147);
129
- });
130
-
131
- it(`model: source based on query - ${database}`, async () => {
132
- const result = await runtime
133
- .loadModel(joinModelText)
134
- .loadQuery(
135
- `
136
- query:
137
- aircraft_models-> {
138
- group_by: m is manufacturer
139
- aggregate: num_models is count(*)
140
- }
141
- -> {
142
- project:
143
- m
144
- num_models
145
- order_by: 2 desc
146
- limit: 1
147
- }
148
- `
149
- )
150
- .run();
151
- expect(result.data.value[0]['num_models']).toBe(1147);
152
- });
153
-
154
- it(`model: funnel - merge two queries - ${database}`, async () => {
155
- const result = await runtime
156
- .loadModel(joinModelText)
157
- .loadQuery(
158
- `
159
- query: from(aircraft_models->{
160
- group_by: m is manufacturer
161
- aggregate: num_models is count(*)
162
- }){
163
- join_one: seats is from(
164
- aircraft_models->{
165
- group_by: m is manufacturer
166
- aggregate: total_seats is seats.sum()
167
- }
168
- ) with m
169
- }
170
- -> {
171
- project:
172
- m
173
- num_models
174
- seats.total_seats
175
- order_by: 2 desc
176
- limit: 1
177
- }
178
- `
179
- )
180
- .run();
181
- expect(result.data.value[0]['num_models']).toBe(1147);
182
- expect(result.data.value[0]['total_seats']).toBe(252771);
183
- });
184
-
185
- it(`model: modeled funnel - ${database}`, async () => {
186
- const result = await runtime
187
- .loadModel(joinModelText)
188
- .loadQuery(
189
- `
190
- source: foo is from(aircraft_models-> manufacturer_models){
191
- join_one: seats is from(aircraft_models->manufacturer_seats)
192
- with manufacturer
193
- }
194
- query: foo-> {
195
- project:
196
- manufacturer,
197
- num_models,
198
- seats.total_seats
199
- order_by: 2 desc
200
- limit: 1
201
- }
202
- `
203
- )
204
- .run();
205
- expect(result.data.value[0]['num_models']).toBe(1147);
206
- expect(result.data.value[0]['total_seats']).toBe(252771);
207
- });
208
-
209
- it(`model: modeled funnel2 - ${database}`, async () => {
210
- const result = await runtime
211
- .loadModel(joinModelText)
212
- .loadQuery(
213
- `
214
- query: funnel->{
215
- project:
216
- manufacturer
217
- num_models
218
- seats.total_seats
219
- order_by: 2 desc
220
- limit: 1
221
- }
222
- `
223
- )
224
- .run();
225
- expect(result.data.value[0]['num_models']).toBe(1147);
226
- expect(result.data.value[0]['total_seats']).toBe(252771);
227
- });
228
-
229
- it(`model: double_pipe - ${database}`, async () => {
230
- const result = await runtime
231
- .loadModel(joinModelText)
232
- .loadQuery(
233
- `
234
- query: aircraft_models->{
235
- group_by: manufacturer
236
- aggregate: f is count(*)
237
- }->{
238
- aggregate: f_sum is f.sum()
239
- }->{
240
- project: f_sum2 is f_sum+1
241
- }
242
- `
243
- )
244
- .run();
245
- expect(result.data.value[0]['f_sum2']).toBe(60462);
246
- });
247
-
248
- test(`model: unnest is left join - ${database}`, async () => {
249
- const result = await runtime
250
- .loadModel(joinModelText)
251
- .loadQuery(
252
- `
253
- // produce a table with 4 rows that has a nested element
254
- query: a_states is table('malloytest.state_facts')-> {
255
- where: state ? ~ 'A%'
256
- group_by: state
257
- nest: somthing is {group_by: state}
258
- }
259
-
260
- // join the 4 rows and reference the
261
- // nested column. should return all the rows.
262
- // If the unnest is an inner join, we'll get back just 4 rows.
263
- query: table('malloytest.state_facts') {
264
- join_one: a_states is from(->a_states) with state
265
- }
266
- -> {
267
- group_by: state
268
- aggregate: c is count()
269
- nest: a is {
270
- group_by: a_states.somthing.state
271
- }
272
- }
273
- `
274
- )
275
- .run();
276
- // console.log(result.data.toObject());
277
- expect(result.data.rowCount).toBeGreaterThan(4);
278
- });
279
-
280
- // not sure how to solve this one yet.
281
- it(`All joins at the same level - ${database}`, async () => {
282
- const result = await runtime
283
- .loadQuery(
284
- `
285
- source: flights is table('malloytest.flights') {
286
- join_one: aircraft is table('malloytest.aircraft')
287
- on tail_num = aircraft.tail_num
288
- join_one: aircraft_models is table('malloytest.aircraft_models')
289
- on aircraft.aircraft_model_code = aircraft_models.aircraft_model_code
290
- }
291
-
292
- query: flights -> {
293
- group_by: aircraft_models.seats
294
- aggregate: flight_count is count()
295
- }
296
- `
297
- )
298
- .run();
299
- // console.log(result.data.toObject());
300
- expect(result.data.rowCount).toBeGreaterThan(4);
301
- });
302
-
303
- it(`join issue440 - ${database}`, async () => {
304
- const result = await runtime
305
- .loadQuery(
306
- `
307
- source: aircraft_models is table('malloytest.aircraft_models')
308
-
309
- source: aircraft is table('malloytest.aircraft')
310
-
311
- source: flights is table('malloytest.flights'){
312
- join_one: aircraft on aircraft.tail_num = tail_num
313
- join_one: aircraft_models on aircraft_models.aircraft_model_code = aircraft.aircraft_model_code
314
- }
315
-
316
- query: flights-> {
317
- group_by: testingtwo is aircraft_models.model
318
- }
319
- `
320
- )
321
- .run();
322
- // console.log(result.data.toObject());
323
- expect(result.data.rowCount).toBeGreaterThan(4);
324
- });
325
-
326
- it(`join issue1092 - ${database}`, async () => {
327
- const result = await runtime
328
- .loadQuery(
329
- `
330
- query: table('malloytest.state_facts') -> {
331
- join_one: sf is table('malloytest.state_facts') on sf.state = state
332
- aggregate: x is sf.births.sum() { ? state = 'CA' }
333
- }
334
- `
335
- )
336
- .run();
337
- // console.log(result.data.toObject());
338
- expect(result.data.rowCount).toBe(1);
339
- });
340
- });
341
- });
342
- };
28
+ import {joinSharedTests} from '../shared/join';
343
29
 
344
30
  const runtimes = new RuntimeList(databasesFromEnvironmentOr(allDatabases));
345
31