@malloydata/malloy-tests 0.0.98-dev231026204034 → 0.0.98-dev231026211435
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.
- package/dist/databases/all/expr.spec.js +1 -1
- package/dist/databases/all/nomodel.spec.js +1 -1
- package/dist/databases/bigquery/malloy_query.spec.js +1 -1
- package/dist/databases/postgres/postgres.spec.js +21 -1
- package/dist/databases/postgres/postgres.spec.js.map +1 -1
- package/dist/render/render.spec.js +3 -3
- package/package.json +6 -6
- package/src/databases/all/expr.spec.ts +1 -1
- package/src/databases/all/nomodel.spec.ts +1 -1
- package/src/databases/bigquery/malloy_query.spec.ts +1 -1
- package/src/databases/postgres/postgres.spec.ts +22 -3
- package/src/render/render.spec.ts +3 -3
|
@@ -109,7 +109,7 @@ describe.each(runtimes.runtimeList)('%s', (databaseName, runtime) => {
|
|
|
109
109
|
(0, util_1.testIf)(runtime.supportsNesting)('model: filtered turtle', async () => {
|
|
110
110
|
await expect(`
|
|
111
111
|
run: aircraft->{
|
|
112
|
-
nest: b is by_manufacturer
|
|
112
|
+
nest: b is by_manufacturer + { where: aircraft_models.manufacturer ?~'B%'}
|
|
113
113
|
}
|
|
114
114
|
`).malloyResultMatches(expressionModel, { 'b.manufacturer': 'BEECH' });
|
|
115
115
|
});
|
|
@@ -649,7 +649,7 @@ source: airports is bigquery.table('malloy-data.malloytest.airports') extend {
|
|
|
649
649
|
}
|
|
650
650
|
}
|
|
651
651
|
|
|
652
|
-
query: ca_airports is airports->by_fac_type
|
|
652
|
+
query: ca_airports is airports->by_fac_type + { where: state ? 'CA' | 'NY'}
|
|
653
653
|
`;
|
|
654
654
|
describe('airport_tests', () => {
|
|
655
655
|
let model;
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
23
23
|
*/
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
/* eslint-disable no-console */
|
|
25
26
|
const runtimes_1 = require("../../runtimes");
|
|
26
27
|
const util_1 = require("../../util");
|
|
27
28
|
require("../../util/db-jest-matchers");
|
|
@@ -108,12 +109,31 @@ describe('Postgres tests', () => {
|
|
|
108
109
|
zone,
|
|
109
110
|
});
|
|
110
111
|
test('can cast TIMESTAMPTZ to timestamp', async () => {
|
|
111
|
-
await expect(`run:
|
|
112
|
+
await expect(`run: postgres.sql("""
|
|
112
113
|
SELECT TIMESTAMPTZ '2020-02-20 00:00:00 ${zone}' as t_tstz
|
|
113
114
|
""") -> {
|
|
114
115
|
select: mex_220 is t_tstz::timestamp
|
|
115
116
|
}`).malloyResultMatches(runtime, { mex_220: zone_2020.toJSDate() });
|
|
116
117
|
});
|
|
117
118
|
});
|
|
119
|
+
describe('numbers', () => {
|
|
120
|
+
it.each([
|
|
121
|
+
'SMALLINT',
|
|
122
|
+
'INTEGER',
|
|
123
|
+
'BIGINT',
|
|
124
|
+
'DECIMAL',
|
|
125
|
+
'NUMERIC',
|
|
126
|
+
'REAL',
|
|
127
|
+
'DOUBLE PRECISION',
|
|
128
|
+
])('supports %s', async (sqlType) => {
|
|
129
|
+
const result = await runtime
|
|
130
|
+
.loadQuery(`run: postgres.sql("SELECT 10::${sqlType} as d")`)
|
|
131
|
+
.run();
|
|
132
|
+
const field = result.data.field.allFields[0];
|
|
133
|
+
expect(field.isAtomicField()).toBe(true);
|
|
134
|
+
expect(field.isNumber()).toBe(true);
|
|
135
|
+
expect(result.data.value[0]['d']).toEqual(10);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
118
138
|
});
|
|
119
139
|
//# sourceMappingURL=postgres.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.spec.js","sourceRoot":"","sources":["../../../src/databases/postgres/postgres.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;
|
|
1
|
+
{"version":3,"file":"postgres.spec.js","sourceRoot":"","sources":["../../../src/databases/postgres/postgres.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -234,11 +234,11 @@ describe('rendering results', () => {
|
|
|
234
234
|
}
|
|
235
235
|
|
|
236
236
|
# dashboard
|
|
237
|
-
view: by_name_db is by_name
|
|
237
|
+
view: by_name_db is by_name
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
query: by_name is height -> by_name
|
|
241
|
-
query: by_name_db is height -> by_name_db
|
|
240
|
+
query: by_name is height -> by_name
|
|
241
|
+
query: by_name_db is height -> by_name_db
|
|
242
242
|
`;
|
|
243
243
|
modelMaterializer = duckdb.loadModel(src);
|
|
244
244
|
});
|
package/package.json
CHANGED
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@jest/globals": "^29.4.3",
|
|
21
|
-
"@malloydata/db-bigquery": "^0.0.98-
|
|
22
|
-
"@malloydata/db-duckdb": "^0.0.98-
|
|
23
|
-
"@malloydata/db-postgres": "^0.0.98-
|
|
24
|
-
"@malloydata/malloy": "^0.0.98-
|
|
25
|
-
"@malloydata/render": "^0.0.98-
|
|
21
|
+
"@malloydata/db-bigquery": "^0.0.98-dev231026211435",
|
|
22
|
+
"@malloydata/db-duckdb": "^0.0.98-dev231026211435",
|
|
23
|
+
"@malloydata/db-postgres": "^0.0.98-dev231026211435",
|
|
24
|
+
"@malloydata/malloy": "^0.0.98-dev231026211435",
|
|
25
|
+
"@malloydata/render": "^0.0.98-dev231026211435",
|
|
26
26
|
"jsdom": "^22.1.0",
|
|
27
27
|
"luxon": "^1.26.4",
|
|
28
28
|
"madge": "^6.0.0"
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"@types/jsdom": "^21.1.1",
|
|
32
32
|
"@types/luxon": "^1.26.4"
|
|
33
33
|
},
|
|
34
|
-
"version": "0.0.98-
|
|
34
|
+
"version": "0.0.98-dev231026211435"
|
|
35
35
|
}
|
|
@@ -118,7 +118,7 @@ describe.each(runtimes.runtimeList)('%s', (databaseName, runtime) => {
|
|
|
118
118
|
testIf(runtime.supportsNesting)('model: filtered turtle', async () => {
|
|
119
119
|
await expect(`
|
|
120
120
|
run: aircraft->{
|
|
121
|
-
nest: b is by_manufacturer
|
|
121
|
+
nest: b is by_manufacturer + { where: aircraft_models.manufacturer ?~'B%'}
|
|
122
122
|
}
|
|
123
123
|
`).malloyResultMatches(expressionModel, {'b.manufacturer': 'BEECH'});
|
|
124
124
|
});
|
|
@@ -705,7 +705,7 @@ source: airports is bigquery.table('malloy-data.malloytest.airports') extend {
|
|
|
705
705
|
}
|
|
706
706
|
}
|
|
707
707
|
|
|
708
|
-
query: ca_airports is airports->by_fac_type
|
|
708
|
+
query: ca_airports is airports->by_fac_type + { where: state ? 'CA' | 'NY'}
|
|
709
709
|
`;
|
|
710
710
|
|
|
711
711
|
describe('airport_tests', () => {
|
|
@@ -23,9 +23,8 @@
|
|
|
23
23
|
|
|
24
24
|
/* eslint-disable no-console */
|
|
25
25
|
|
|
26
|
-
import {ok} from 'assert';
|
|
27
26
|
import {RuntimeList} from '../../runtimes';
|
|
28
|
-
import {Runtime} from '@malloydata/malloy';
|
|
27
|
+
import {AtomicField, Runtime} from '@malloydata/malloy';
|
|
29
28
|
import {describeIfDatabaseAvailable} from '../../util';
|
|
30
29
|
import '../../util/db-jest-matchers';
|
|
31
30
|
import {DateTime} from 'luxon';
|
|
@@ -134,7 +133,7 @@ describe('Postgres tests', () => {
|
|
|
134
133
|
});
|
|
135
134
|
test('can cast TIMESTAMPTZ to timestamp', async () => {
|
|
136
135
|
await expect(
|
|
137
|
-
`run:
|
|
136
|
+
`run: postgres.sql("""
|
|
138
137
|
SELECT TIMESTAMPTZ '2020-02-20 00:00:00 ${zone}' as t_tstz
|
|
139
138
|
""") -> {
|
|
140
139
|
select: mex_220 is t_tstz::timestamp
|
|
@@ -142,4 +141,24 @@ describe('Postgres tests', () => {
|
|
|
142
141
|
).malloyResultMatches(runtime, {mex_220: zone_2020.toJSDate()});
|
|
143
142
|
});
|
|
144
143
|
});
|
|
144
|
+
|
|
145
|
+
describe('numbers', () => {
|
|
146
|
+
it.each([
|
|
147
|
+
'SMALLINT',
|
|
148
|
+
'INTEGER',
|
|
149
|
+
'BIGINT',
|
|
150
|
+
'DECIMAL',
|
|
151
|
+
'NUMERIC',
|
|
152
|
+
'REAL',
|
|
153
|
+
'DOUBLE PRECISION',
|
|
154
|
+
])('supports %s', async sqlType => {
|
|
155
|
+
const result = await runtime
|
|
156
|
+
.loadQuery(`run: postgres.sql("SELECT 10::${sqlType} as d")`)
|
|
157
|
+
.run();
|
|
158
|
+
const field = result.data.field.allFields[0];
|
|
159
|
+
expect(field.isAtomicField()).toBe(true);
|
|
160
|
+
expect((field as AtomicField).isNumber()).toBe(true);
|
|
161
|
+
expect(result.data.value[0]['d']).toEqual(10);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
145
164
|
});
|
|
@@ -318,11 +318,11 @@ describe('rendering results', () => {
|
|
|
318
318
|
}
|
|
319
319
|
|
|
320
320
|
# dashboard
|
|
321
|
-
view: by_name_db is by_name
|
|
321
|
+
view: by_name_db is by_name
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
-
query: by_name is height -> by_name
|
|
325
|
-
query: by_name_db is height -> by_name_db
|
|
324
|
+
query: by_name is height -> by_name
|
|
325
|
+
query: by_name_db is height -> by_name_db
|
|
326
326
|
`;
|
|
327
327
|
modelMaterializer = duckdb.loadModel(src);
|
|
328
328
|
});
|