apify-test-tools 0.10.2-beta.15 → 0.10.2-beta.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.
- package/.github/cli/apify-test-tools.mjs +25 -25
- package/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml +1 -0
- package/.github/workflows/public_platform-tests.yaml +6 -4
- package/.github/workflows/public_push-build-latest.yaml +4 -3
- package/CHANGELOG.md +2 -0
- package/bin/actor-ids.ts +11 -8
- package/bin/run-tests.ts +2 -1
- package/dist/bin/actor-ids.d.ts +5 -6
- package/dist/bin/actor-ids.d.ts.map +1 -1
- package/dist/bin/actor-ids.js +9 -3
- package/dist/bin/actor-ids.js.map +1 -1
- package/dist/bin/run-tests.d.ts.map +1 -1
- package/dist/bin/run-tests.js +1 -1
- package/dist/bin/run-tests.js.map +1 -1
- package/dist/test/unit/bin/actor-ids.test.js +11 -3
- package/dist/test/unit/bin/actor-ids.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/cli.md +4 -3
- package/docs/workflows.md +10 -4
- package/package.json +1 -1
- package/test/unit/bin/actor-ids.test.ts +11 -7
|
@@ -23,6 +23,7 @@ name: 'Platform tests: Claude failure investigation and fix'
|
|
|
23
23
|
# uses: apify/apify-test-tools/.github/workflows/public_platform-tests.yaml@workflows-v0
|
|
24
24
|
# with:
|
|
25
25
|
# subtest: core
|
|
26
|
+
# report-slack-channel: '#notif-my-repo'
|
|
26
27
|
# secrets:
|
|
27
28
|
# TESTER_APIFY_TOKEN: ${{ secrets.TESTER_APIFY_TOKEN }}
|
|
28
29
|
# SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
|
|
@@ -13,7 +13,7 @@ on:
|
|
|
13
13
|
type: string
|
|
14
14
|
default: ''
|
|
15
15
|
required: false
|
|
16
|
-
#
|
|
16
|
+
# Slack channel for failed tests. Empty skips Slack.
|
|
17
17
|
report-slack-channel:
|
|
18
18
|
type: string
|
|
19
19
|
default: ''
|
|
@@ -69,8 +69,8 @@ jobs:
|
|
|
69
69
|
| apify-test-tools test ./test/platform/${{ inputs.test-files-glob || inputs.subtest }} \
|
|
70
70
|
--reporter github-actions --vitest-output-file ./test-output.json > test-report.json
|
|
71
71
|
|
|
72
|
-
# Posts only when the tests failed, but checks the Slack token on every run
|
|
73
|
-
# did, also after a failure, but not when the token check stopped the job before them.
|
|
72
|
+
# Posts only when the tests failed, but checks the Slack token on every run that has a channel. Runs
|
|
73
|
+
# whenever the tests did, also after a failure, but not when the token check stopped the job before them.
|
|
74
74
|
- name: Notify
|
|
75
75
|
if: ${{ !cancelled() && steps.test.outcome != 'skipped' }}
|
|
76
76
|
env:
|
|
@@ -78,6 +78,8 @@ jobs:
|
|
|
78
78
|
# Passed through the environment, so a quote in the workflow name can't break the command
|
|
79
79
|
WORKFLOW_NAME: ${{ github.workflow }}
|
|
80
80
|
JOB_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
|
81
|
+
# Empty makes notify skip Slack
|
|
82
|
+
SLACK_CHANNEL: ${{ inputs.report-slack-channel }}
|
|
81
83
|
run: |
|
|
82
84
|
# Empty when `test` itself failed before running vitest, its error is in the Test step
|
|
83
85
|
if [ ! -s test-report.json ]; then
|
|
@@ -85,7 +87,7 @@ jobs:
|
|
|
85
87
|
exit 0
|
|
86
88
|
fi
|
|
87
89
|
apify-test-tools notify \
|
|
88
|
-
--slack-channel "$
|
|
90
|
+
--slack-channel "$SLACK_CHANNEL" \
|
|
89
91
|
--title "$WORKFLOW_NAME" \
|
|
90
92
|
--job-url "$JOB_URL" \
|
|
91
93
|
< test-report.json
|
|
@@ -3,7 +3,7 @@ name: Build latest and report to slack
|
|
|
3
3
|
on:
|
|
4
4
|
workflow_call:
|
|
5
5
|
inputs:
|
|
6
|
-
#
|
|
6
|
+
# Slack channel for release announcements. Empty skips Slack.
|
|
7
7
|
report-slack-channel:
|
|
8
8
|
type: string
|
|
9
9
|
default: ''
|
|
@@ -65,13 +65,14 @@ jobs:
|
|
|
65
65
|
| node "${{ steps.setup.outputs.scripts-path }}/run-with-apify-tokens.mjs" \
|
|
66
66
|
apify-test-tools build --version-number default
|
|
67
67
|
|
|
68
|
-
# Skips the announcement when the push brought no new commits
|
|
68
|
+
# Skips the announcement when the push brought no new commits, or when no channel is set
|
|
69
69
|
- name: Announce the release on Slack
|
|
70
70
|
env:
|
|
71
71
|
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
|
|
72
|
+
SLACK_CHANNEL: ${{ inputs.report-slack-channel }}
|
|
72
73
|
run: |
|
|
73
74
|
apify-test-tools notify \
|
|
74
|
-
--slack-channel "$
|
|
75
|
+
--slack-channel "$SLACK_CHANNEL" \
|
|
75
76
|
< affected.json
|
|
76
77
|
|
|
77
78
|
- name: Delete old builds
|
package/CHANGELOG.md
CHANGED
|
@@ -17,6 +17,7 @@ All notable changes to this project will be documented in this file.
|
|
|
17
17
|
- [**breaking**] Require env vars of test versions in sync with the default version ([#217](https://github.com/apify/apify-test-tools/pull/217)) ([a2481dd](https://github.com/apify/apify-test-tools/commit/a2481ddf09004308cb54e49b783c8b21a25dcbe4)) by [@metalwarrior665](https://github.com/metalwarrior665)
|
|
18
18
|
- Add impact & priority assessment to claude investigator ([#216](https://github.com/apify/apify-test-tools/pull/216)) ([fd16622](https://github.com/apify/apify-test-tools/commit/fd16622b910ec6e9b5515ea0bd26b0a41c22bd23)) by [@foxt451](https://github.com/foxt451), closes [#208](https://github.com/apify/apify-test-tools/issues/208)
|
|
19
19
|
- Stale issue/pr workflow ([#236](https://github.com/apify/apify-test-tools/pull/236)) ([aff1fa7](https://github.com/apify/apify-test-tools/commit/aff1fa778adb846a60fdacdd26aa13a71729613d)) by [@JuanGalilea](https://github.com/JuanGalilea), closes [#35](https://github.com/apify/apify-test-tools/issues/35)
|
|
20
|
+
- **workflows:** [**breaking**] Skip Slack when report-slack-channel is empty ([#238](https://github.com/apify/apify-test-tools/pull/238)) ([9a15b56](https://github.com/apify/apify-test-tools/commit/9a15b56de9ca42fb5ea753dc478116f9cd9c2c94)) by [@metalwarrior665](https://github.com/metalwarrior665)
|
|
20
21
|
|
|
21
22
|
### 🐛 Bug Fixes
|
|
22
23
|
|
|
@@ -26,6 +27,7 @@ All notable changes to this project will be documented in this file.
|
|
|
26
27
|
- **workflows:** Load setup action and review prompt from the called commit ([#226](https://github.com/apify/apify-test-tools/pull/226)) ([7524711](https://github.com/apify/apify-test-tools/commit/752471135d4d147f6f6492a26c08af388d7ccf72)) by [@metalwarrior665](https://github.com/metalwarrior665)
|
|
27
28
|
- **test:** Clean up compiled CLI dir when build fails ([#224](https://github.com/apify/apify-test-tools/pull/224)) ([f9f2f5c](https://github.com/apify/apify-test-tools/commit/f9f2f5c64cfe936ee0b72a0fbe7408282c68fbac)) by [@JuanGalilea](https://github.com/JuanGalilea)
|
|
28
29
|
- **cli-test:** Look up actor raw IDs for tests that reference them ([#234](https://github.com/apify/apify-test-tools/pull/234)) ([315baf4](https://github.com/apify/apify-test-tools/commit/315baf495dae984cbcd7056a101935536d7b0011)) by [@metalwarrior665](https://github.com/metalwarrior665)
|
|
30
|
+
- **cli-test:** Warn instead of failing on Actors the tester token can't see ([#237](https://github.com/apify/apify-test-tools/pull/237)) ([1d339ab](https://github.com/apify/apify-test-tools/commit/1d339ab04d3190191cffa3766e86a7c74c309985)) by [@metalwarrior665](https://github.com/metalwarrior665)
|
|
29
31
|
|
|
30
32
|
### 🚜 Refactor
|
|
31
33
|
|
package/bin/actor-ids.ts
CHANGED
|
@@ -1,33 +1,36 @@
|
|
|
1
1
|
import { ApifyClient } from 'apify-client';
|
|
2
2
|
|
|
3
|
+
import { logger } from './logger.js';
|
|
3
4
|
import type { TestTarget } from './stdin-input.js';
|
|
4
5
|
|
|
5
6
|
type ActorGetter = Pick<ApifyClient, 'actor'>;
|
|
6
7
|
|
|
7
|
-
/** A test target with both IDs of its Actor */
|
|
8
|
-
export type ResolvedTestTarget = TestTarget & { actorFullName: string; actorRawId: string };
|
|
9
|
-
|
|
10
8
|
/**
|
|
11
9
|
* Adds the ID each target is missing: the raw ID to those listed by full name, e.g. by `get-actor-configs`, and the
|
|
12
10
|
* full name to those listed by raw ID. The lib matches a test to its Actor by the ID the test names, so a target
|
|
13
11
|
* without either ID would skip the tests that name its Actor by the other one.
|
|
12
|
+
*
|
|
13
|
+
* An Actor the token can't see keeps only the ID it was listed with, with a warning, rather than failing the run:
|
|
14
|
+
* `get-actor-configs` lists every Actor in the repository, also ones no platform test uses, such as Actors the tester
|
|
15
|
+
* account was never given access to. A test that names it by the listed ID still runs and fails on its own.
|
|
14
16
|
*/
|
|
15
17
|
export const withActorIds = async (
|
|
16
18
|
targets: TestTarget[],
|
|
17
19
|
client: ActorGetter = new ApifyClient({ token: process.env.TESTER_APIFY_TOKEN }),
|
|
18
|
-
): Promise<
|
|
20
|
+
): Promise<TestTarget[]> =>
|
|
19
21
|
Promise.all(
|
|
20
22
|
targets.map(async (target) => {
|
|
21
23
|
const { actorFullName, actorRawId } = target;
|
|
22
|
-
if (actorFullName && actorRawId) return
|
|
24
|
+
if (actorFullName && actorRawId) return target;
|
|
23
25
|
// The parser lets no target through without either ID
|
|
24
26
|
const actorId = (actorFullName ?? actorRawId)!;
|
|
25
27
|
const actor = await client.actor(actorId).get();
|
|
26
28
|
if (!actor) {
|
|
27
|
-
|
|
28
|
-
`Actor ${actorId} not found, or TESTER_APIFY_TOKEN can't access it. ` +
|
|
29
|
-
|
|
29
|
+
logger.warn(
|
|
30
|
+
`Actor ${actorId} not found, or TESTER_APIFY_TOKEN can't access it. Tests that name it by ` +
|
|
31
|
+
`${actorFullName ? 'its raw ID' : 'its full name'} will be skipped.`,
|
|
30
32
|
);
|
|
33
|
+
return target;
|
|
31
34
|
}
|
|
32
35
|
return {
|
|
33
36
|
...target,
|
package/bin/run-tests.ts
CHANGED
|
@@ -73,7 +73,8 @@ export const runTests = async ({
|
|
|
73
73
|
// The lib runs the tests of the Actors listed here, each on the build given, or on its default build without one
|
|
74
74
|
env.ACTOR_BUILDS = JSON.stringify(actorBuilds);
|
|
75
75
|
const described = actorBuilds.map(
|
|
76
|
-
({ actorFullName, buildNumber }) =>
|
|
76
|
+
({ actorFullName, actorRawId, buildNumber }) =>
|
|
77
|
+
`${actorFullName ?? actorRawId} (${buildNumber ?? 'default build'})`,
|
|
77
78
|
);
|
|
78
79
|
logger.info(`Testing ${targets.length} Actor(s): ${described.join(', ') || 'none'}`);
|
|
79
80
|
|
package/dist/bin/actor-ids.d.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { ApifyClient } from 'apify-client';
|
|
2
2
|
import type { TestTarget } from './stdin-input.js';
|
|
3
3
|
type ActorGetter = Pick<ApifyClient, 'actor'>;
|
|
4
|
-
/** A test target with both IDs of its Actor */
|
|
5
|
-
export type ResolvedTestTarget = TestTarget & {
|
|
6
|
-
actorFullName: string;
|
|
7
|
-
actorRawId: string;
|
|
8
|
-
};
|
|
9
4
|
/**
|
|
10
5
|
* Adds the ID each target is missing: the raw ID to those listed by full name, e.g. by `get-actor-configs`, and the
|
|
11
6
|
* full name to those listed by raw ID. The lib matches a test to its Actor by the ID the test names, so a target
|
|
12
7
|
* without either ID would skip the tests that name its Actor by the other one.
|
|
8
|
+
*
|
|
9
|
+
* An Actor the token can't see keeps only the ID it was listed with, with a warning, rather than failing the run:
|
|
10
|
+
* `get-actor-configs` lists every Actor in the repository, also ones no platform test uses, such as Actors the tester
|
|
11
|
+
* account was never given access to. A test that names it by the listed ID still runs and fails on its own.
|
|
13
12
|
*/
|
|
14
|
-
export declare const withActorIds: (targets: TestTarget[], client?: ActorGetter) => Promise<
|
|
13
|
+
export declare const withActorIds: (targets: TestTarget[], client?: ActorGetter) => Promise<TestTarget[]>;
|
|
15
14
|
export {};
|
|
16
15
|
//# sourceMappingURL=actor-ids.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-ids.d.ts","sourceRoot":"","sources":["../../bin/actor-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"actor-ids.d.ts","sourceRoot":"","sources":["../../bin/actor-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,KAAK,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAE9C;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GACrB,SAAS,UAAU,EAAE,EACrB,SAAQ,WAAwE,KACjF,OAAO,CAAC,UAAU,EAAE,CAqBlB,CAAC"}
|
package/dist/bin/actor-ids.js
CHANGED
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
import { ApifyClient } from 'apify-client';
|
|
2
|
+
import { logger } from './logger.js';
|
|
2
3
|
/**
|
|
3
4
|
* Adds the ID each target is missing: the raw ID to those listed by full name, e.g. by `get-actor-configs`, and the
|
|
4
5
|
* full name to those listed by raw ID. The lib matches a test to its Actor by the ID the test names, so a target
|
|
5
6
|
* without either ID would skip the tests that name its Actor by the other one.
|
|
7
|
+
*
|
|
8
|
+
* An Actor the token can't see keeps only the ID it was listed with, with a warning, rather than failing the run:
|
|
9
|
+
* `get-actor-configs` lists every Actor in the repository, also ones no platform test uses, such as Actors the tester
|
|
10
|
+
* account was never given access to. A test that names it by the listed ID still runs and fails on its own.
|
|
6
11
|
*/
|
|
7
12
|
export const withActorIds = async (targets, client = new ApifyClient({ token: process.env.TESTER_APIFY_TOKEN })) => Promise.all(targets.map(async (target) => {
|
|
8
13
|
const { actorFullName, actorRawId } = target;
|
|
9
14
|
if (actorFullName && actorRawId)
|
|
10
|
-
return
|
|
15
|
+
return target;
|
|
11
16
|
// The parser lets no target through without either ID
|
|
12
17
|
const actorId = (actorFullName ?? actorRawId);
|
|
13
18
|
const actor = await client.actor(actorId).get();
|
|
14
19
|
if (!actor) {
|
|
15
|
-
|
|
16
|
-
|
|
20
|
+
logger.warn(`Actor ${actorId} not found, or TESTER_APIFY_TOKEN can't access it. Tests that name it by ` +
|
|
21
|
+
`${actorFullName ? 'its raw ID' : 'its full name'} will be skipped.`);
|
|
22
|
+
return target;
|
|
17
23
|
}
|
|
18
24
|
return {
|
|
19
25
|
...target,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-ids.js","sourceRoot":"","sources":["../../bin/actor-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"actor-ids.js","sourceRoot":"","sources":["../../bin/actor-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKrC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC7B,OAAqB,EACrB,SAAsB,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,EAC3D,EAAE,CACvB,OAAO,CAAC,GAAG,CACP,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IACzB,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC7C,IAAI,aAAa,IAAI,UAAU;QAAE,OAAO,MAAM,CAAC;IAC/C,sDAAsD;IACtD,MAAM,OAAO,GAAG,CAAC,aAAa,IAAI,UAAU,CAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CACP,SAAS,OAAO,2EAA2E;YACvF,GAAG,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,mBAAmB,CAC3E,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,OAAO;QACH,GAAG,MAAM;QACT,aAAa,EAAE,aAAa,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;QACjE,UAAU,EAAE,UAAU,IAAI,KAAK,CAAC,EAAE;KACrC,CAAC;AACN,CAAC,CAAC,CACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-tests.d.ts","sourceRoot":"","sources":["../../bin/run-tests.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAkC,KAAK,UAAU,EAAuC,MAAM,kBAAkB,CAAC;AAoBxH,UAAU,eAAe;IACrB,qDAAqD;IACrD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iFAAiF;IACjF,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iHAAiH;IACjH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAU,yDAM5B,eAAe,KAAG,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"run-tests.d.ts","sourceRoot":"","sources":["../../bin/run-tests.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAkC,KAAK,UAAU,EAAuC,MAAM,kBAAkB,CAAC;AAoBxH,UAAU,eAAe;IACrB,qDAAqD;IACrD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iFAAiF;IACjF,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iHAAiH;IACjH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAU,yDAM5B,eAAe,KAAG,OAAO,CAAC,UAAU,CA4DtC,CAAC"}
|
package/dist/bin/run-tests.js
CHANGED
|
@@ -49,7 +49,7 @@ export const runTests = async ({ filters, targets, vitestOutputFile, reporters =
|
|
|
49
49
|
env.FORCE_COLOR = '1';
|
|
50
50
|
// The lib runs the tests of the Actors listed here, each on the build given, or on its default build without one
|
|
51
51
|
env.ACTOR_BUILDS = JSON.stringify(actorBuilds);
|
|
52
|
-
const described = actorBuilds.map(({ actorFullName, buildNumber }) => `${actorFullName} (${buildNumber ?? 'default build'})`);
|
|
52
|
+
const described = actorBuilds.map(({ actorFullName, actorRawId, buildNumber }) => `${actorFullName ?? actorRawId} (${buildNumber ?? 'default build'})`);
|
|
53
53
|
logger.info(`Testing ${targets.length} Actor(s): ${described.join(', ') || 'none'}`);
|
|
54
54
|
const args = [
|
|
55
55
|
vitestBin,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-tests.js","sourceRoot":"","sources":["../../bin/run-tests.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run-tests.js","sourceRoot":"","sources":["../../bin/run-tests.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,17 @@ describe('withActorIds', () => {
|
|
|
24
24
|
expect(await withActorIds([build], client)).toEqual([build]);
|
|
25
25
|
expect(client.actor).not.toHaveBeenCalled();
|
|
26
26
|
});
|
|
27
|
-
it('
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
it('keeps an Actor the token cannot see as listed, instead of failing the run', async () => {
|
|
28
|
+
const targets = [
|
|
29
|
+
{ actorFullName: 'owner/missing' },
|
|
30
|
+
{ actorRawId: 'rawMissing' },
|
|
31
|
+
{ actorFullName: 'owner/a' },
|
|
32
|
+
];
|
|
33
|
+
expect(await withActorIds(targets, fakeClient())).toEqual([
|
|
34
|
+
{ actorFullName: 'owner/missing' },
|
|
35
|
+
{ actorRawId: 'rawMissing' },
|
|
36
|
+
{ actorFullName: 'owner/a', actorRawId: 'rawA' },
|
|
37
|
+
]);
|
|
30
38
|
});
|
|
31
39
|
});
|
|
32
40
|
//# sourceMappingURL=actor-ids.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-ids.test.js","sourceRoot":"","sources":["../../../../test/unit/bin/actor-ids.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,yFAAyF;AACzF,MAAM,UAAU,GAAG,GAAG,EAAE;IACpB,MAAM,KAAK,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC;QACtC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;KACrF,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,KAAK,EAAiD,CAAC;AACpE,CAAC,CAAC;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC7E,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE;SACnD,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QAC3E,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QACrG,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"actor-ids.test.js","sourceRoot":"","sources":["../../../../test/unit/bin/actor-ids.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,yFAAyF;AACzF,MAAM,UAAU,GAAG,GAAG,EAAE;IACpB,MAAM,KAAK,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC;QACtC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;KACrF,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,KAAK,EAAiD,CAAC;AACpE,CAAC,CAAC;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC7E,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE;SACnD,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QAC3E,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QACrG,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,OAAO,GAAG;YACZ,EAAE,aAAa,EAAE,eAAe,EAAE;YAClC,EAAE,UAAU,EAAE,YAAY,EAAE;YAC5B,EAAE,aAAa,EAAE,SAAS,EAAE;SAC/B,CAAC;QACF,MAAM,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACtD,EAAE,aAAa,EAAE,eAAe,EAAE;YAClC,EAAE,UAAU,EAAE,YAAY,EAAE;YAC5B,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE;SACnD,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|