@ingeno/pipedream-services 1.0.74 → 1.0.76
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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/slack/example.d.ts +3 -0
- package/dist/slack/example.d.ts.map +1 -0
- package/dist/slack/example.js +49 -0
- package/dist/slack/example.js.map +1 -0
- package/dist/slack/index.d.ts +2 -0
- package/dist/slack/index.d.ts.map +1 -0
- package/dist/slack/index.js +2 -0
- package/dist/slack/index.js.map +1 -0
- package/dist/slack/slack-service.d.ts +72 -0
- package/dist/slack/slack-service.d.ts.map +1 -0
- package/dist/slack/slack-service.js +138 -0
- package/dist/slack/slack-service.js.map +1 -0
- package/dist/zoho-crm/zoho-crm-fetcher.d.ts.map +1 -1
- package/dist/zoho-crm/zoho-crm-fetcher.js +25 -42
- package/dist/zoho-crm/zoho-crm-fetcher.js.map +1 -1
- package/package.json +7 -2
- package/dist/aws/apn/partner-central-client.test.d.ts +0 -2
- package/dist/aws/apn/partner-central-client.test.d.ts.map +0 -1
- package/dist/aws/apn/partner-central-client.test.js +0 -38
- package/dist/aws/apn/partner-central-client.test.js.map +0 -1
- package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.d.ts +0 -2
- package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.d.ts.map +0 -1
- package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.js +0 -34
- package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.js.map +0 -1
- package/dist/aws/aws-list-stream.test.d.ts +0 -3
- package/dist/aws/aws-list-stream.test.d.ts.map +0 -1
- package/dist/aws/aws-list-stream.test.js +0 -50
- package/dist/aws/aws-list-stream.test.js.map +0 -1
- package/dist/collections/collections-to-table-stream.test.d.ts +0 -2
- package/dist/collections/collections-to-table-stream.test.d.ts.map +0 -1
- package/dist/collections/collections-to-table-stream.test.js +0 -70
- package/dist/collections/collections-to-table-stream.test.js.map +0 -1
- package/dist/collections/collections-to-table.test.d.ts +0 -2
- package/dist/collections/collections-to-table.test.d.ts.map +0 -1
- package/dist/collections/collections-to-table.test.js +0 -105
- package/dist/collections/collections-to-table.test.js.map +0 -1
- package/dist/collections/converter.test.d.ts +0 -2
- package/dist/collections/converter.test.d.ts.map +0 -1
- package/dist/collections/converter.test.js +0 -304
- package/dist/collections/converter.test.js.map +0 -1
- package/dist/postgres/postgres-test-connection.test.d.ts +0 -2
- package/dist/postgres/postgres-test-connection.test.d.ts.map +0 -1
- package/dist/postgres/postgres-test-connection.test.js +0 -68
- package/dist/postgres/postgres-test-connection.test.js.map +0 -1
- package/dist/postgres/postgres.test.d.ts +0 -2
- package/dist/postgres/postgres.test.d.ts.map +0 -1
- package/dist/postgres/postgres.test.js +0 -497
- package/dist/postgres/postgres.test.js.map +0 -1
- package/dist/streams/list-stream.test.d.ts +0 -2
- package/dist/streams/list-stream.test.d.ts.map +0 -1
- package/dist/streams/list-stream.test.js +0 -169
- package/dist/streams/list-stream.test.js.map +0 -1
- package/dist/zoho-crm/zoho-crm-client.test.d.ts +0 -2
- package/dist/zoho-crm/zoho-crm-client.test.d.ts.map +0 -1
- package/dist/zoho-crm/zoho-crm-client.test.js +0 -341
- package/dist/zoho-crm/zoho-crm-client.test.js.map +0 -1
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
|
2
|
-
import pg from 'pg';
|
|
3
|
-
import { getTestCredentials } from './test-config.js';
|
|
4
|
-
const { Client } = pg;
|
|
5
|
-
describe('PostgreSQL Test Database Connection', () => {
|
|
6
|
-
let client;
|
|
7
|
-
beforeAll(async () => {
|
|
8
|
-
const credentials = getTestCredentials();
|
|
9
|
-
client = new Client(credentials);
|
|
10
|
-
// Wait for database to be ready (retry logic)
|
|
11
|
-
let attempts = 0;
|
|
12
|
-
const maxAttempts = 30;
|
|
13
|
-
while (attempts < maxAttempts) {
|
|
14
|
-
try {
|
|
15
|
-
await client.connect();
|
|
16
|
-
break;
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
attempts++;
|
|
20
|
-
if (attempts >= maxAttempts) {
|
|
21
|
-
throw new Error(`Failed to connect to test database after ${maxAttempts} attempts: ${error}`);
|
|
22
|
-
}
|
|
23
|
-
// Wait 1 second before retrying
|
|
24
|
-
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
afterAll(async () => {
|
|
29
|
-
if (client) {
|
|
30
|
-
await client.end();
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
it('should connect to the test database', async () => {
|
|
34
|
-
const result = await client.query('SELECT NOW() as current_time');
|
|
35
|
-
expect(result.rows).toHaveLength(1);
|
|
36
|
-
expect(result.rows[0].current_time).toBeInstanceOf(Date);
|
|
37
|
-
});
|
|
38
|
-
it('should be able to create and drop a test table', async () => {
|
|
39
|
-
const tableName = 'test_connection_table';
|
|
40
|
-
// Create table
|
|
41
|
-
await client.query(`
|
|
42
|
-
CREATE TABLE IF NOT EXISTS ${tableName} (
|
|
43
|
-
id SERIAL PRIMARY KEY,
|
|
44
|
-
name TEXT NOT NULL,
|
|
45
|
-
created_at TIMESTAMP DEFAULT NOW()
|
|
46
|
-
)
|
|
47
|
-
`);
|
|
48
|
-
// Insert test data
|
|
49
|
-
const insertResult = await client.query(`INSERT INTO ${tableName} (name) VALUES ($1) RETURNING id`, ['test_record']);
|
|
50
|
-
expect(insertResult.rows).toHaveLength(1);
|
|
51
|
-
expect(insertResult.rows[0].id).toBeDefined();
|
|
52
|
-
// Query test data
|
|
53
|
-
const selectResult = await client.query(`SELECT * FROM ${tableName} WHERE name = $1`, ['test_record']);
|
|
54
|
-
expect(selectResult.rows).toHaveLength(1);
|
|
55
|
-
expect(selectResult.rows[0].name).toBe('test_record');
|
|
56
|
-
// Clean up
|
|
57
|
-
await client.query(`DROP TABLE ${tableName}`);
|
|
58
|
-
});
|
|
59
|
-
it('should have the correct database name', async () => {
|
|
60
|
-
const result = await client.query('SELECT current_database()');
|
|
61
|
-
expect(result.rows[0].current_database).toBe('clarity_test');
|
|
62
|
-
});
|
|
63
|
-
it('should have the correct user permissions', async () => {
|
|
64
|
-
const result = await client.query('SELECT current_user');
|
|
65
|
-
expect(result.rows[0].current_user).toBe('test_user');
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
//# sourceMappingURL=postgres-test-connection.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-test-connection.test.js","sourceRoot":"","sources":["../../src/postgres/postgres-test-connection.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.test.d.ts","sourceRoot":"","sources":["../../src/postgres/postgres.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,497 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeAll, afterAll, beforeEach } from 'vitest';
|
|
2
|
-
import pg from 'pg';
|
|
3
|
-
import { fillTables } from './postgres.js';
|
|
4
|
-
import { getTestCredentials } from './test-config.js';
|
|
5
|
-
const { Client } = pg;
|
|
6
|
-
describe('PostgreSQL Functions', () => {
|
|
7
|
-
let client;
|
|
8
|
-
const credentials = getTestCredentials();
|
|
9
|
-
beforeAll(async () => {
|
|
10
|
-
client = new Client(credentials);
|
|
11
|
-
await client.connect();
|
|
12
|
-
// Verify database timezone is UTC as expected
|
|
13
|
-
const timezoneResult = await client.query('SHOW timezone');
|
|
14
|
-
expect(timezoneResult.rows[0].TimeZone).toBe('UTC');
|
|
15
|
-
});
|
|
16
|
-
afterAll(async () => {
|
|
17
|
-
await client.end();
|
|
18
|
-
});
|
|
19
|
-
beforeEach(async () => {
|
|
20
|
-
// Clean up any test tables
|
|
21
|
-
const tables = await client.query(`
|
|
22
|
-
SELECT tablename FROM pg_tables
|
|
23
|
-
WHERE schemaname = 'public' AND tablename LIKE 'test_%'
|
|
24
|
-
`);
|
|
25
|
-
for (const table of tables.rows) {
|
|
26
|
-
await client.query(`DROP TABLE IF EXISTS ${table.tablename}`);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
describe('sqlTableName (via table creation)', () => {
|
|
30
|
-
it('should convert table names to lowercase with prefix', async () => {
|
|
31
|
-
const testCases = [
|
|
32
|
-
{ input: 'Users', expected: 'test_users' },
|
|
33
|
-
{ input: 'CamelCase', expected: 'test_camelcase' },
|
|
34
|
-
{ input: 'UPPERCASE', expected: 'test_uppercase' }
|
|
35
|
-
];
|
|
36
|
-
for (const { input, expected } of testCases) {
|
|
37
|
-
await fillTables({
|
|
38
|
-
auth: credentials,
|
|
39
|
-
tablesRows: [{
|
|
40
|
-
schema: { name: input, columns: [{ name: 'id', type: 'id' }] },
|
|
41
|
-
rows: []
|
|
42
|
-
}],
|
|
43
|
-
tablesPrefix: 'test_'
|
|
44
|
-
});
|
|
45
|
-
// Check if table was created with expected name
|
|
46
|
-
const result = await client.query(`
|
|
47
|
-
SELECT tablename FROM pg_tables
|
|
48
|
-
WHERE schemaname = 'public' AND tablename = $1
|
|
49
|
-
`, [expected]);
|
|
50
|
-
expect(result.rows).toHaveLength(1);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
describe('sqlColumnName (via column creation)', () => {
|
|
55
|
-
it('should convert column names to lowercase and replace special characters', async () => {
|
|
56
|
-
// Test one case at a time to see exactly what's happening
|
|
57
|
-
await fillTables({
|
|
58
|
-
auth: credentials,
|
|
59
|
-
tablesRows: [{
|
|
60
|
-
schema: {
|
|
61
|
-
name: 'column_test_simple',
|
|
62
|
-
columns: [
|
|
63
|
-
{ name: 'id', type: 'id' },
|
|
64
|
-
{ name: 'FirstName', type: 'string' }
|
|
65
|
-
]
|
|
66
|
-
},
|
|
67
|
-
rows: []
|
|
68
|
-
}],
|
|
69
|
-
tablesPrefix: 'test_'
|
|
70
|
-
});
|
|
71
|
-
// Check what columns were created
|
|
72
|
-
const columns = await client.query(`
|
|
73
|
-
SELECT column_name FROM information_schema.columns
|
|
74
|
-
WHERE table_name = 'test_column_test_simple'
|
|
75
|
-
ORDER BY ordinal_position
|
|
76
|
-
`);
|
|
77
|
-
expect(columns.rows.map(r => r.column_name)).toEqual(['id', 'firstname']);
|
|
78
|
-
});
|
|
79
|
-
it('should handle special characters in column names', async () => {
|
|
80
|
-
await fillTables({
|
|
81
|
-
auth: credentials,
|
|
82
|
-
tablesRows: [{
|
|
83
|
-
schema: {
|
|
84
|
-
name: 'column_test_special',
|
|
85
|
-
columns: [
|
|
86
|
-
{ name: 'id', type: 'id' },
|
|
87
|
-
{ name: 'Email Address', type: 'string' },
|
|
88
|
-
{ name: 'Phone#Number', type: 'string' }
|
|
89
|
-
]
|
|
90
|
-
},
|
|
91
|
-
rows: []
|
|
92
|
-
}],
|
|
93
|
-
tablesPrefix: 'test_'
|
|
94
|
-
});
|
|
95
|
-
const columns = await client.query(`
|
|
96
|
-
SELECT column_name FROM information_schema.columns
|
|
97
|
-
WHERE table_name = 'test_column_test_special'
|
|
98
|
-
ORDER BY ordinal_position
|
|
99
|
-
`);
|
|
100
|
-
expect(columns.rows.map(r => r.column_name)).toEqual(['id', 'email_address', 'phone_number']);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
describe('sqlTypeName (via column data types)', () => {
|
|
104
|
-
it('should map all data types to correct PostgreSQL types', async () => {
|
|
105
|
-
await fillTables({
|
|
106
|
-
auth: credentials,
|
|
107
|
-
tablesRows: [{
|
|
108
|
-
schema: {
|
|
109
|
-
name: 'type_mapping_test',
|
|
110
|
-
columns: [
|
|
111
|
-
{ name: 'id_field', type: 'id' },
|
|
112
|
-
{ name: 'string_field', type: 'string' },
|
|
113
|
-
{ name: 'number_field', type: 'number' },
|
|
114
|
-
{ name: 'currency_field', type: 'currency' },
|
|
115
|
-
{ name: 'date_field', type: 'date' },
|
|
116
|
-
{ name: 'datetime_field', type: 'datetime' },
|
|
117
|
-
{ name: 'bool_field', type: 'bool' },
|
|
118
|
-
{ name: 'json_field', type: 'json' },
|
|
119
|
-
{ name: 'unknown_field', type: 'unknown' }
|
|
120
|
-
]
|
|
121
|
-
},
|
|
122
|
-
rows: []
|
|
123
|
-
}],
|
|
124
|
-
tablesPrefix: 'test_'
|
|
125
|
-
});
|
|
126
|
-
// Query the PostgreSQL information schema to check column data types
|
|
127
|
-
const columnTypes = await client.query(`
|
|
128
|
-
SELECT column_name, data_type, numeric_precision, numeric_scale
|
|
129
|
-
FROM information_schema.columns
|
|
130
|
-
WHERE table_name = 'test_type_mapping_test'
|
|
131
|
-
ORDER BY ordinal_position
|
|
132
|
-
`);
|
|
133
|
-
const types = columnTypes.rows.reduce((acc, row) => {
|
|
134
|
-
acc[row.column_name] = {
|
|
135
|
-
type: row.data_type,
|
|
136
|
-
precision: row.numeric_precision,
|
|
137
|
-
scale: row.numeric_scale
|
|
138
|
-
};
|
|
139
|
-
return acc;
|
|
140
|
-
}, {});
|
|
141
|
-
// Verify each mapped type
|
|
142
|
-
expect(types.id_field.type).toBe('numeric');
|
|
143
|
-
expect(types.id_field.precision).toBe(20);
|
|
144
|
-
expect(types.id_field.scale).toBe(0);
|
|
145
|
-
expect(types.string_field.type).toBe('text');
|
|
146
|
-
expect(types.number_field.type).toBe('numeric');
|
|
147
|
-
expect(types.number_field.precision).toBe(25);
|
|
148
|
-
expect(types.number_field.scale).toBe(5);
|
|
149
|
-
expect(types.currency_field.type).toBe('numeric');
|
|
150
|
-
expect(types.currency_field.precision).toBe(22);
|
|
151
|
-
expect(types.currency_field.scale).toBe(2);
|
|
152
|
-
expect(types.date_field.type).toBe('date');
|
|
153
|
-
expect(types.datetime_field.type).toBe('timestamp without time zone');
|
|
154
|
-
expect(types.bool_field.type).toBe('boolean');
|
|
155
|
-
expect(types.json_field.type).toBe('jsonb');
|
|
156
|
-
// Unknown type should fallback to TEXT
|
|
157
|
-
expect(types.unknown_field.type).toBe('text');
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
describe('possiblyCreateTableQuery (via table structure verification)', () => {
|
|
161
|
-
it('should create table with correct column types and ID unique constraint', async () => {
|
|
162
|
-
await fillTables({
|
|
163
|
-
auth: credentials,
|
|
164
|
-
tablesRows: [{
|
|
165
|
-
schema: {
|
|
166
|
-
name: 'query_test',
|
|
167
|
-
columns: [
|
|
168
|
-
{ name: 'id', type: 'id' },
|
|
169
|
-
{ name: 'User Name', type: 'string' },
|
|
170
|
-
{ name: 'price', type: 'currency' },
|
|
171
|
-
{ name: 'active', type: 'bool' }
|
|
172
|
-
]
|
|
173
|
-
},
|
|
174
|
-
rows: []
|
|
175
|
-
}],
|
|
176
|
-
tablesPrefix: 'test_'
|
|
177
|
-
});
|
|
178
|
-
// Verify the table structure created by possiblyCreateTableQuery
|
|
179
|
-
const tableInfo = await client.query(`
|
|
180
|
-
SELECT
|
|
181
|
-
column_name,
|
|
182
|
-
data_type,
|
|
183
|
-
numeric_precision,
|
|
184
|
-
numeric_scale,
|
|
185
|
-
is_nullable
|
|
186
|
-
FROM information_schema.columns
|
|
187
|
-
WHERE table_name = 'test_query_test'
|
|
188
|
-
ORDER BY ordinal_position
|
|
189
|
-
`);
|
|
190
|
-
expect(tableInfo.rows).toHaveLength(4);
|
|
191
|
-
const columns = tableInfo.rows.reduce((acc, row) => {
|
|
192
|
-
acc[row.column_name] = row;
|
|
193
|
-
return acc;
|
|
194
|
-
}, {});
|
|
195
|
-
// Verify column name transformations and types
|
|
196
|
-
expect(columns.id.data_type).toBe('numeric');
|
|
197
|
-
expect(columns.id.numeric_precision).toBe(20);
|
|
198
|
-
expect(columns.id.numeric_scale).toBe(0);
|
|
199
|
-
expect(columns.user_name.data_type).toBe('text');
|
|
200
|
-
expect(columns.price.data_type).toBe('numeric');
|
|
201
|
-
expect(columns.price.numeric_precision).toBe(22);
|
|
202
|
-
expect(columns.price.numeric_scale).toBe(2);
|
|
203
|
-
expect(columns.active.data_type).toBe('boolean');
|
|
204
|
-
// Verify ID unique constraint was created
|
|
205
|
-
const constraints = await client.query(`
|
|
206
|
-
SELECT constraint_name, constraint_type
|
|
207
|
-
FROM information_schema.table_constraints
|
|
208
|
-
WHERE table_name = 'test_query_test' AND constraint_type = 'UNIQUE'
|
|
209
|
-
`);
|
|
210
|
-
expect(constraints.rows).toHaveLength(1);
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
describe('prepareTable (via different prepare modes)', () => {
|
|
214
|
-
const testSchema = {
|
|
215
|
-
name: 'prepare_test',
|
|
216
|
-
columns: [
|
|
217
|
-
{ name: 'id', type: 'id' },
|
|
218
|
-
{ name: 'name', type: 'string' },
|
|
219
|
-
{ name: 'status', type: 'string' }
|
|
220
|
-
]
|
|
221
|
-
};
|
|
222
|
-
beforeEach(async () => {
|
|
223
|
-
// Create and populate test table for prepare mode testing
|
|
224
|
-
await fillTables({
|
|
225
|
-
auth: credentials,
|
|
226
|
-
tablesRows: [{
|
|
227
|
-
schema: testSchema,
|
|
228
|
-
rows: [
|
|
229
|
-
[1, 'Initial Record', 'active'],
|
|
230
|
-
[2, 'Another Record', 'inactive']
|
|
231
|
-
]
|
|
232
|
-
}],
|
|
233
|
-
tablesPrefix: 'test_'
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
it('should handle deleteAll prepare mode (default)', async () => {
|
|
237
|
-
// Add more data
|
|
238
|
-
await fillTables({
|
|
239
|
-
auth: credentials,
|
|
240
|
-
tablesRows: [{
|
|
241
|
-
schema: testSchema,
|
|
242
|
-
rows: [[3, 'New Record', 'active']]
|
|
243
|
-
}],
|
|
244
|
-
tablesPrefix: 'test_'
|
|
245
|
-
});
|
|
246
|
-
// Verify only new data exists (deleteAll cleared previous data)
|
|
247
|
-
const result = await client.query('SELECT * FROM test_prepare_test ORDER BY id');
|
|
248
|
-
expect(result.rows).toHaveLength(1);
|
|
249
|
-
expect(result.rows[0].name).toBe('New Record');
|
|
250
|
-
});
|
|
251
|
-
it('should always use deleteAll mode (current implementation)', async () => {
|
|
252
|
-
// Verify that existing data gets cleared with each call
|
|
253
|
-
// Add first batch of data
|
|
254
|
-
await fillTables({
|
|
255
|
-
auth: credentials,
|
|
256
|
-
tablesRows: [{
|
|
257
|
-
schema: testSchema,
|
|
258
|
-
rows: [[3, 'First Batch', 'pending']]
|
|
259
|
-
}],
|
|
260
|
-
tablesPrefix: 'test_'
|
|
261
|
-
});
|
|
262
|
-
// Add second batch - should replace the first
|
|
263
|
-
await fillTables({
|
|
264
|
-
auth: credentials,
|
|
265
|
-
tablesRows: [{
|
|
266
|
-
schema: testSchema,
|
|
267
|
-
rows: [[4, 'Second Batch', 'active']]
|
|
268
|
-
}],
|
|
269
|
-
tablesPrefix: 'test_'
|
|
270
|
-
});
|
|
271
|
-
const result = await client.query('SELECT * FROM test_prepare_test ORDER BY id');
|
|
272
|
-
// Current implementation always deletes existing data
|
|
273
|
-
expect(result.rows).toHaveLength(1);
|
|
274
|
-
expect(result.rows[0].name).toBe('Second Batch');
|
|
275
|
-
expect(result.rows[0].id).toBe('4');
|
|
276
|
-
});
|
|
277
|
-
it('should create table if it does not exist', async () => {
|
|
278
|
-
// Test with completely new table name
|
|
279
|
-
await fillTables({
|
|
280
|
-
auth: credentials,
|
|
281
|
-
tablesRows: [{
|
|
282
|
-
schema: {
|
|
283
|
-
name: 'new_table_test',
|
|
284
|
-
columns: [{ name: 'id', type: 'id' }, { name: 'data', type: 'string' }]
|
|
285
|
-
},
|
|
286
|
-
rows: [[1, 'test data']]
|
|
287
|
-
}],
|
|
288
|
-
tablesPrefix: 'test_'
|
|
289
|
-
});
|
|
290
|
-
// Verify table was created and data inserted
|
|
291
|
-
const result = await client.query('SELECT * FROM test_new_table_test');
|
|
292
|
-
expect(result.rows).toHaveLength(1);
|
|
293
|
-
expect(result.rows[0].data).toBe('test data');
|
|
294
|
-
});
|
|
295
|
-
});
|
|
296
|
-
describe('insertTableData (via conflict resolution)', () => {
|
|
297
|
-
const conflictSchema = {
|
|
298
|
-
name: 'conflict_test',
|
|
299
|
-
columns: [
|
|
300
|
-
{ name: 'id', type: 'id' },
|
|
301
|
-
{ name: 'name', type: 'string' },
|
|
302
|
-
{ name: 'value', type: 'number' },
|
|
303
|
-
{ name: 'updated_at', type: 'datetime' }
|
|
304
|
-
]
|
|
305
|
-
};
|
|
306
|
-
it('should insert new records without conflicts', async () => {
|
|
307
|
-
await fillTables({
|
|
308
|
-
auth: credentials,
|
|
309
|
-
tablesRows: [{
|
|
310
|
-
schema: conflictSchema,
|
|
311
|
-
rows: [
|
|
312
|
-
[1, 'Record One', 100, new Date('2023-01-01T10:00:00Z')],
|
|
313
|
-
[2, 'Record Two', 200, new Date('2023-01-02T10:00:00Z')]
|
|
314
|
-
]
|
|
315
|
-
}],
|
|
316
|
-
tablesPrefix: 'test_'
|
|
317
|
-
});
|
|
318
|
-
const result = await client.query('SELECT * FROM test_conflict_test ORDER BY id');
|
|
319
|
-
expect(result.rows).toHaveLength(2);
|
|
320
|
-
expect(result.rows[0].name).toBe('Record One');
|
|
321
|
-
expect(result.rows[1].name).toBe('Record Two');
|
|
322
|
-
});
|
|
323
|
-
it('should handle conflicts with ON CONFLICT DO UPDATE (upsert)', async () => {
|
|
324
|
-
// Insert initial data
|
|
325
|
-
await fillTables({
|
|
326
|
-
auth: credentials,
|
|
327
|
-
tablesRows: [{
|
|
328
|
-
schema: conflictSchema,
|
|
329
|
-
rows: [
|
|
330
|
-
[1, 'Original Name', 100, new Date('2023-01-01T10:00:00Z')],
|
|
331
|
-
[2, 'Another Record', 200, new Date('2023-01-02T10:00:00Z')]
|
|
332
|
-
]
|
|
333
|
-
}],
|
|
334
|
-
tablesPrefix: 'test_'
|
|
335
|
-
});
|
|
336
|
-
// Insert conflicting data (same ID, different values) - should update existing
|
|
337
|
-
await fillTables({
|
|
338
|
-
auth: credentials,
|
|
339
|
-
tablesRows: [{
|
|
340
|
-
schema: conflictSchema,
|
|
341
|
-
rows: [
|
|
342
|
-
[1, 'Updated Name', 150, new Date('2023-01-03T10:00:00Z')],
|
|
343
|
-
[3, 'New Record', 300, new Date('2023-01-04T10:00:00Z')]
|
|
344
|
-
]
|
|
345
|
-
}],
|
|
346
|
-
tablesPrefix: 'test_'
|
|
347
|
-
});
|
|
348
|
-
const result = await client.query('SELECT * FROM test_conflict_test ORDER BY id');
|
|
349
|
-
expect(result.rows).toHaveLength(2); // Only 2 records due to deleteAll mode clearing before insert
|
|
350
|
-
// Verify the data that was inserted in the second call
|
|
351
|
-
const recordOne = result.rows.find(r => r.id === '1');
|
|
352
|
-
const recordThree = result.rows.find(r => r.id === '3');
|
|
353
|
-
expect(recordOne.name).toBe('Updated Name');
|
|
354
|
-
expect(recordOne.value).toBe('150.00000');
|
|
355
|
-
expect(recordThree.name).toBe('New Record');
|
|
356
|
-
expect(recordThree.value).toBe('300.00000');
|
|
357
|
-
});
|
|
358
|
-
it('should handle empty row insertion', async () => {
|
|
359
|
-
await fillTables({
|
|
360
|
-
auth: credentials,
|
|
361
|
-
tablesRows: [{
|
|
362
|
-
schema: conflictSchema,
|
|
363
|
-
rows: []
|
|
364
|
-
}],
|
|
365
|
-
tablesPrefix: 'test_'
|
|
366
|
-
});
|
|
367
|
-
const result = await client.query('SELECT * FROM test_conflict_test');
|
|
368
|
-
expect(result.rows).toHaveLength(0);
|
|
369
|
-
});
|
|
370
|
-
it('should properly format INSERT query with all column types', async () => {
|
|
371
|
-
// This test verifies the SQL generation includes proper column mapping
|
|
372
|
-
await fillTables({
|
|
373
|
-
auth: credentials,
|
|
374
|
-
tablesRows: [{
|
|
375
|
-
schema: {
|
|
376
|
-
name: 'query_format_test',
|
|
377
|
-
columns: [
|
|
378
|
-
{ name: 'id', type: 'id' },
|
|
379
|
-
{ name: 'Special Column', type: 'string' },
|
|
380
|
-
{ name: 'price', type: 'currency' }
|
|
381
|
-
]
|
|
382
|
-
},
|
|
383
|
-
rows: [[1, 'Test Value', 99.99]]
|
|
384
|
-
}],
|
|
385
|
-
tablesPrefix: 'test_'
|
|
386
|
-
});
|
|
387
|
-
// Verify data was inserted correctly despite special column name
|
|
388
|
-
const result = await client.query('SELECT * FROM test_query_format_test');
|
|
389
|
-
expect(result.rows).toHaveLength(1);
|
|
390
|
-
expect(result.rows[0].special_column).toBe('Test Value');
|
|
391
|
-
expect(result.rows[0].price).toBe('99.99');
|
|
392
|
-
});
|
|
393
|
-
});
|
|
394
|
-
describe('fillTables', () => {
|
|
395
|
-
const createTestData = (tableName, rows) => ({
|
|
396
|
-
schema: {
|
|
397
|
-
name: tableName,
|
|
398
|
-
columns: [
|
|
399
|
-
{ name: 'id', type: 'id' },
|
|
400
|
-
{ name: 'name', type: 'string' },
|
|
401
|
-
{ name: 'email', type: 'string' }
|
|
402
|
-
]
|
|
403
|
-
},
|
|
404
|
-
rows
|
|
405
|
-
});
|
|
406
|
-
it('should create table and insert data', async () => {
|
|
407
|
-
const tableRows = [createTestData('users', [
|
|
408
|
-
[1, 'John Doe', 'john@example.com'],
|
|
409
|
-
[2, 'Jane Smith', 'jane@example.com']
|
|
410
|
-
])];
|
|
411
|
-
await fillTables({
|
|
412
|
-
auth: credentials,
|
|
413
|
-
tablesRows: tableRows,
|
|
414
|
-
tablesPrefix: 'test_'
|
|
415
|
-
});
|
|
416
|
-
const result = await client.query('SELECT * FROM test_users ORDER BY id');
|
|
417
|
-
expect(result.rows).toHaveLength(2);
|
|
418
|
-
expect(result.rows[0]).toEqual({ id: '1', name: 'John Doe', email: 'john@example.com' });
|
|
419
|
-
expect(result.rows[1]).toEqual({ id: '2', name: 'Jane Smith', email: 'jane@example.com' });
|
|
420
|
-
});
|
|
421
|
-
it('should handle multiple tables', async () => {
|
|
422
|
-
const tableRows = [
|
|
423
|
-
createTestData('users', [[1, 'John', 'john@example.com']]),
|
|
424
|
-
createTestData('products', [[1, 'Widget', 'widget@store.com']])
|
|
425
|
-
];
|
|
426
|
-
await fillTables({
|
|
427
|
-
auth: credentials,
|
|
428
|
-
tablesRows: tableRows,
|
|
429
|
-
tablesPrefix: 'test_'
|
|
430
|
-
});
|
|
431
|
-
const usersResult = await client.query('SELECT * FROM test_users');
|
|
432
|
-
const productsResult = await client.query('SELECT * FROM test_products');
|
|
433
|
-
expect(usersResult.rows).toHaveLength(1);
|
|
434
|
-
expect(productsResult.rows).toHaveLength(1);
|
|
435
|
-
expect(usersResult.rows[0].name).toBe('John');
|
|
436
|
-
expect(productsResult.rows[0].name).toBe('Widget');
|
|
437
|
-
});
|
|
438
|
-
it('should handle empty data', async () => {
|
|
439
|
-
const tableRows = [createTestData('empty', [])];
|
|
440
|
-
await fillTables({
|
|
441
|
-
auth: credentials,
|
|
442
|
-
tablesRows: tableRows,
|
|
443
|
-
tablesPrefix: 'test_'
|
|
444
|
-
});
|
|
445
|
-
const result = await client.query('SELECT * FROM test_empty');
|
|
446
|
-
expect(result.rows).toHaveLength(0);
|
|
447
|
-
});
|
|
448
|
-
it('should handle all data types', async () => {
|
|
449
|
-
// Use specific dates for deterministic testing
|
|
450
|
-
const inputDate = new Date('2023-06-15 00:00:00');
|
|
451
|
-
const inputDateTime = new Date('2023-06-15 14:30:45');
|
|
452
|
-
const testJson = '{"key":"value","nested":{"array":[1,2,3]}}';
|
|
453
|
-
const tableRows = [{
|
|
454
|
-
schema: {
|
|
455
|
-
name: 'datatypes',
|
|
456
|
-
columns: [
|
|
457
|
-
{ name: 'id', type: 'id' },
|
|
458
|
-
{ name: 'text', type: 'string' },
|
|
459
|
-
{ name: 'amount', type: 'currency' },
|
|
460
|
-
{ name: 'count', type: 'number' },
|
|
461
|
-
{ name: 'active', type: 'bool' },
|
|
462
|
-
{ name: 'created_date', type: 'date' },
|
|
463
|
-
{ name: 'updated_at', type: 'datetime' },
|
|
464
|
-
{ name: 'metadata', type: 'json' }
|
|
465
|
-
]
|
|
466
|
-
},
|
|
467
|
-
rows: [[
|
|
468
|
-
1,
|
|
469
|
-
'Test Text',
|
|
470
|
-
99.99,
|
|
471
|
-
42,
|
|
472
|
-
true,
|
|
473
|
-
inputDate,
|
|
474
|
-
inputDateTime,
|
|
475
|
-
testJson
|
|
476
|
-
]]
|
|
477
|
-
}];
|
|
478
|
-
await fillTables({
|
|
479
|
-
auth: credentials,
|
|
480
|
-
tablesRows: tableRows,
|
|
481
|
-
tablesPrefix: 'test_'
|
|
482
|
-
});
|
|
483
|
-
const result = await client.query('SELECT * FROM test_datatypes');
|
|
484
|
-
expect(result.rows).toHaveLength(1);
|
|
485
|
-
const row = result.rows[0];
|
|
486
|
-
expect(row.id).toBe('1');
|
|
487
|
-
expect(row.text).toBe('Test Text');
|
|
488
|
-
expect(row.amount).toBe('99.99');
|
|
489
|
-
expect(row.count).toBe('42.00000');
|
|
490
|
-
expect(row.active).toBe(true);
|
|
491
|
-
expect(row.created_date.toString()).toBe(inputDate.toString());
|
|
492
|
-
expect(row.updated_at.toString()).toBe(inputDateTime.toString());
|
|
493
|
-
expect(JSON.stringify(row.metadata)).toBe(testJson);
|
|
494
|
-
});
|
|
495
|
-
});
|
|
496
|
-
});
|
|
497
|
-
//# sourceMappingURL=postgres.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.test.js","sourceRoot":"","sources":["../../src/postgres/postgres.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-stream.test.d.ts","sourceRoot":"","sources":["../../src/streams/list-stream.test.ts"],"names":[],"mappings":""}
|