@kwiz/node 1.0.14 → 1.0.17

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.
@@ -1,135 +1,135 @@
1
- import assert from 'assert/strict';
2
- import test from 'node:test';
3
- import { IsAzuriteRunning } from "./common";
4
- import { ODataOperators } from "./odata";
5
- import { ConfigureTableStorage, Table, addItem, ensureTable } from "./table-storage";
6
-
7
- test('testTableStorage', async t => {
8
- if (!(await IsAzuriteRunning())) {
9
- console.log('Skipping table-storage tests - azurite is not running.');
10
- return;
11
- }
12
- //configure storage
13
- ConfigureTableStorage({ connectionString: "UseDevelopmentStorage=true" });
14
-
15
- const tableName = "TestTable";
16
- const table = new Table(tableName, {
17
- getKeys: p => p,
18
- transform: {
19
- load: v => ({ ...v, schedule: JSON.parse(v.schedule) }),
20
- save: v => ({ ...v, schedule: JSON.stringify(v.schedule) })
21
- }
22
- });
23
- const partitionKey = "PK1";
24
- const partitionKey2 = "PK2";
25
- const rowKey1 = "0b8612bb-377d-4897-be8f-a532a1ad3e73|d2e32b93-c096-431c-8a79-fcce9a4d7bce";
26
- const rowKey2 = "0b8612bb-377d-4897-be8f-a532a1ad3e73|cd24aa15-0d03-4892-bb46-af32e5fb9361";
27
- //start fresh
28
- let result = await table.delete();
29
- //don't test this - it might have a table to delete and might not... depending if cleanup didn't work last run
30
- //await t.test("Delete table", t => assert.strictEqual(result, true));
31
-
32
- //provoke table name not allowed
33
- result = await ensureTable("T2");
34
- await t.test("Table name not allowed", t => assert.strictEqual(result, false));
35
-
36
- //create table
37
- result = await table.ensure();
38
- await t.test("Create table", t => assert.strictEqual(result, true));
39
-
40
- //provoke table already exists
41
- result = await table.ensure();
42
- await t.test("Ensure existing table", t => assert.strictEqual(result, true));
43
-
44
- //add item
45
- result = await table.addItem({
46
- partitionKey: partitionKey,
47
- rowKey: rowKey1,
48
- list: "1bd32599-375e-4c98-9e1c-ce9dd2f2e17d",
49
- action: "6b964dd7-6e62-42f6-89e4-5e79d6b6cbb0",
50
- nextUTC: "2023010105",
51
- schedule: { days: 4, hours: [1, 2, 3] }
52
- });
53
- await t.test("Create item 1", t => assert.strictEqual(result, true));
54
-
55
- result = await table.addItem({
56
- partitionKey: partitionKey,
57
- rowKey: rowKey2,
58
- list: "1bd32599-375e-4c98-9e1c-ce9dd2f2e17d",
59
- action: "fab4094b-c000-4ff4-bb52-0f8538b2bc49",
60
- nextUTC: "2023010105",
61
- schedule: { days: 4, hours: [1, 2, 3] }
62
- });
63
- await t.test("Create item 2", t => assert.strictEqual(result, true));
64
-
65
- result = await table.addItem({
66
- partitionKey: partitionKey2,
67
- rowKey: rowKey1,
68
- list: "b98211e2-809a-4761-b928-559eddc28dfc",
69
- action: "d20196e5-feb9-4202-bd03-718b49bf029e",
70
- nextUTC: "2023010105",
71
- schedule: { days: 4, hours: [1, 2, 3] }
72
- });
73
- await t.test("Create item in second partition", t => assert.strictEqual(result, true));
74
-
75
- //provoke add second item with same key
76
- result = await table.addItem({
77
- partitionKey: partitionKey,
78
- rowKey: rowKey1,
79
- list: "1bd32599-375e-4c98-9e1c-ce9dd2f2e17d",
80
- action: "6b964dd7-6e62-42f6-89e4-5e79d6b6cbb0",
81
- nextUTC: "2023010105",
82
- schedule: { days: 4, hours: [1, 2, 3] }
83
- });
84
- await t.test("Create item with existing key", t => assert.strictEqual(result, false));
85
-
86
- //provoke add second item with same key
87
- result = await table.upsertItem({
88
- partitionKey: partitionKey,
89
- rowKey: rowKey1,
90
- list: "1bd32599-375e-4c98-9e1c-ce9dd2f2e17d",
91
- action: "6b964dd7-6e62-42f6-89e4-5e79d6b6cbb0",
92
- nextUTC: "2023020202",
93
- schedule: { days: 4, hours: [1, 2, 3] }
94
- });
95
- await t.test("Update item 1", t => assert.strictEqual(result, true));
96
-
97
- //provoke add item to table that does not exist
98
- result = await addItem(tableName + "DoeNotExist", {
99
- partitionKey: partitionKey,
100
- rowKey: rowKey1,
101
- list: "1bd32599-375e-4c98-9e1c-ce9dd2f2e17d",
102
- action: "6b964dd7-6e62-42f6-89e4-5e79d6b6cbb0",
103
- nextUTC: "2023020202",
104
- schedule: { days: 4, hours: [1, 2, 3] }
105
- });
106
- await t.test("Create item in table that does not exist", t => assert.strictEqual(result, false));
107
-
108
- let allItems = await table.getItems();
109
- await t.test("Get items", t => assert.strictEqual(allItems.length, 3));
110
-
111
- //find items by partition
112
- let partitionItems = await table.getItems({
113
- filterStatment: {
114
- filters: [
115
- {
116
- property: "partitionKey",
117
- operator: ODataOperators.equal,
118
- value: partitionKey
119
- }
120
- ]
121
- }
122
- });
123
-
124
- await t.test("Get items with filter", t => assert.strictEqual(partitionItems.length, 2));
125
- await t.test("Update values", t => assert.strictEqual(partitionItems[1].nextUTC, "2023020202"));
126
-
127
- let deleteResult = await table.deleteItem({ partitionKey: partitionKey, rowKey: rowKey1 });
128
- await t.test("delete item", t => assert.strictEqual(deleteResult, true));
129
- deleteResult = await table.deleteItem({ partitionKey: partitionKey, rowKey: rowKey1 });
130
- await t.test("delete item that was already deleted", t => assert.strictEqual(deleteResult, true));
131
-
132
- //cleanup
133
- result = await table.delete();
134
- await t.test("Delete table", t => assert.strictEqual(result, true));
1
+ import assert from 'assert/strict';
2
+ import test from 'node:test';
3
+ import { IsAzuriteRunning } from "./common";
4
+ import { ODataOperators } from "./odata";
5
+ import { ConfigureTableStorage, Table, addItem, ensureTable } from "./table-storage";
6
+
7
+ test('testTableStorage', async t => {
8
+ if (!(await IsAzuriteRunning())) {
9
+ console.log('Skipping table-storage tests - azurite is not running.');
10
+ return;
11
+ }
12
+ //configure storage
13
+ ConfigureTableStorage({ connectionString: "UseDevelopmentStorage=true" });
14
+
15
+ const tableName = "TestTable";
16
+ const table = new Table(tableName, {
17
+ getKeys: p => p,
18
+ transform: {
19
+ load: v => ({ ...v, schedule: JSON.parse(v.schedule) }),
20
+ save: v => ({ ...v, schedule: JSON.stringify(v.schedule) })
21
+ }
22
+ });
23
+ const partitionKey = "PK1";
24
+ const partitionKey2 = "PK2";
25
+ const rowKey1 = "0b8612bb-377d-4897-be8f-a532a1ad3e73|d2e32b93-c096-431c-8a79-fcce9a4d7bce";
26
+ const rowKey2 = "0b8612bb-377d-4897-be8f-a532a1ad3e73|cd24aa15-0d03-4892-bb46-af32e5fb9361";
27
+ //start fresh
28
+ let result = await table.delete();
29
+ //don't test this - it might have a table to delete and might not... depending if cleanup didn't work last run
30
+ //await t.test("Delete table", t => assert.strictEqual(result, true));
31
+
32
+ //provoke table name not allowed
33
+ result = await ensureTable("T2");
34
+ await t.test("Table name not allowed", t => assert.strictEqual(result, false));
35
+
36
+ //create table
37
+ result = await table.ensure();
38
+ await t.test("Create table", t => assert.strictEqual(result, true));
39
+
40
+ //provoke table already exists
41
+ result = await table.ensure();
42
+ await t.test("Ensure existing table", t => assert.strictEqual(result, true));
43
+
44
+ //add item
45
+ result = await table.addItem({
46
+ partitionKey: partitionKey,
47
+ rowKey: rowKey1,
48
+ list: "1bd32599-375e-4c98-9e1c-ce9dd2f2e17d",
49
+ action: "6b964dd7-6e62-42f6-89e4-5e79d6b6cbb0",
50
+ nextUTC: "2023010105",
51
+ schedule: { days: 4, hours: [1, 2, 3] }
52
+ });
53
+ await t.test("Create item 1", t => assert.strictEqual(result, true));
54
+
55
+ result = await table.addItem({
56
+ partitionKey: partitionKey,
57
+ rowKey: rowKey2,
58
+ list: "1bd32599-375e-4c98-9e1c-ce9dd2f2e17d",
59
+ action: "fab4094b-c000-4ff4-bb52-0f8538b2bc49",
60
+ nextUTC: "2023010105",
61
+ schedule: { days: 4, hours: [1, 2, 3] }
62
+ });
63
+ await t.test("Create item 2", t => assert.strictEqual(result, true));
64
+
65
+ result = await table.addItem({
66
+ partitionKey: partitionKey2,
67
+ rowKey: rowKey1,
68
+ list: "b98211e2-809a-4761-b928-559eddc28dfc",
69
+ action: "d20196e5-feb9-4202-bd03-718b49bf029e",
70
+ nextUTC: "2023010105",
71
+ schedule: { days: 4, hours: [1, 2, 3] }
72
+ });
73
+ await t.test("Create item in second partition", t => assert.strictEqual(result, true));
74
+
75
+ //provoke add second item with same key
76
+ result = await table.addItem({
77
+ partitionKey: partitionKey,
78
+ rowKey: rowKey1,
79
+ list: "1bd32599-375e-4c98-9e1c-ce9dd2f2e17d",
80
+ action: "6b964dd7-6e62-42f6-89e4-5e79d6b6cbb0",
81
+ nextUTC: "2023010105",
82
+ schedule: { days: 4, hours: [1, 2, 3] }
83
+ });
84
+ await t.test("Create item with existing key", t => assert.strictEqual(result, false));
85
+
86
+ //provoke add second item with same key
87
+ result = await table.upsertItem({
88
+ partitionKey: partitionKey,
89
+ rowKey: rowKey1,
90
+ list: "1bd32599-375e-4c98-9e1c-ce9dd2f2e17d",
91
+ action: "6b964dd7-6e62-42f6-89e4-5e79d6b6cbb0",
92
+ nextUTC: "2023020202",
93
+ schedule: { days: 4, hours: [1, 2, 3] }
94
+ });
95
+ await t.test("Update item 1", t => assert.strictEqual(result, true));
96
+
97
+ //provoke add item to table that does not exist
98
+ result = await addItem(tableName + "DoeNotExist", {
99
+ partitionKey: partitionKey,
100
+ rowKey: rowKey1,
101
+ list: "1bd32599-375e-4c98-9e1c-ce9dd2f2e17d",
102
+ action: "6b964dd7-6e62-42f6-89e4-5e79d6b6cbb0",
103
+ nextUTC: "2023020202",
104
+ schedule: { days: 4, hours: [1, 2, 3] }
105
+ });
106
+ await t.test("Create item in table that does not exist", t => assert.strictEqual(result, false));
107
+
108
+ let allItems = await table.getItems();
109
+ await t.test("Get items", t => assert.strictEqual(allItems.length, 3));
110
+
111
+ //find items by partition
112
+ let partitionItems = await table.getItems({
113
+ filterStatment: {
114
+ filters: [
115
+ {
116
+ property: "partitionKey",
117
+ operator: ODataOperators.equal,
118
+ value: partitionKey
119
+ }
120
+ ]
121
+ }
122
+ });
123
+
124
+ await t.test("Get items with filter", t => assert.strictEqual(partitionItems.length, 2));
125
+ await t.test("Update values", t => assert.strictEqual(partitionItems[1].nextUTC, "2023020202"));
126
+
127
+ let deleteResult = await table.deleteItem({ partitionKey: partitionKey, rowKey: rowKey1 });
128
+ await t.test("delete item", t => assert.strictEqual(deleteResult, true));
129
+ deleteResult = await table.deleteItem({ partitionKey: partitionKey, rowKey: rowKey1 });
130
+ await t.test("delete item that was already deleted", t => assert.strictEqual(deleteResult, true));
131
+
132
+ //cleanup
133
+ result = await table.delete();
134
+ await t.test("Delete table", t => assert.strictEqual(result, true));
135
135
  });