@entity-access/entity-access 1.0.377 → 1.0.379
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/compiler/postgres/PostgreSqlMethodTransformer.d.ts.map +1 -1
- package/dist/compiler/postgres/PostgreSqlMethodTransformer.js +27 -1
- package/dist/compiler/postgres/PostgreSqlMethodTransformer.js.map +1 -1
- package/dist/compiler/sql-server/SqlServerSqlMethodTransformer.d.ts.map +1 -1
- package/dist/compiler/sql-server/SqlServerSqlMethodTransformer.js +26 -0
- package/dist/compiler/sql-server/SqlServerSqlMethodTransformer.js.map +1 -1
- package/dist/drivers/postgres/PostgreSqlDriver.d.ts.map +1 -1
- package/dist/drivers/postgres/PostgreSqlDriver.js +1 -0
- package/dist/drivers/postgres/PostgreSqlDriver.js.map +1 -1
- package/dist/model/EntityQuery.d.ts.map +1 -1
- package/dist/model/EntityQuery.js +10 -0
- package/dist/model/EntityQuery.js.map +1 -1
- package/dist/model/IFilterWithParameter.d.ts +5 -5
- package/dist/model/IFilterWithParameter.d.ts.map +1 -1
- package/dist/sql/ISql.d.ts +10 -0
- package/dist/sql/ISql.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/compiler/postgres/PostgreSqlMethodTransformer.ts +27 -1
- package/src/compiler/sql-server/SqlServerSqlMethodTransformer.ts +26 -0
- package/src/drivers/postgres/PostgreSqlDriver.ts +1 -0
- package/src/model/EntityQuery.ts +11 -1
- package/src/model/IFilterWithParameter.ts +5 -5
- package/src/sql/ISql.ts +11 -0
- package/dist/tests/TestConfig.d.ts +0 -6
- package/dist/tests/TestConfig.d.ts.map +0 -1
- package/dist/tests/TestConfig.js +0 -3
- package/dist/tests/TestConfig.js.map +0 -1
- package/dist/tests/db-tests/tests/check-constraint-test.d.ts +0 -3
- package/dist/tests/db-tests/tests/check-constraint-test.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/check-constraint-test.js +0 -25
- package/dist/tests/db-tests/tests/check-constraint-test.js.map +0 -1
- package/dist/tests/db-tests/tests/delete-items.d.ts +0 -3
- package/dist/tests/db-tests/tests/delete-items.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/delete-items.js +0 -25
- package/dist/tests/db-tests/tests/delete-items.js.map +0 -1
- package/dist/tests/db-tests/tests/filtered-include-items.d.ts +0 -3
- package/dist/tests/db-tests/tests/filtered-include-items.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/filtered-include-items.js +0 -19
- package/dist/tests/db-tests/tests/filtered-include-items.js.map +0 -1
- package/dist/tests/db-tests/tests/insert-into.d.ts +0 -3
- package/dist/tests/db-tests/tests/insert-into.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/insert-into.js +0 -17
- package/dist/tests/db-tests/tests/insert-into.js.map +0 -1
- package/dist/tests/db-tests/tests/multi-fk-tests.d.ts +0 -3
- package/dist/tests/db-tests/tests/multi-fk-tests.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/multi-fk-tests.js +0 -29
- package/dist/tests/db-tests/tests/multi-fk-tests.js.map +0 -1
- package/dist/tests/db-tests/tests/select-identity.d.ts +0 -3
- package/dist/tests/db-tests/tests/select-identity.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/select-identity.js +0 -16
- package/dist/tests/db-tests/tests/select-identity.js.map +0 -1
- package/dist/tests/db-tests/tests/select-inverse-one-to-one.d.ts +0 -3
- package/dist/tests/db-tests/tests/select-inverse-one-to-one.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/select-inverse-one-to-one.js +0 -27
- package/dist/tests/db-tests/tests/select-inverse-one-to-one.js.map +0 -1
- package/dist/tests/db-tests/tests/select-items-map.d.ts +0 -3
- package/dist/tests/db-tests/tests/select-items-map.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/select-items-map.js +0 -28
- package/dist/tests/db-tests/tests/select-items-map.js.map +0 -1
- package/dist/tests/db-tests/tests/select-items-sum.d.ts +0 -3
- package/dist/tests/db-tests/tests/select-items-sum.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/select-items-sum.js +0 -46
- package/dist/tests/db-tests/tests/select-items-sum.js.map +0 -1
- package/dist/tests/db-tests/tests/select-items.d.ts +0 -3
- package/dist/tests/db-tests/tests/select-items.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/select-items.js +0 -30
- package/dist/tests/db-tests/tests/select-items.js.map +0 -1
- package/dist/tests/db-tests/tests/select-map.d.ts +0 -3
- package/dist/tests/db-tests/tests/select-map.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/select-map.js +0 -12
- package/dist/tests/db-tests/tests/select-map.js.map +0 -1
- package/dist/tests/db-tests/tests/select-nested.d.ts +0 -3
- package/dist/tests/db-tests/tests/select-nested.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/select-nested.js +0 -25
- package/dist/tests/db-tests/tests/select-nested.js.map +0 -1
- package/dist/tests/db-tests/tests/select-parent.d.ts +0 -3
- package/dist/tests/db-tests/tests/select-parent.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/select-parent.js +0 -17
- package/dist/tests/db-tests/tests/select-parent.js.map +0 -1
- package/dist/tests/db-tests/tests/select-related.d.ts +0 -3
- package/dist/tests/db-tests/tests/select-related.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/select-related.js +0 -20
- package/dist/tests/db-tests/tests/select-related.js.map +0 -1
- package/dist/tests/db-tests/tests/update-items.d.ts +0 -3
- package/dist/tests/db-tests/tests/update-items.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/update-items.js +0 -31
- package/dist/tests/db-tests/tests/update-items.js.map +0 -1
- package/dist/tests/db-tests/tests/update-select.d.ts +0 -3
- package/dist/tests/db-tests/tests/update-select.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/update-select.js +0 -19
- package/dist/tests/db-tests/tests/update-select.js.map +0 -1
- package/dist/tests/db-tests/tests/upsert-test.d.ts +0 -3
- package/dist/tests/db-tests/tests/upsert-test.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/upsert-test.js +0 -31
- package/dist/tests/db-tests/tests/upsert-test.js.map +0 -1
- package/dist/tests/db-tests/tests/version-history.d.ts +0 -3
- package/dist/tests/db-tests/tests/version-history.d.ts.map +0 -1
- package/dist/tests/db-tests/tests/version-history.js +0 -16
- package/dist/tests/db-tests/tests/version-history.js.map +0 -1
- package/dist/tests/db-tests/transaction-save-point/transaction-save-point.d.ts +0 -3
- package/dist/tests/db-tests/transaction-save-point/transaction-save-point.d.ts.map +0 -1
- package/dist/tests/db-tests/transaction-save-point/transaction-save-point.js +0 -58
- package/dist/tests/db-tests/transaction-save-point/transaction-save-point.js.map +0 -1
- package/dist/tests/drivers/postgres/connection-test.d.ts +0 -3
- package/dist/tests/drivers/postgres/connection-test.d.ts.map +0 -1
- package/dist/tests/drivers/postgres/connection-test.js +0 -40
- package/dist/tests/drivers/postgres/connection-test.js.map +0 -1
- package/dist/tests/drivers/sql-server/sql-server-test.d.ts +0 -2
- package/dist/tests/drivers/sql-server/sql-server-test.d.ts.map +0 -1
- package/dist/tests/drivers/sql-server/sql-server-test.js +0 -6
- package/dist/tests/drivers/sql-server/sql-server-test.js.map +0 -1
- package/dist/tests/eternity/child-tests.d.ts +0 -3
- package/dist/tests/eternity/child-tests.d.ts.map +0 -1
- package/dist/tests/eternity/child-tests.js +0 -97
- package/dist/tests/eternity/child-tests.js.map +0 -1
- package/dist/tests/eternity/eternity-tests.d.ts +0 -3
- package/dist/tests/eternity/eternity-tests.d.ts.map +0 -1
- package/dist/tests/eternity/eternity-tests.js +0 -85
- package/dist/tests/eternity/eternity-tests.js.map +0 -1
- package/dist/tests/eternity/external-event-tests.d.ts +0 -3
- package/dist/tests/eternity/external-event-tests.d.ts.map +0 -1
- package/dist/tests/eternity/external-event-tests.js +0 -108
- package/dist/tests/eternity/external-event-tests.js.map +0 -1
- package/dist/tests/eternity/throttle-tests.d.ts +0 -3
- package/dist/tests/eternity/throttle-tests.d.ts.map +0 -1
- package/dist/tests/eternity/throttle-tests.js +0 -86
- package/dist/tests/eternity/throttle-tests.js.map +0 -1
- package/dist/tests/expressions/left-joins/child-joins.d.ts +0 -2
- package/dist/tests/expressions/left-joins/child-joins.d.ts.map +0 -1
- package/dist/tests/expressions/left-joins/child-joins.js +0 -114
- package/dist/tests/expressions/left-joins/child-joins.js.map +0 -1
- package/dist/tests/expressions/sanitize/sanitize-test.d.ts +0 -2
- package/dist/tests/expressions/sanitize/sanitize-test.d.ts.map +0 -1
- package/dist/tests/expressions/sanitize/sanitize-test.js +0 -8
- package/dist/tests/expressions/sanitize/sanitize-test.js.map +0 -1
- package/dist/tests/expressions/select/select.d.ts +0 -2
- package/dist/tests/expressions/select/select.d.ts.map +0 -1
- package/dist/tests/expressions/select/select.js +0 -11
- package/dist/tests/expressions/select/select.js.map +0 -1
- package/dist/tests/expressions/self-joins/self-joins.d.ts +0 -2
- package/dist/tests/expressions/self-joins/self-joins.d.ts.map +0 -1
- package/dist/tests/expressions/self-joins/self-joins.js +0 -14
- package/dist/tests/expressions/self-joins/self-joins.js.map +0 -1
- package/dist/tests/expressions/simple/parse-array.d.ts +0 -2
- package/dist/tests/expressions/simple/parse-array.d.ts.map +0 -1
- package/dist/tests/expressions/simple/parse-array.js +0 -21
- package/dist/tests/expressions/simple/parse-array.js.map +0 -1
- package/dist/tests/expressions/simple/parse-arrow.d.ts +0 -2
- package/dist/tests/expressions/simple/parse-arrow.d.ts.map +0 -1
- package/dist/tests/expressions/simple/parse-arrow.js +0 -36
- package/dist/tests/expressions/simple/parse-arrow.js.map +0 -1
- package/dist/tests/expressions/simple/parse-complex.d.ts +0 -2
- package/dist/tests/expressions/simple/parse-complex.d.ts.map +0 -1
- package/dist/tests/expressions/simple/parse-complex.js +0 -11
- package/dist/tests/expressions/simple/parse-complex.js.map +0 -1
- package/dist/tests/expressions/trimInternal.d.ts +0 -3
- package/dist/tests/expressions/trimInternal.d.ts.map +0 -1
- package/dist/tests/expressions/trimInternal.js +0 -24
- package/dist/tests/expressions/trimInternal.js.map +0 -1
- package/dist/tests/model/ShoppingContext.d.ts +0 -140
- package/dist/tests/model/ShoppingContext.d.ts.map +0 -1
- package/dist/tests/model/ShoppingContext.js +0 -440
- package/dist/tests/model/ShoppingContext.js.map +0 -1
- package/dist/tests/model/UseFile.d.ts +0 -8
- package/dist/tests/model/UseFile.d.ts.map +0 -1
- package/dist/tests/model/UseFile.js +0 -25
- package/dist/tests/model/UseFile.js.map +0 -1
- package/dist/tests/model/createContext.d.ts +0 -6
- package/dist/tests/model/createContext.d.ts.map +0 -1
- package/dist/tests/model/createContext.js +0 -327
- package/dist/tests/model/createContext.js.map +0 -1
- package/dist/tests/pool/pool-test.d.ts +0 -2
- package/dist/tests/pool/pool-test.d.ts.map +0 -1
- package/dist/tests/pool/pool-test.js +0 -66
- package/dist/tests/pool/pool-test.js.map +0 -1
- package/dist/tests/query/combine.d.ts +0 -2
- package/dist/tests/query/combine.d.ts.map +0 -1
- package/dist/tests/query/combine.js +0 -20
- package/dist/tests/query/combine.js.map +0 -1
- package/dist/tests/security/ShoppingContextEvents.d.ts +0 -5
- package/dist/tests/security/ShoppingContextEvents.d.ts.map +0 -1
- package/dist/tests/security/ShoppingContextEvents.js +0 -20
- package/dist/tests/security/ShoppingContextEvents.js.map +0 -1
- package/dist/tests/security/events/OrderEvents.d.ts +0 -17
- package/dist/tests/security/events/OrderEvents.d.ts.map +0 -1
- package/dist/tests/security/events/OrderEvents.js +0 -62
- package/dist/tests/security/events/OrderEvents.js.map +0 -1
- package/dist/tests/security/events/ProductEvents.d.ts +0 -23
- package/dist/tests/security/events/ProductEvents.d.ts.map +0 -1
- package/dist/tests/security/events/ProductEvents.js +0 -79
- package/dist/tests/security/events/ProductEvents.js.map +0 -1
- package/dist/tests/security/events/UserEvents.d.ts +0 -10
- package/dist/tests/security/events/UserEvents.d.ts.map +0 -1
- package/dist/tests/security/events/UserEvents.js +0 -26
- package/dist/tests/security/events/UserEvents.js.map +0 -1
- package/dist/tests/security/events/UserFileEvents.d.ts +0 -7
- package/dist/tests/security/events/UserFileEvents.d.ts.map +0 -1
- package/dist/tests/security/events/UserFileEvents.js +0 -7
- package/dist/tests/security/events/UserFileEvents.js.map +0 -1
- package/dist/tests/security/events/UserInfo.d.ts +0 -5
- package/dist/tests/security/events/UserInfo.d.ts.map +0 -1
- package/dist/tests/security/events/UserInfo.js +0 -9
- package/dist/tests/security/events/UserInfo.js.map +0 -1
- package/dist/tests/security/tests/include-items.d.ts +0 -3
- package/dist/tests/security/tests/include-items.d.ts.map +0 -1
- package/dist/tests/security/tests/include-items.js +0 -15
- package/dist/tests/security/tests/include-items.js.map +0 -1
- package/dist/tests/security/tests/place-order.d.ts +0 -3
- package/dist/tests/security/tests/place-order.d.ts.map +0 -1
- package/dist/tests/security/tests/place-order.js +0 -139
- package/dist/tests/security/tests/place-order.js.map +0 -1
- package/dist/tests/security/tests/test-events.d.ts +0 -3
- package/dist/tests/security/tests/test-events.d.ts.map +0 -1
- package/dist/tests/security/tests/test-events.js +0 -54
- package/dist/tests/security/tests/test-events.js.map +0 -1
- package/src/tests/TestConfig.ts +0 -6
- package/src/tests/db-tests/tests/check-constraint-test.ts +0 -32
- package/src/tests/db-tests/tests/delete-items.ts +0 -42
- package/src/tests/db-tests/tests/filtered-include-items.ts +0 -28
- package/src/tests/db-tests/tests/insert-into.ts +0 -24
- package/src/tests/db-tests/tests/multi-fk-tests.ts +0 -37
- package/src/tests/db-tests/tests/select-identity.ts +0 -23
- package/src/tests/db-tests/tests/select-inverse-one-to-one.ts +0 -39
- package/src/tests/db-tests/tests/select-items-map.ts +0 -38
- package/src/tests/db-tests/tests/select-items-sum.ts +0 -60
- package/src/tests/db-tests/tests/select-items.ts +0 -49
- package/src/tests/db-tests/tests/select-map.ts +0 -19
- package/src/tests/db-tests/tests/select-nested.ts +0 -36
- package/src/tests/db-tests/tests/select-parent.ts +0 -25
- package/src/tests/db-tests/tests/select-related.ts +0 -35
- package/src/tests/db-tests/tests/update-items.ts +0 -44
- package/src/tests/db-tests/tests/update-select.ts +0 -28
- package/src/tests/db-tests/tests/upsert-test.ts +0 -48
- package/src/tests/db-tests/tests/version-history.ts +0 -24
- package/src/tests/db-tests/transaction-save-point/transaction-save-point.ts +0 -48
- package/src/tests/drivers/postgres/connection-test.ts +0 -39
- package/src/tests/drivers/sql-server/sql-server-test.ts +0 -9
- package/src/tests/eternity/child-tests.ts +0 -119
- package/src/tests/eternity/eternity-tests.ts +0 -108
- package/src/tests/eternity/external-event-tests.ts +0 -133
- package/src/tests/eternity/throttle-tests.ts +0 -100
- package/src/tests/expressions/left-joins/child-joins.ts +0 -131
- package/src/tests/expressions/sanitize/sanitize-test.ts +0 -17
- package/src/tests/expressions/select/select.ts +0 -21
- package/src/tests/expressions/self-joins/self-joins.ts +0 -23
- package/src/tests/expressions/simple/parse-array.ts +0 -31
- package/src/tests/expressions/simple/parse-arrow.ts +0 -65
- package/src/tests/expressions/simple/parse-complex.ts +0 -20
- package/src/tests/expressions/trimInternal.ts +0 -25
- package/src/tests/model/ShoppingContext.ts +0 -435
- package/src/tests/model/UseFile.ts +0 -24
- package/src/tests/model/createContext.ts +0 -367
- package/src/tests/pool/pool-test.ts +0 -79
- package/src/tests/query/combine.ts +0 -28
- package/src/tests/security/ShoppingContextEvents.ts +0 -23
- package/src/tests/security/events/OrderEvents.ts +0 -72
- package/src/tests/security/events/ProductEvents.ts +0 -102
- package/src/tests/security/events/UserEvents.ts +0 -28
- package/src/tests/security/events/UserFileEvents.ts +0 -11
- package/src/tests/security/events/UserInfo.ts +0 -7
- package/src/tests/security/tests/include-items.ts +0 -20
- package/src/tests/security/tests/place-order.ts +0 -138
- package/src/tests/security/tests/test-events.ts +0 -55
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
3
|
-
import { createContext, headPhoneCategory } from "../../model/createContext.js";
|
|
4
|
-
import { ShoppingContextEvents } from "../../security/ShoppingContextEvents.js";
|
|
5
|
-
|
|
6
|
-
export default async function(this: TestConfig) {
|
|
7
|
-
|
|
8
|
-
if (!this.db) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const context = await createContext(this.driver);
|
|
13
|
-
|
|
14
|
-
// const count = await context.users.all()
|
|
15
|
-
// .where({} , (p) => (x) => x.profile.photos.some((a) => true) || x.profile.photos.some((a) => true))
|
|
16
|
-
// .count();
|
|
17
|
-
|
|
18
|
-
// assert.equal(0, count);
|
|
19
|
-
|
|
20
|
-
// include inverse...
|
|
21
|
-
let all = await context.users.all()
|
|
22
|
-
.where({} , (p) => (x) => x.profile.photos.some((a) => a.photoID > 0) || x.profile.photos.some((a) => a.photoID > 0))
|
|
23
|
-
.include((x) => x.profile.photos)
|
|
24
|
-
.first();
|
|
25
|
-
|
|
26
|
-
assert.equal(null, all);
|
|
27
|
-
|
|
28
|
-
all = await context.users.all()
|
|
29
|
-
.where({} , (p) => (x) => x.files.some((a) => a.fileID > 0))
|
|
30
|
-
.include((x) => x.files)
|
|
31
|
-
.first();
|
|
32
|
-
|
|
33
|
-
assert.equal(null, all);
|
|
34
|
-
|
|
35
|
-
const c = await context.userFiles.where({}, (p) => (x) => x.user.userID > 0).count();
|
|
36
|
-
assert.equal(0, c);
|
|
37
|
-
|
|
38
|
-
await context.profilePhotos.all().include((x) => x.profile).toArray();
|
|
39
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
3
|
-
import { createContext, headPhoneCategory } from "../../model/createContext.js";
|
|
4
|
-
import Sql from "../../../sql/Sql.js";
|
|
5
|
-
|
|
6
|
-
export default async function(this: TestConfig) {
|
|
7
|
-
|
|
8
|
-
if (!this.db) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const context = await createContext(this.driver);
|
|
13
|
-
|
|
14
|
-
let sum = await context.orderItems.all()
|
|
15
|
-
.where({}, (p) => (x) => x.order.orderID > 0)
|
|
16
|
-
.map({}, (p) => ({ amount }) => amount)
|
|
17
|
-
.sum();
|
|
18
|
-
|
|
19
|
-
assert.notEqual(0, sum);
|
|
20
|
-
|
|
21
|
-
sum = await context.orderItems.all()
|
|
22
|
-
.where({}, (p) => (x) => x.product.prices.some((pr) => pr.amount > 0))
|
|
23
|
-
.map({}, (p) => ({ order: { orderID } }) => orderID)
|
|
24
|
-
.sum();
|
|
25
|
-
|
|
26
|
-
assert.notEqual(0, sum);
|
|
27
|
-
|
|
28
|
-
// const report = await context.users.all()
|
|
29
|
-
// .where({}, (p) => (x) => x.orders.some((oi) => oi.customerID > 0))
|
|
30
|
-
// .map({}, (p) => (x) => ({
|
|
31
|
-
// all: Sql.coll.count(x.orders),
|
|
32
|
-
// total: Sql.coll.sum(x.orders.map((o) => Sql.coll.sum(o.orderItems.map((oi) => oi.amount))))
|
|
33
|
-
// })
|
|
34
|
-
// )
|
|
35
|
-
// .first();
|
|
36
|
-
|
|
37
|
-
// assert.notEqual(null, report);
|
|
38
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
3
|
-
import { createContext, headPhoneCategory } from "../../model/createContext.js";
|
|
4
|
-
import Sql from "../../../sql/Sql.js";
|
|
5
|
-
|
|
6
|
-
export default async function(this: TestConfig) {
|
|
7
|
-
|
|
8
|
-
if (!this.db) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const context = await createContext(this.driver);
|
|
13
|
-
|
|
14
|
-
let report;
|
|
15
|
-
|
|
16
|
-
// const user = await context.users.all()
|
|
17
|
-
// .where({}, (p) => (x) => x.orders.some((oi) => oi.customerID > 0))
|
|
18
|
-
// .trace(console.log)
|
|
19
|
-
// .first();
|
|
20
|
-
|
|
21
|
-
// assert.notEqual(null, user);
|
|
22
|
-
|
|
23
|
-
// report = await context.users.all()
|
|
24
|
-
// // .where({}, (p) => (x) => x.orders.some((oi) => oi.customerID > 0))
|
|
25
|
-
// .map({}, (p) => (x) => ({
|
|
26
|
-
// total: 5 * Sql.coll.sum(x.orders.map((o) => Sql.coll.sum(o.orderItems.map((oi) => oi.amount))))
|
|
27
|
-
// })
|
|
28
|
-
// )
|
|
29
|
-
// .trace(console.log)
|
|
30
|
-
// .first();
|
|
31
|
-
|
|
32
|
-
// assert.notEqual(null, report);
|
|
33
|
-
|
|
34
|
-
// await context.orders.asQuery()
|
|
35
|
-
// .update(void 0, (p) => (x) => ({
|
|
36
|
-
// total: Sql.coll.sum(x.orderItems.map((o) => o.amount ))
|
|
37
|
-
// }));
|
|
38
|
-
|
|
39
|
-
report = await context.users.all()
|
|
40
|
-
.map({}, (p) => (x) => ({
|
|
41
|
-
total: Sql.coll.sum(x.orders
|
|
42
|
-
.filter((o) => o.status === "pending")
|
|
43
|
-
.map((o) => o.total))
|
|
44
|
-
})
|
|
45
|
-
)
|
|
46
|
-
.trace(console.log)
|
|
47
|
-
.first();
|
|
48
|
-
|
|
49
|
-
assert.notEqual(null, report);
|
|
50
|
-
|
|
51
|
-
// const r = await context.users.all()
|
|
52
|
-
// .trace(console.log)
|
|
53
|
-
// .sum(void 0, (p) => (x) => ({
|
|
54
|
-
// paid: x.orders.some((o) => o.status === "pending") ? 1 : 0,
|
|
55
|
-
// total: 1
|
|
56
|
-
// }));
|
|
57
|
-
|
|
58
|
-
// assert.notEqual(r.paid, undefined);
|
|
59
|
-
// assert.notEqual(r.total, undefined);
|
|
60
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
3
|
-
import { createContext, headPhoneCategory } from "../../model/createContext.js";
|
|
4
|
-
|
|
5
|
-
export default async function(this: TestConfig) {
|
|
6
|
-
|
|
7
|
-
if (!this.db) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const context = await createContext(this.driver);
|
|
12
|
-
|
|
13
|
-
const headphone = await context.products.where({ name: "Jabber Head Phones" }, (p) => (x) => x.name === p.name).first();
|
|
14
|
-
|
|
15
|
-
assert.notEqual(null, headphone);
|
|
16
|
-
|
|
17
|
-
const products = await context.products.where({}, (p) => (x) => x.productID > 0)
|
|
18
|
-
.offset(2)
|
|
19
|
-
.limit(5)
|
|
20
|
-
.orderBy({}, (p) => (x) => x.name)
|
|
21
|
-
.toArray();
|
|
22
|
-
|
|
23
|
-
assert.equal(5, products.length);
|
|
24
|
-
|
|
25
|
-
const sorted = [ ... products].sort((a, b) => a.name.localeCompare(b.name));
|
|
26
|
-
|
|
27
|
-
assert.equal(products.join(","), sorted.join(","));
|
|
28
|
-
|
|
29
|
-
// count all headphones...
|
|
30
|
-
let allHeadphones = await context.productCategories.where({ headPhoneCategory }, (p) => (x) => x.category.categoryID === p.headPhoneCategory).count();
|
|
31
|
-
|
|
32
|
-
assert.equal(6, allHeadphones);
|
|
33
|
-
|
|
34
|
-
allHeadphones = await context.products.where({ headPhoneCategory }, (p) => (x) => x.categories.some((pc) => pc.categoryID === p.headPhoneCategory)).count();
|
|
35
|
-
|
|
36
|
-
assert.equal(6, allHeadphones);
|
|
37
|
-
|
|
38
|
-
const first = await context.productCategories.where({ headPhoneCategory }, (p) => (x) => x.category.categoryID === p.headPhoneCategory).first();
|
|
39
|
-
|
|
40
|
-
// delete first one...
|
|
41
|
-
context.products.delete(first);
|
|
42
|
-
|
|
43
|
-
await context.saveChanges();
|
|
44
|
-
|
|
45
|
-
allHeadphones = await context.products.where({ headPhoneCategory }, (p) => (x) => x.categories.some((pc) => pc.categoryID === p.headPhoneCategory)).count();
|
|
46
|
-
|
|
47
|
-
assert.equal(5, allHeadphones);
|
|
48
|
-
|
|
49
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
3
|
-
import { createContext, headPhoneCategory } from "../../model/createContext.js";
|
|
4
|
-
import Sql from "../../../sql/Sql.js";
|
|
5
|
-
|
|
6
|
-
export default async function(this: TestConfig) {
|
|
7
|
-
|
|
8
|
-
if (!this.db) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const context = await createContext(this.driver);
|
|
13
|
-
|
|
14
|
-
const f = await context.orderItems.all()
|
|
15
|
-
.map({}, (p) => ({ orderID, amount }) => ({ orderID, amount }))
|
|
16
|
-
.first();
|
|
17
|
-
|
|
18
|
-
console.log(f);
|
|
19
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
3
|
-
import { createContext, headPhoneCategory } from "../../model/createContext.js";
|
|
4
|
-
|
|
5
|
-
export default async function(this: TestConfig) {
|
|
6
|
-
|
|
7
|
-
if (!this.db) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const context = await createContext(this.driver);
|
|
12
|
-
|
|
13
|
-
let headphone = await context.products
|
|
14
|
-
.where({ name: "Jabber Head Phones" }, (p) => (x) => x.name === p.name)
|
|
15
|
-
.include((x) => x.categories.forEach((c) => c.category.children))
|
|
16
|
-
.first();
|
|
17
|
-
|
|
18
|
-
assert.notEqual(null, headphone);
|
|
19
|
-
|
|
20
|
-
let child = headphone.categories[0].category.children[0];
|
|
21
|
-
assert.notEqual(null, child);
|
|
22
|
-
|
|
23
|
-
// select nested with filter
|
|
24
|
-
|
|
25
|
-
const blueTooth = "Bluetooth";
|
|
26
|
-
headphone = await context.products
|
|
27
|
-
.where({ name: "Jabber Head Phones", blueTooth }, (p) => (x) => x.name === p.name
|
|
28
|
-
&& x.categories.some((c) =>
|
|
29
|
-
c.category.children.some((cc) => cc.name === p.blueTooth)))
|
|
30
|
-
.include((x) => x.categories.forEach((c) => c.category.children))
|
|
31
|
-
.first();
|
|
32
|
-
|
|
33
|
-
child = headphone.categories[0].category.children[0];
|
|
34
|
-
assert.notEqual(null, child);
|
|
35
|
-
|
|
36
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
3
|
-
import { createContext, headPhoneCategory } from "../../model/createContext.js";
|
|
4
|
-
import Sql from "../../../sql/Sql.js";
|
|
5
|
-
|
|
6
|
-
export default async function(this: TestConfig) {
|
|
7
|
-
|
|
8
|
-
if (!this.db) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const context = await createContext(this.driver);
|
|
13
|
-
|
|
14
|
-
const cats = await context.categories.where({ search: "headphones%"}, (p) => (x) => Sql.text.like(x.parent.lowerName, p.search)
|
|
15
|
-
|| Sql.text.like(x.parent.parent.lowerName, p.search) )
|
|
16
|
-
.trace(console.log)
|
|
17
|
-
.toArray();
|
|
18
|
-
|
|
19
|
-
// assert.equal("Bluetooth", cat1.name);
|
|
20
|
-
assert.equal(2, cats.length);
|
|
21
|
-
|
|
22
|
-
// select nested with filter
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
3
|
-
import { createContext, headPhoneCategory } from "../../model/createContext.js";
|
|
4
|
-
import IdentityService from "../../../model/identity/IdentityService.js";
|
|
5
|
-
import { User } from "../../model/ShoppingContext.js";
|
|
6
|
-
|
|
7
|
-
export default async function(this: TestConfig) {
|
|
8
|
-
|
|
9
|
-
if (!this.db) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const context = await createContext(this.driver);
|
|
14
|
-
|
|
15
|
-
context.changeSet.clear();
|
|
16
|
-
|
|
17
|
-
const headphone = await context.categories.where({ name: "head-phones/blue-tooth" }, (p) => (x) => x.categoryID === p.name).first();
|
|
18
|
-
|
|
19
|
-
assert.equal(undefined, headphone.parent);
|
|
20
|
-
|
|
21
|
-
await context.changeSet.getEntry(headphone).loadNavigationAsync((x) => x.parent);
|
|
22
|
-
|
|
23
|
-
assert.notEqual(undefined, headphone.parent);
|
|
24
|
-
|
|
25
|
-
context.changeSet.clear();
|
|
26
|
-
|
|
27
|
-
const { parent } = headphone;
|
|
28
|
-
const parentEntity = await context.categories.loadByKeys(parent);
|
|
29
|
-
|
|
30
|
-
assert.equal(undefined, parentEntity.children);
|
|
31
|
-
|
|
32
|
-
await context.changeSet.getEntry(parentEntity).loadNavigationAsync((x) => x.children);
|
|
33
|
-
|
|
34
|
-
assert.notEqual(undefined, parentEntity.children);
|
|
35
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { Sql } from "../../../index.js";
|
|
3
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
4
|
-
import { createContext } from "../../model/createContext.js";
|
|
5
|
-
|
|
6
|
-
export default async function(this: TestConfig) {
|
|
7
|
-
|
|
8
|
-
if (!this.db) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const context = await createContext(this.driver);
|
|
13
|
-
|
|
14
|
-
const first = await context.products.all().first();
|
|
15
|
-
|
|
16
|
-
first.name = "First product";
|
|
17
|
-
|
|
18
|
-
await context.saveChanges();
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
await context.products
|
|
22
|
-
.where(void 0, (p) => (x) => x.productID > 1)
|
|
23
|
-
// .trace(console.log)
|
|
24
|
-
.update(void 0, (p) => (x) => ({
|
|
25
|
-
productDescription: "updated"
|
|
26
|
-
}));
|
|
27
|
-
|
|
28
|
-
// we must verify that productID's description should not have changed...
|
|
29
|
-
let p1 = await context.products.where(void 0, (p) => (x) => x.productID === 1).first();
|
|
30
|
-
assert.notStrictEqual("updated", p1.productDescription);
|
|
31
|
-
|
|
32
|
-
const n = await context.products
|
|
33
|
-
.where(void 0, (p) => (x) => true === true)
|
|
34
|
-
.limit(1)
|
|
35
|
-
// .trace(console.log)
|
|
36
|
-
.update(void 0, (p) => (x) => ({
|
|
37
|
-
productDescription: "x"
|
|
38
|
-
}));
|
|
39
|
-
|
|
40
|
-
assert.equal(n, 1);
|
|
41
|
-
|
|
42
|
-
p1 = await context.products.where(void 0, (p) => (x) => x.productID === 1).first();
|
|
43
|
-
assert.strictEqual("x", p1.productDescription);
|
|
44
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { Sql } from "../../../index.js";
|
|
3
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
4
|
-
import { createContext } from "../../model/createContext.js";
|
|
5
|
-
|
|
6
|
-
export default async function(this: TestConfig) {
|
|
7
|
-
|
|
8
|
-
if (!this.db) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const context = await createContext(this.driver);
|
|
13
|
-
|
|
14
|
-
const first = await context.products.all().first();
|
|
15
|
-
|
|
16
|
-
first.name = "First product";
|
|
17
|
-
|
|
18
|
-
await context.saveChanges();
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const results = await context.products
|
|
22
|
-
.where(void 0, (p) => (x) => x.productID > 1)
|
|
23
|
-
.trace(console.log)
|
|
24
|
-
.updateSelect(void 0, (p) => (x) => ({
|
|
25
|
-
productDescription: "updated"
|
|
26
|
-
}));
|
|
27
|
-
assert.equal(results[0].productDescription, "updated");
|
|
28
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
3
|
-
import { createContext } from "../../model/createContext.js";
|
|
4
|
-
|
|
5
|
-
export default async function(this: TestConfig) {
|
|
6
|
-
|
|
7
|
-
if (!this.db) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const context = await createContext(this.driver);
|
|
12
|
-
|
|
13
|
-
let changes = { address: "e@e.com"};
|
|
14
|
-
let keys = { ... changes };
|
|
15
|
-
|
|
16
|
-
let e = await context.emailAddresses.statements.upsert(changes, void 0, keys);
|
|
17
|
-
assert.strictEqual("1", e.id);
|
|
18
|
-
e = await context.emailAddresses.statements.upsert(changes, void 0, keys);
|
|
19
|
-
assert.strictEqual("1", e.id);
|
|
20
|
-
|
|
21
|
-
e = await context.emailAddresses.statements.upsert(
|
|
22
|
-
{ ... changes, name: "a" },
|
|
23
|
-
void 0,
|
|
24
|
-
{
|
|
25
|
-
id: e.id
|
|
26
|
-
}
|
|
27
|
-
);
|
|
28
|
-
assert.strictEqual("1", e.id);
|
|
29
|
-
|
|
30
|
-
e = await context.emailAddresses.statements.selectOrInsert(
|
|
31
|
-
{ ... changes },
|
|
32
|
-
{
|
|
33
|
-
id: e.id
|
|
34
|
-
}
|
|
35
|
-
);
|
|
36
|
-
assert.strictEqual("1", e.id);
|
|
37
|
-
assert.strictEqual("a", e.name);
|
|
38
|
-
|
|
39
|
-
changes = { address: "a@e.com"};
|
|
40
|
-
keys = { ... changes };
|
|
41
|
-
e = await context.emailAddresses.statements.selectOrInsert(changes, keys);
|
|
42
|
-
assert.strictEqual("2", e.id);
|
|
43
|
-
|
|
44
|
-
e = await context.emailAddresses.statements.selectOrInsert(changes, keys);
|
|
45
|
-
assert.strictEqual("2", e.id);
|
|
46
|
-
|
|
47
|
-
await context.saveChanges();
|
|
48
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { BaseDriver } from "../../../drivers/base/BaseDriver.js";
|
|
3
|
-
import { ShoppingContext } from "../../model/ShoppingContext.js";
|
|
4
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
5
|
-
|
|
6
|
-
export default async function (this: TestConfig) {
|
|
7
|
-
|
|
8
|
-
assert.equal(true, await migrate.call(this));
|
|
9
|
-
|
|
10
|
-
assert.equal(false, await migrate.call(this));
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
async function migrate(this: TestConfig) {
|
|
14
|
-
const { driver } = this;
|
|
15
|
-
|
|
16
|
-
const copy = { ...driver } as BaseDriver;
|
|
17
|
-
(copy as any).connectionString = { ...driver.connectionString };
|
|
18
|
-
Object.setPrototypeOf(copy, Object.getPrototypeOf(driver));
|
|
19
|
-
const context = new ShoppingContext(copy);
|
|
20
|
-
|
|
21
|
-
await context.connection.ensureDatabase();
|
|
22
|
-
|
|
23
|
-
return await context.connection.automaticMigrations().migrate(context, { version: "v1" });
|
|
24
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import { Sql } from "../../../index.js";
|
|
3
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
4
|
-
import { createContext } from "../../model/createContext.js";
|
|
5
|
-
import { traceSymbol } from "../../../common/symbols/symbols.js";
|
|
6
|
-
import { ShoppingContext } from "../../model/ShoppingContext.js";
|
|
7
|
-
|
|
8
|
-
export default async function(this: TestConfig) {
|
|
9
|
-
|
|
10
|
-
if (!this.db) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const context = await createContext(this.driver);
|
|
15
|
-
|
|
16
|
-
context[traceSymbol] = console.log;
|
|
17
|
-
|
|
18
|
-
await testSavePoint(context);
|
|
19
|
-
|
|
20
|
-
// SQL SERVER doesn't worry about failed transactions
|
|
21
|
-
// await failSavePoint(context);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
async function testSavePoint(context: ShoppingContext) {
|
|
25
|
-
await using tx = await context.connection.createTransaction();
|
|
26
|
-
await tx.save("t1");
|
|
27
|
-
|
|
28
|
-
await assert.rejects(async () => {
|
|
29
|
-
const rx = await context.connection.executeQuery("SELECT ADSFDFDFDS FROM A1");
|
|
30
|
-
console.log(rx);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
await tx.rollbackTo("t1");
|
|
34
|
-
const result = await context.connection.executeQuery("SELECT 1 as v1");
|
|
35
|
-
assert.strictEqual(1, result.rows[0].v1);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async function failSavePoint(context: ShoppingContext) {
|
|
39
|
-
await using tx = await context.connection.createTransaction();
|
|
40
|
-
|
|
41
|
-
await assert.rejects(async () => {
|
|
42
|
-
const rx = await context.connection.executeQuery("SELECT ADSFDFDFDS FROM A1");
|
|
43
|
-
console.log(rx);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
await assert.rejects(async () => await context.connection.executeQuery("SELECT 1 as v1"));
|
|
47
|
-
}
|
|
48
|
-
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
|
-
import assert from "assert";
|
|
3
|
-
import PostgreSqlDriver from "../../../drivers/postgres/PostgreSqlDriver.js";
|
|
4
|
-
import { Query } from "../../../query/Query.js";
|
|
5
|
-
import { TestConfig } from "../../TestConfig.js";
|
|
6
|
-
import DateTime from "../../../types/DateTime.js";
|
|
7
|
-
|
|
8
|
-
export default async function (this: TestConfig) {
|
|
9
|
-
|
|
10
|
-
if(!this.db) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const connection = this.driver.newConnection();
|
|
15
|
-
|
|
16
|
-
if (!(this.driver instanceof PostgreSqlDriver)) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
await connection.ensureDatabase();
|
|
21
|
-
// create table...
|
|
22
|
-
await connection.executeQuery(`SELECT 1;`);
|
|
23
|
-
|
|
24
|
-
// select items...
|
|
25
|
-
await using items = await connection.executeReader(`SELECT * FROM (VALUES (1, 1), (1, 1)) as V(ID, Value)`);
|
|
26
|
-
|
|
27
|
-
for await (const iterator of items.next(100)) {
|
|
28
|
-
console.log(iterator);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const { rows: [ { now }] } = await connection.executeQuery(`SELECT NOW() as "now"`);
|
|
32
|
-
|
|
33
|
-
assert(now instanceof DateTime);
|
|
34
|
-
assert(now instanceof Date);
|
|
35
|
-
|
|
36
|
-
const { rows: [ { nullDate }] } = await connection.executeQuery({ text: `SELECT $1::timestamp as "nullDate"`, values: [null] });
|
|
37
|
-
|
|
38
|
-
assert(nullDate === null);
|
|
39
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import SqlServerDriver from "../../../drivers/sql-server/SqlServerDriver.js";
|
|
3
|
-
import { SqlServerLiteral } from "../../../drivers/sql-server/SqlServerLiteral.js";
|
|
4
|
-
|
|
5
|
-
export default function () {
|
|
6
|
-
|
|
7
|
-
assert.equal("N'A\\'B'", SqlServerLiteral.escapeLiteral("A'B") );
|
|
8
|
-
|
|
9
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import assert from "assert";
|
|
2
|
-
import Inject, { Register, RegisterSingleton, ServiceProvider } from "../../di/di.js";
|
|
3
|
-
import WorkflowContext from "../../workflows/WorkflowContext.js";
|
|
4
|
-
import Workflow, { Activity, UniqueActivity } from "../../workflows/Workflow.js";
|
|
5
|
-
import WorkflowClock from "../../workflows/WorkflowClock.js";
|
|
6
|
-
import DateTime from "../../types/DateTime.js";
|
|
7
|
-
import { TestConfig } from "../TestConfig.js";
|
|
8
|
-
import { BaseDriver } from "../../drivers/base/BaseDriver.js";
|
|
9
|
-
import WorkflowStorage from "../../workflows/WorkflowStorage.js";
|
|
10
|
-
import TimeSpan from "../../types/TimeSpan.js";
|
|
11
|
-
import sleep from "../../common/sleep.js";
|
|
12
|
-
|
|
13
|
-
class MockClock extends WorkflowClock {
|
|
14
|
-
|
|
15
|
-
public get utcNow(): DateTime {
|
|
16
|
-
return this.time;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
public set utcNow(v: DateTime) {
|
|
20
|
-
this.time = v;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
private time: DateTime = DateTime.now;
|
|
24
|
-
|
|
25
|
-
public add(ts: TimeSpan) {
|
|
26
|
-
this.time = this.time.add(ts);
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@RegisterSingleton
|
|
32
|
-
class CallTracker {
|
|
33
|
-
track: number = 0;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
class ChildWorkflow extends Workflow<[string, string], string> {
|
|
37
|
-
|
|
38
|
-
async run() {
|
|
39
|
-
await this.delay(TimeSpan.fromSeconds(30));
|
|
40
|
-
return await this.add("Name:", this.input);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
@UniqueActivity
|
|
44
|
-
async add(a: string, b: string[], @Inject tracker?: CallTracker) {
|
|
45
|
-
tracker.track++;
|
|
46
|
-
return a + " " + b.join(" ");
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
class ParentWorkflow extends Workflow<string, string> {
|
|
51
|
-
|
|
52
|
-
public async run(): Promise<any> {
|
|
53
|
-
const all = await this.all([
|
|
54
|
-
this.runChild(ChildWorkflow, [this.input, "1"]),
|
|
55
|
-
this.runChild(ChildWorkflow, [this.input, "2"])
|
|
56
|
-
]);
|
|
57
|
-
|
|
58
|
-
return all.join(",");
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export default async function(this: TestConfig) {
|
|
64
|
-
|
|
65
|
-
const mockClock = new MockClock();
|
|
66
|
-
|
|
67
|
-
const tracker = new CallTracker();
|
|
68
|
-
|
|
69
|
-
const scope = new ServiceProvider();
|
|
70
|
-
scope.add(WorkflowClock, mockClock);
|
|
71
|
-
scope.add(BaseDriver, this.driver);
|
|
72
|
-
scope.add(CallTracker, tracker);
|
|
73
|
-
const storage = new WorkflowStorage(this.driver, mockClock);
|
|
74
|
-
scope.add(WorkflowStorage, storage);
|
|
75
|
-
|
|
76
|
-
const c = new WorkflowContext(storage);
|
|
77
|
-
scope.add(WorkflowContext, c);
|
|
78
|
-
|
|
79
|
-
// this is an important step
|
|
80
|
-
c.register(ChildWorkflow);
|
|
81
|
-
c.register(ParentWorkflow);
|
|
82
|
-
|
|
83
|
-
await storage.seed();
|
|
84
|
-
|
|
85
|
-
const id = await c.queue(ParentWorkflow, "a");
|
|
86
|
-
|
|
87
|
-
mockClock.add(TimeSpan.fromSeconds(15));
|
|
88
|
-
|
|
89
|
-
await c.processQueueOnce();
|
|
90
|
-
|
|
91
|
-
assert.equal(0, tracker.track);
|
|
92
|
-
|
|
93
|
-
mockClock.add(TimeSpan.fromSeconds(20));
|
|
94
|
-
|
|
95
|
-
await c.processQueueOnce();
|
|
96
|
-
|
|
97
|
-
mockClock.add(TimeSpan.fromSeconds(20));
|
|
98
|
-
|
|
99
|
-
await c.processQueueOnce();
|
|
100
|
-
|
|
101
|
-
mockClock.add(TimeSpan.fromSeconds(20));
|
|
102
|
-
|
|
103
|
-
await c.processQueueOnce();
|
|
104
|
-
|
|
105
|
-
assert.notEqual(0, tracker.track);
|
|
106
|
-
|
|
107
|
-
await c.processQueueOnce();
|
|
108
|
-
|
|
109
|
-
mockClock.add(TimeSpan.fromSeconds(5));
|
|
110
|
-
|
|
111
|
-
await c.processQueueOnce();
|
|
112
|
-
mockClock.add(TimeSpan.fromSeconds(5));
|
|
113
|
-
await c.processQueueOnce();
|
|
114
|
-
mockClock.add(TimeSpan.fromSeconds(5));
|
|
115
|
-
await c.processQueueOnce();
|
|
116
|
-
|
|
117
|
-
const r = await storage.getWorkflow(id);
|
|
118
|
-
assert.equal("done", r.state);
|
|
119
|
-
}
|