@analogjs/vitest-angular 3.0.0-alpha.1 → 3.0.0-alpha.10

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.
Files changed (62) hide show
  1. package/README.md +2 -2
  2. package/_virtual/_@oxc-project_runtime@0.120.0/helpers/decorate.js +9 -0
  3. package/package.json +8 -8
  4. package/setup-snapshots.d.ts +18 -18
  5. package/setup-snapshots.js +71 -95
  6. package/setup-snapshots.js.map +1 -0
  7. package/setup-testbed.d.ts +12 -5
  8. package/setup-testbed.js +23 -24
  9. package/setup-testbed.js.map +1 -0
  10. package/setup-zone.d.ts +6 -5
  11. package/setup-zone.js +90 -105
  12. package/setup-zone.js.map +1 -0
  13. package/src/index.d.ts +2 -2
  14. package/src/index.js +3 -4
  15. package/src/lib/builders/build/devkit.d.ts +2 -2
  16. package/src/lib/builders/build/devkit.js +23 -17
  17. package/src/lib/builders/build/devkit.js.map +1 -0
  18. package/src/lib/builders/build/plugins/angular-memory-plugin.d.ts +13 -20
  19. package/src/lib/builders/build/plugins/angular-memory-plugin.js +51 -77
  20. package/src/lib/builders/build/plugins/angular-memory-plugin.js.map +1 -0
  21. package/src/lib/builders/build/plugins/downlevel-plugin.d.ts +10 -0
  22. package/src/lib/builders/build/plugins/downlevel-plugin.js +24 -0
  23. package/src/lib/builders/build/plugins/downlevel-plugin.js.map +1 -0
  24. package/src/lib/builders/build/schema.js +53 -0
  25. package/src/lib/builders/build/schema.js.map +1 -0
  26. package/src/lib/builders/build/schema.json +44 -44
  27. package/src/lib/builders/build/utils.d.ts +3 -3
  28. package/src/lib/builders/build/vitest.impl.d.ts +5 -5
  29. package/src/lib/builders/build/vitest.impl.js +154 -190
  30. package/src/lib/builders/build/vitest.impl.js.map +1 -0
  31. package/src/lib/builders/test/schema.js +51 -0
  32. package/src/lib/builders/test/schema.js.map +1 -0
  33. package/src/lib/builders/test/schema.json +44 -44
  34. package/src/lib/builders/test/vitest.impl.d.ts +1 -1
  35. package/src/lib/builders/test/vitest.impl.js +48 -58
  36. package/src/lib/builders/test/vitest.impl.js.map +1 -0
  37. package/src/lib/tools/package.json +1 -5
  38. package/src/lib/tools/src/index.d.ts +1 -1
  39. package/src/lib/tools/src/index.js +3 -6
  40. package/src/lib/tools/src/schematics/setup/index.d.ts +2 -2
  41. package/src/lib/tools/src/schematics/setup/index.js +46 -71
  42. package/src/lib/tools/src/schematics/setup/index.js.map +1 -1
  43. package/src/lib/tools/src/schematics/utils/angular.d.ts +1 -1
  44. package/src/lib/tools/src/schematics/utils/angular.js +16 -22
  45. package/src/lib/tools/src/schematics/utils/angular.js.map +1 -1
  46. package/src/lib/tools/src/schematics/utils/dependencies.d.ts +2 -2
  47. package/src/lib/tools/src/schematics/utils/dependencies.js +34 -44
  48. package/src/lib/tools/src/schematics/utils/dependencies.js.map +1 -1
  49. package/src/lib/tools/src/schematics/utils/index.d.ts +4 -4
  50. package/src/lib/tools/src/schematics/utils/index.js +4 -8
  51. package/src/lib/tools/src/schematics/utils/versions.d.ts +1 -1
  52. package/src/lib/tools/src/schematics/utils/versions.js +17 -12
  53. package/src/lib/tools/src/schematics/utils/versions.js.map +1 -1
  54. package/src/lib/tools/src/schematics/utils/workspace.d.ts +8 -8
  55. package/src/lib/tools/src/schematics/utils/workspace.js +14 -17
  56. package/src/lib/tools/src/schematics/utils/workspace.js.map +1 -1
  57. package/src/lib/tools/src/test-global-setup.d.ts +1 -0
  58. package/src/lib/builders/build/plugins/esbuild-downlevel-plugin.d.ts +0 -7
  59. package/src/lib/builders/build/plugins/esbuild-downlevel-plugin.js +0 -23
  60. package/src/lib/builders/build/utils.js +0 -1
  61. package/src/lib/tools/src/index.js.map +0 -1
  62. package/src/lib/tools/src/schematics/utils/index.js.map +0 -1
package/README.md CHANGED
@@ -126,7 +126,7 @@ The `setupTestBed()` function accepts an optional configuration object with the
126
126
 
127
127
  - `zoneless` (boolean): Whether to use zoneless change detection (default: `true`)
128
128
  - `providers` (`Type<any>[]`): Additional providers to include in the test environment (default: `[]`)
129
- - `browserMode` (boolean): Enables visual test preview in Vitest browser mode by keeping the component rendered, allowing you to inspect its final state (default: `false`)
129
+ - `teardown.destroyAfterEach` (boolean): Whether to destroy the test environment after each test. Set to `false` to keep the component rendered, allowing you to inspect its final state. (default: `true`)
130
130
 
131
131
  **Example with options:**
132
132
 
@@ -134,7 +134,7 @@ The `setupTestBed()` function accepts an optional configuration object with the
134
134
  setupTestBed({
135
135
  zoneless: true,
136
136
  providers: [],
137
- browserMode: false,
137
+ teardown: { destroyAfterEach: false },
138
138
  });
139
139
  ```
140
140
 
@@ -0,0 +1,9 @@
1
+ //#region \0@oxc-project+runtime@0.120.0/helpers/decorate.js
2
+ function __decorate(decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ }
8
+ //#endregion
9
+ export { __decorate };
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@analogjs/vitest-angular",
3
- "version": "3.0.0-alpha.1",
3
+ "version": "3.0.0-alpha.10",
4
4
  "description": "Vitest Builder for Angular",
5
5
  "type": "module",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
7
7
  "exports": {
8
8
  ".": "./src/index.js",
9
- "./package.json": "./package.json",
10
9
  "./setup-zone": "./setup-zone.js",
11
10
  "./setup-snapshots": "./setup-snapshots.js",
12
- "./setup-testbed": "./setup-testbed.js"
11
+ "./setup-testbed": "./setup-testbed.js",
12
+ "./package.json": "./package.json"
13
13
  },
14
14
  "keywords": [
15
15
  "angular",
@@ -35,6 +35,9 @@
35
35
  "ng-add": {
36
36
  "save": "devDependencies"
37
37
  },
38
+ "dependencies": {
39
+ "oxc-transform": "^0.119.0"
40
+ },
38
41
  "peerDependencies": {
39
42
  "@analogjs/vite-plugin-angular": "*",
40
43
  "@angular-devkit/architect": ">=0.1500.0 < 0.2200.0",
@@ -61,8 +64,5 @@
61
64
  "publishConfig": {
62
65
  "access": "public",
63
66
  "provenance": true
64
- },
65
- "types": "./src/index.d.ts",
66
- "module": "./src/index.js",
67
- "main": "./src/index.js"
68
- }
67
+ }
68
+ }
@@ -1,26 +1,26 @@
1
1
  declare const env: any;
2
2
  /**
3
- * Allows Vitest to handle Angular test fixtures
4
- *
5
- * Vitest Snapshot guide ==> https://vitest.dev/guide/snapshot.html
6
- *
7
- * @returns customSnapshotSerializer for Angular Fixture Component
8
- */
3
+ * Allows Vitest to handle Angular test fixtures
4
+ *
5
+ * Vitest Snapshot guide ==> https://vitest.dev/guide/snapshot.html
6
+ *
7
+ * @returns customSnapshotSerializer for Angular Fixture Component
8
+ */
9
9
  declare const customSnapshotSerializer: () => {
10
- serialize: (val: any, config: any, indentation: any, depth: any, refs: any, printer: any) => string;
11
- test: (val: any) => boolean;
10
+ serialize: (...args: any[]) => string;
11
+ test: (val: any) => boolean;
12
12
  };
13
13
  /**
14
- * Check if is an Angular fixture
15
- *
16
- * @param val Angular fixture
17
- * @returns boolean who check if is an angular fixture
18
- */
14
+ * Check if is an Angular fixture
15
+ *
16
+ * @param val Angular fixture
17
+ * @returns boolean who check if is an angular fixture
18
+ */
19
19
  declare function isAngularFixture(val: any): boolean;
20
20
  /**
21
- * Serialize Angular fixture for Vitest
22
- *
23
- * @param fixture Angular Fixture Component
24
- * @returns HTML Child Node
25
- */
21
+ * Serialize Angular fixture for Vitest
22
+ *
23
+ * @param fixture Angular Fixture Component
24
+ * @returns HTML Child Node
25
+ */
26
26
  declare function fixtureVitestSerializer(fixture: any): ChildNode;
@@ -1,104 +1,80 @@
1
- "use strict";
2
- const env = globalThis;
1
+ //#region packages/vitest-angular/setup-snapshots.ts
2
+ var env = globalThis;
3
3
  /**
4
- * Allows Vitest to handle Angular test fixtures
5
- *
6
- * Vitest Snapshot guide ==> https://vitest.dev/guide/snapshot.html
7
- *
8
- * @returns customSnapshotSerializer for Angular Fixture Component
9
- */
10
- const customSnapshotSerializer = () => {
11
- function serialize(val, config, indentation, depth, refs, printer) {
12
- // `printer` is a function that serializes a value using existing plugins.
13
- return `${printer(fixtureVitestSerializer(val), config, indentation, depth, refs)}`;
14
- }
15
- function test(val) {
16
- // * If it's a ComponentFixture we apply the transformation rules
17
- return val && isAngularFixture(val);
18
- }
19
- return {
20
- serialize,
21
- test,
22
- };
4
+ * Allows Vitest to handle Angular test fixtures
5
+ *
6
+ * Vitest Snapshot guide ==> https://vitest.dev/guide/snapshot.html
7
+ *
8
+ * @returns customSnapshotSerializer for Angular Fixture Component
9
+ */
10
+ var customSnapshotSerializer = () => {
11
+ function serialize(val, config, indentation, depth, refs, printer) {
12
+ return `${printer(fixtureVitestSerializer(val), config, indentation, depth, refs)}`;
13
+ }
14
+ function test(val) {
15
+ return val && isAngularFixture(val);
16
+ }
17
+ return {
18
+ serialize,
19
+ test
20
+ };
23
21
  };
24
22
  /**
25
- * Check if is an Angular fixture
26
- *
27
- * @param val Angular fixture
28
- * @returns boolean who check if is an angular fixture
29
- */
23
+ * Check if is an Angular fixture
24
+ *
25
+ * @param val Angular fixture
26
+ * @returns boolean who check if is an angular fixture
27
+ */
30
28
  function isAngularFixture(val) {
31
- if (typeof val !== 'object') {
32
- return false;
33
- }
34
- if (val['componentRef'] || val['componentInstance']) {
35
- return true;
36
- }
37
- if (val['componentType']) {
38
- return true;
39
- }
40
- // * Angular fixture keys in Fixture component Object
41
- const fixtureKeys = [
42
- 'componentRef',
43
- 'ngZone',
44
- 'effectRunner',
45
- '_autoDetect',
46
- '_isStable',
47
- '_isDestroyed',
48
- '_resolve',
49
- '_promise',
50
- '_onUnstableSubscription',
51
- '_onStableSubscription',
52
- '_onMicrotaskEmptySubscription',
53
- '_onErrorSubscription',
54
- 'changeDetectorRef',
55
- 'elementRef',
56
- 'debugElement',
57
- 'componentInstance',
58
- 'nativeElement',
59
- ];
60
- // * Angular fixture keys in Fixture componentRef Object
61
- const fixtureComponentRefKeys = [
62
- 'location',
63
- '_rootLView',
64
- '_tNode',
65
- 'previousInputValues',
66
- 'instance',
67
- 'changeDetectorRef',
68
- 'hostView',
69
- 'componentType',
70
- ];
71
- return (JSON.stringify(Object.keys(val)) === JSON.stringify(fixtureKeys) ||
72
- JSON.stringify(Object.keys(val)) === JSON.stringify(fixtureComponentRefKeys));
29
+ if (typeof val !== "object") return false;
30
+ if (val["componentRef"] || val["componentInstance"]) return true;
31
+ if (val["componentType"]) return true;
32
+ return JSON.stringify(Object.keys(val)) === JSON.stringify([
33
+ "componentRef",
34
+ "ngZone",
35
+ "effectRunner",
36
+ "_autoDetect",
37
+ "_isStable",
38
+ "_isDestroyed",
39
+ "_resolve",
40
+ "_promise",
41
+ "_onUnstableSubscription",
42
+ "_onStableSubscription",
43
+ "_onMicrotaskEmptySubscription",
44
+ "_onErrorSubscription",
45
+ "changeDetectorRef",
46
+ "elementRef",
47
+ "debugElement",
48
+ "componentInstance",
49
+ "nativeElement"
50
+ ]) || JSON.stringify(Object.keys(val)) === JSON.stringify([
51
+ "location",
52
+ "_rootLView",
53
+ "_tNode",
54
+ "previousInputValues",
55
+ "instance",
56
+ "changeDetectorRef",
57
+ "hostView",
58
+ "componentType"
59
+ ]);
73
60
  }
74
61
  /**
75
- * Serialize Angular fixture for Vitest
76
- *
77
- * @param fixture Angular Fixture Component
78
- * @returns HTML Child Node
79
- */
62
+ * Serialize Angular fixture for Vitest
63
+ *
64
+ * @param fixture Angular Fixture Component
65
+ * @returns HTML Child Node
66
+ */
80
67
  function fixtureVitestSerializer(fixture) {
81
- // * Get Component meta data
82
- const componentType = (fixture && fixture.componentType
83
- ? fixture.componentType
84
- : fixture.componentRef.componentType);
85
- let inputsData = '';
86
- const selector = Reflect.getOwnPropertyDescriptor(componentType, '__annotations__')?.value[0].selector;
87
- if (componentType && componentType.propDecorators) {
88
- inputsData = Object.entries(componentType.propDecorators)
89
- .map(([key, value]) => `${key}="${value}"`)
90
- .join('');
91
- }
92
- // * Get DOM Elements
93
- const divElement = fixture && fixture.nativeElement
94
- ? fixture.nativeElement
95
- : fixture.location.nativeElement;
96
- // * Convert string data to HTML data
97
- const doc = new DOMParser().parseFromString(`<${selector} ${inputsData}>${divElement.innerHTML}</${selector}>`, 'text/html');
98
- return doc.body.childNodes[0];
68
+ const componentType = fixture && fixture.componentType ? fixture.componentType : fixture.componentRef.componentType;
69
+ let inputsData = "";
70
+ const selector = Reflect.getOwnPropertyDescriptor(componentType, "__annotations__")?.value[0].selector;
71
+ if (componentType && componentType.propDecorators) inputsData = Object.entries(componentType.propDecorators).map(([key, value]) => `${key}="${value}"`).join("");
72
+ const divElement = fixture && fixture.nativeElement ? fixture.nativeElement : fixture.location.nativeElement;
73
+ return new DOMParser().parseFromString(`<${selector} ${inputsData}>${divElement.innerHTML}</${selector}>`, "text/html").body.childNodes[0];
99
74
  }
100
- ['expect'].forEach((methodName) => {
101
- const originalvitestFn = env[methodName];
102
- return originalvitestFn.addSnapshotSerializer(customSnapshotSerializer());
75
+ ["expect"].forEach((methodName) => {
76
+ return env[methodName].addSnapshotSerializer(customSnapshotSerializer());
103
77
  });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtc25hcHNob3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvdml0ZXN0LWFuZ3VsYXIvc2V0dXAtc25hcHNob3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEdBQUcsR0FBRyxVQUFpQixDQUFDO0FBRTlCOzs7Ozs7R0FNRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsR0FBRyxFQUFFO0lBQ3BDLFNBQVMsU0FBUyxDQUNoQixHQUFRLEVBQ1IsTUFBVyxFQUNYLFdBQWdCLEVBQ2hCLEtBQVUsRUFDVixJQUFTLEVBQ1QsT0FBWTtRQUVaLDBFQUEwRTtRQUMxRSxPQUFPLEdBQUcsT0FBTyxDQUNmLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxFQUM1QixNQUFNLEVBQ04sV0FBVyxFQUNYLEtBQUssRUFDTCxJQUFJLENBQ0wsRUFBRSxDQUFDO0lBQ04sQ0FBQztJQUNELFNBQVMsSUFBSSxDQUFDLEdBQVE7UUFDcEIsaUVBQWlFO1FBQ2pFLE9BQU8sR0FBRyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxPQUFPO1FBQ0wsU0FBUztRQUNULElBQUk7S0FDTCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLEdBQVE7SUFDaEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscURBQXFEO0lBQ3JELE1BQU0sV0FBVyxHQUFHO1FBQ2xCLGNBQWM7UUFDZCxRQUFRO1FBQ1IsY0FBYztRQUNkLGFBQWE7UUFDYixXQUFXO1FBQ1gsY0FBYztRQUNkLFVBQVU7UUFDVixVQUFVO1FBQ1YseUJBQXlCO1FBQ3pCLHVCQUF1QjtRQUN2QiwrQkFBK0I7UUFDL0Isc0JBQXNCO1FBQ3RCLG1CQUFtQjtRQUNuQixZQUFZO1FBQ1osY0FBYztRQUNkLG1CQUFtQjtRQUNuQixlQUFlO0tBQ2hCLENBQUM7SUFFRix3REFBd0Q7SUFDeEQsTUFBTSx1QkFBdUIsR0FBRztRQUM5QixVQUFVO1FBQ1YsWUFBWTtRQUNaLFFBQVE7UUFDUixxQkFBcUI7UUFDckIsVUFBVTtRQUNWLG1CQUFtQjtRQUNuQixVQUFVO1FBQ1YsZUFBZTtLQUNoQixDQUFDO0lBRUYsT0FBTyxDQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FDN0UsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsdUJBQXVCLENBQUMsT0FBWTtJQUMzQyw0QkFBNEI7SUFDNUIsTUFBTSxhQUFhLEdBQUcsQ0FDcEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxhQUFhO1FBQzlCLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYTtRQUN2QixDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQ2hDLENBQUM7SUFFVCxJQUFJLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFFNUIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUMvQyxhQUFhLEVBQ2IsaUJBQWlCLENBQ2xCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUVyQixJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbEQsVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQzthQUN0RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssS0FBSyxHQUFHLENBQUM7YUFDMUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixNQUFNLFVBQVUsR0FDZCxPQUFPLElBQUksT0FBTyxDQUFDLGFBQWE7UUFDOUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhO1FBQ3ZCLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztJQUVyQyxxQ0FBcUM7SUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQ3pDLElBQUksUUFBUSxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsU0FBUyxLQUFLLFFBQVEsR0FBRyxFQUNsRSxXQUFXLENBQ1osQ0FBQztJQUVGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7SUFDaEMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekMsT0FBTyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7QUFDNUUsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlbnYgPSBnbG9iYWxUaGlzIGFzIGFueTtcblxuLyoqXG4gKiBBbGxvd3MgVml0ZXN0IHRvIGhhbmRsZSBBbmd1bGFyIHRlc3QgZml4dHVyZXNcbiAqXG4gKiBWaXRlc3QgU25hcHNob3QgZ3VpZGUgPT0+IGh0dHBzOi8vdml0ZXN0LmRldi9ndWlkZS9zbmFwc2hvdC5odG1sXG4gKlxuICogQHJldHVybnMgY3VzdG9tU25hcHNob3RTZXJpYWxpemVyIGZvciBBbmd1bGFyIEZpeHR1cmUgQ29tcG9uZW50XG4gKi9cbmNvbnN0IGN1c3RvbVNuYXBzaG90U2VyaWFsaXplciA9ICgpID0+IHtcbiAgZnVuY3Rpb24gc2VyaWFsaXplKFxuICAgIHZhbDogYW55LFxuICAgIGNvbmZpZzogYW55LFxuICAgIGluZGVudGF0aW9uOiBhbnksXG4gICAgZGVwdGg6IGFueSxcbiAgICByZWZzOiBhbnksXG4gICAgcHJpbnRlcjogYW55LFxuICApOiBzdHJpbmcge1xuICAgIC8vIGBwcmludGVyYCBpcyBhIGZ1bmN0aW9uIHRoYXQgc2VyaWFsaXplcyBhIHZhbHVlIHVzaW5nIGV4aXN0aW5nIHBsdWdpbnMuXG4gICAgcmV0dXJuIGAke3ByaW50ZXIoXG4gICAgICBmaXh0dXJlVml0ZXN0U2VyaWFsaXplcih2YWwpLFxuICAgICAgY29uZmlnLFxuICAgICAgaW5kZW50YXRpb24sXG4gICAgICBkZXB0aCxcbiAgICAgIHJlZnMsXG4gICAgKX1gO1xuICB9XG4gIGZ1bmN0aW9uIHRlc3QodmFsOiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyAqIElmIGl0J3MgYSBDb21wb25lbnRGaXh0dXJlIHdlIGFwcGx5IHRoZSB0cmFuc2Zvcm1hdGlvbiBydWxlc1xuICAgIHJldHVybiB2YWwgJiYgaXNBbmd1bGFyRml4dHVyZSh2YWwpO1xuICB9XG4gIHJldHVybiB7XG4gICAgc2VyaWFsaXplLFxuICAgIHRlc3QsXG4gIH07XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGlzIGFuIEFuZ3VsYXIgZml4dHVyZVxuICpcbiAqIEBwYXJhbSB2YWwgQW5ndWxhciBmaXh0dXJlXG4gKiBAcmV0dXJucyBib29sZWFuIHdobyBjaGVjayBpZiBpcyBhbiBhbmd1bGFyIGZpeHR1cmVcbiAqL1xuZnVuY3Rpb24gaXNBbmd1bGFyRml4dHVyZSh2YWw6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHZhbCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodmFsWydjb21wb25lbnRSZWYnXSB8fCB2YWxbJ2NvbXBvbmVudEluc3RhbmNlJ10pIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh2YWxbJ2NvbXBvbmVudFR5cGUnXSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gKiBBbmd1bGFyIGZpeHR1cmUga2V5cyBpbiBGaXh0dXJlIGNvbXBvbmVudCBPYmplY3RcbiAgY29uc3QgZml4dHVyZUtleXMgPSBbXG4gICAgJ2NvbXBvbmVudFJlZicsXG4gICAgJ25nWm9uZScsXG4gICAgJ2VmZmVjdFJ1bm5lcicsXG4gICAgJ19hdXRvRGV0ZWN0JyxcbiAgICAnX2lzU3RhYmxlJyxcbiAgICAnX2lzRGVzdHJveWVkJyxcbiAgICAnX3Jlc29sdmUnLFxuICAgICdfcHJvbWlzZScsXG4gICAgJ19vblVuc3RhYmxlU3Vic2NyaXB0aW9uJyxcbiAgICAnX29uU3RhYmxlU3Vic2NyaXB0aW9uJyxcbiAgICAnX29uTWljcm90YXNrRW1wdHlTdWJzY3JpcHRpb24nLFxuICAgICdfb25FcnJvclN1YnNjcmlwdGlvbicsXG4gICAgJ2NoYW5nZURldGVjdG9yUmVmJyxcbiAgICAnZWxlbWVudFJlZicsXG4gICAgJ2RlYnVnRWxlbWVudCcsXG4gICAgJ2NvbXBvbmVudEluc3RhbmNlJyxcbiAgICAnbmF0aXZlRWxlbWVudCcsXG4gIF07XG5cbiAgLy8gKiBBbmd1bGFyIGZpeHR1cmUga2V5cyBpbiBGaXh0dXJlIGNvbXBvbmVudFJlZiBPYmplY3RcbiAgY29uc3QgZml4dHVyZUNvbXBvbmVudFJlZktleXMgPSBbXG4gICAgJ2xvY2F0aW9uJyxcbiAgICAnX3Jvb3RMVmlldycsXG4gICAgJ190Tm9kZScsXG4gICAgJ3ByZXZpb3VzSW5wdXRWYWx1ZXMnLFxuICAgICdpbnN0YW5jZScsXG4gICAgJ2NoYW5nZURldGVjdG9yUmVmJyxcbiAgICAnaG9zdFZpZXcnLFxuICAgICdjb21wb25lbnRUeXBlJyxcbiAgXTtcblxuICByZXR1cm4gKFxuICAgIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHZhbCkpID09PSBKU09OLnN0cmluZ2lmeShmaXh0dXJlS2V5cykgfHxcbiAgICBKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyh2YWwpKSA9PT0gSlNPTi5zdHJpbmdpZnkoZml4dHVyZUNvbXBvbmVudFJlZktleXMpXG4gICk7XG59XG5cbi8qKlxuICogU2VyaWFsaXplIEFuZ3VsYXIgZml4dHVyZSBmb3IgVml0ZXN0XG4gKlxuICogQHBhcmFtIGZpeHR1cmUgQW5ndWxhciBGaXh0dXJlIENvbXBvbmVudFxuICogQHJldHVybnMgSFRNTCBDaGlsZCBOb2RlXG4gKi9cbmZ1bmN0aW9uIGZpeHR1cmVWaXRlc3RTZXJpYWxpemVyKGZpeHR1cmU6IGFueSkge1xuICAvLyAqIEdldCBDb21wb25lbnQgbWV0YSBkYXRhXG4gIGNvbnN0IGNvbXBvbmVudFR5cGUgPSAoXG4gICAgZml4dHVyZSAmJiBmaXh0dXJlLmNvbXBvbmVudFR5cGVcbiAgICAgID8gZml4dHVyZS5jb21wb25lbnRUeXBlXG4gICAgICA6IGZpeHR1cmUuY29tcG9uZW50UmVmLmNvbXBvbmVudFR5cGVcbiAgKSBhcyBhbnk7XG5cbiAgbGV0IGlucHV0c0RhdGE6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0IHNlbGVjdG9yID0gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgY29tcG9uZW50VHlwZSxcbiAgICAnX19hbm5vdGF0aW9uc19fJyxcbiAgKT8udmFsdWVbMF0uc2VsZWN0b3I7XG5cbiAgaWYgKGNvbXBvbmVudFR5cGUgJiYgY29tcG9uZW50VHlwZS5wcm9wRGVjb3JhdG9ycykge1xuICAgIGlucHV0c0RhdGEgPSBPYmplY3QuZW50cmllcyhjb21wb25lbnRUeXBlLnByb3BEZWNvcmF0b3JzKVxuICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PVwiJHt2YWx1ZX1cImApXG4gICAgICAuam9pbignJyk7XG4gIH1cblxuICAvLyAqIEdldCBET00gRWxlbWVudHNcbiAgY29uc3QgZGl2RWxlbWVudCA9XG4gICAgZml4dHVyZSAmJiBmaXh0dXJlLm5hdGl2ZUVsZW1lbnRcbiAgICAgID8gZml4dHVyZS5uYXRpdmVFbGVtZW50XG4gICAgICA6IGZpeHR1cmUubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcblxuICAvLyAqIENvbnZlcnQgc3RyaW5nIGRhdGEgdG8gSFRNTCBkYXRhXG4gIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoXG4gICAgYDwke3NlbGVjdG9yfSAke2lucHV0c0RhdGF9PiR7ZGl2RWxlbWVudC5pbm5lckhUTUx9PC8ke3NlbGVjdG9yfT5gLFxuICAgICd0ZXh0L2h0bWwnLFxuICApO1xuXG4gIHJldHVybiBkb2MuYm9keS5jaGlsZE5vZGVzWzBdO1xufVxuXG5bJ2V4cGVjdCddLmZvckVhY2goKG1ldGhvZE5hbWUpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWx2aXRlc3RGbiA9IGVudlttZXRob2ROYW1lXTtcbiAgcmV0dXJuIG9yaWdpbmFsdml0ZXN0Rm4uYWRkU25hcHNob3RTZXJpYWxpemVyKGN1c3RvbVNuYXBzaG90U2VyaWFsaXplcigpKTtcbn0pO1xuIl19
78
+ //#endregion
79
+
80
+ //# sourceMappingURL=setup-snapshots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-snapshots.js","names":[],"sources":["../../../packages/vitest-angular/setup-snapshots.ts"],"sourcesContent":["const env = globalThis as any;\n\n/**\n * Allows Vitest to handle Angular test fixtures\n *\n * Vitest Snapshot guide ==> https://vitest.dev/guide/snapshot.html\n *\n * @returns customSnapshotSerializer for Angular Fixture Component\n */\nconst customSnapshotSerializer = (): {\n serialize: (...args: any[]) => string;\n test: (val: any) => boolean;\n} => {\n function serialize(\n val: any,\n config: any,\n indentation: any,\n depth: any,\n refs: any,\n printer: any,\n ): string {\n // `printer` is a function that serializes a value using existing plugins.\n return `${printer(\n fixtureVitestSerializer(val),\n config,\n indentation,\n depth,\n refs,\n )}`;\n }\n function test(val: any): boolean {\n // * If it's a ComponentFixture we apply the transformation rules\n return val && isAngularFixture(val);\n }\n return {\n serialize: serialize,\n test: test,\n };\n};\n\n/**\n * Check if is an Angular fixture\n *\n * @param val Angular fixture\n * @returns boolean who check if is an angular fixture\n */\nfunction isAngularFixture(val: any): boolean {\n if (typeof val !== 'object') {\n return false;\n }\n\n if (val['componentRef'] || val['componentInstance']) {\n return true;\n }\n\n if (val['componentType']) {\n return true;\n }\n\n // * Angular fixture keys in Fixture component Object\n const fixtureKeys = [\n 'componentRef',\n 'ngZone',\n 'effectRunner',\n '_autoDetect',\n '_isStable',\n '_isDestroyed',\n '_resolve',\n '_promise',\n '_onUnstableSubscription',\n '_onStableSubscription',\n '_onMicrotaskEmptySubscription',\n '_onErrorSubscription',\n 'changeDetectorRef',\n 'elementRef',\n 'debugElement',\n 'componentInstance',\n 'nativeElement',\n ];\n\n // * Angular fixture keys in Fixture componentRef Object\n const fixtureComponentRefKeys = [\n 'location',\n '_rootLView',\n '_tNode',\n 'previousInputValues',\n 'instance',\n 'changeDetectorRef',\n 'hostView',\n 'componentType',\n ];\n\n return (\n JSON.stringify(Object.keys(val)) === JSON.stringify(fixtureKeys) ||\n JSON.stringify(Object.keys(val)) === JSON.stringify(fixtureComponentRefKeys)\n );\n}\n\n/**\n * Serialize Angular fixture for Vitest\n *\n * @param fixture Angular Fixture Component\n * @returns HTML Child Node\n */\nfunction fixtureVitestSerializer(fixture: any): ChildNode {\n // * Get Component meta data\n const componentType = (\n fixture && fixture.componentType\n ? fixture.componentType\n : fixture.componentRef.componentType\n ) as any;\n\n let inputsData = '';\n\n const selector = Reflect.getOwnPropertyDescriptor(\n componentType,\n '__annotations__',\n )?.value[0].selector;\n\n if (componentType && componentType.propDecorators) {\n inputsData = Object.entries(componentType.propDecorators)\n .map(([key, value]) => `${key}=\"${value}\"`)\n .join('');\n }\n\n // * Get DOM Elements\n const divElement =\n fixture && fixture.nativeElement\n ? fixture.nativeElement\n : fixture.location.nativeElement;\n\n // * Convert string data to HTML data\n const doc = new DOMParser().parseFromString(\n `<${selector} ${inputsData}>${divElement.innerHTML}</${selector}>`,\n 'text/html',\n );\n\n return doc.body.childNodes[0];\n}\n\n['expect'].forEach((methodName) => {\n const originalvitestFn = env[methodName];\n return originalvitestFn.addSnapshotSerializer(customSnapshotSerializer());\n});\n"],"mappings":";AAAA,IAAM,MAAM;;;;;;;;AASZ,IAAM,iCAGD;CACH,SAAS,UACP,KACA,QACA,aACA,OACA,MACA,SACQ;AAER,SAAO,GAAG,QACR,wBAAwB,IAAI,EAC5B,QACA,aACA,OACA,KACD;;CAEH,SAAS,KAAK,KAAmB;AAE/B,SAAO,OAAO,iBAAiB,IAAI;;AAErC,QAAO;EACM;EACL;EACP;;;;;;;;AASH,SAAS,iBAAiB,KAAmB;AAC3C,KAAI,OAAO,QAAQ,SACjB,QAAO;AAGT,KAAI,IAAI,mBAAmB,IAAI,qBAC7B,QAAO;AAGT,KAAI,IAAI,iBACN,QAAO;AAoCT,QACE,KAAK,UAAU,OAAO,KAAK,IAAI,CAAC,KAAK,KAAK,UAjCxB;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAeiE,IAChE,KAAK,UAAU,OAAO,KAAK,IAAI,CAAC,KAAK,KAAK,UAbZ;EAC9B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAI6E;;;;;;;;AAUhF,SAAS,wBAAwB,SAAyB;CAExD,MAAM,gBACJ,WAAW,QAAQ,gBACf,QAAQ,gBACR,QAAQ,aAAa;CAG3B,IAAI,aAAa;CAEjB,MAAM,WAAW,QAAQ,yBACvB,eACA,kBACD,EAAE,MAAM,GAAG;AAEZ,KAAI,iBAAiB,cAAc,eACjC,cAAa,OAAO,QAAQ,cAAc,eAAe,CACtD,KAAK,CAAC,KAAK,WAAW,GAAG,IAAI,IAAI,MAAM,GAAG,CAC1C,KAAK,GAAG;CAIb,MAAM,aACJ,WAAW,QAAQ,gBACf,QAAQ,gBACR,QAAQ,SAAS;AAQvB,QALY,IAAI,WAAW,CAAC,gBAC1B,IAAI,SAAS,GAAG,WAAW,GAAG,WAAW,UAAU,IAAI,SAAS,IAChE,YACD,CAEU,KAAK,WAAW;;AAG7B,CAAC,SAAS,CAAC,SAAS,eAAe;AAEjC,QADyB,IAAI,YACL,sBAAsB,0BAA0B,CAAC;EACzE"}
@@ -1,8 +1,15 @@
1
- import { Provider } from '@angular/core';
1
+ import { EnvironmentProviders, Provider } from "@angular/core";
2
2
  type TestBedSetupOptions = {
3
- zoneless?: boolean;
4
- providers?: Provider[];
5
- browserMode?: boolean;
3
+ zoneless?: boolean;
4
+ providers?: (Provider | EnvironmentProviders)[];
5
+ /**
6
+ * @deprecated Use `teardown.destroyAfterEach` instead.
7
+ * @sunset 3.0.0
8
+ */
9
+ browserMode?: boolean;
10
+ teardown?: {
11
+ destroyAfterEach: boolean;
12
+ };
6
13
  };
7
- export declare function setupTestBed({ zoneless, providers, browserMode, }?: TestBedSetupOptions): void;
14
+ export declare function setupTestBed({ zoneless, providers, browserMode, teardown }?: TestBedSetupOptions): void;
8
15
  export {};
package/setup-testbed.js CHANGED
@@ -1,25 +1,24 @@
1
- import { __decorate } from "tslib";
2
- import { NgModule, provideZonelessChangeDetection, } from '@angular/core';
3
- import { ɵgetCleanupHook as getCleanupHook, getTestBed, } from '@angular/core/testing';
4
- import { BrowserTestingModule, platformBrowserTesting, } from '@angular/platform-browser/testing';
5
- import { afterEach, beforeEach } from 'vitest';
6
- const ANGULAR_TESTBED_SETUP = Symbol.for('testbed-setup');
7
- export function setupTestBed({ zoneless = true, providers = [], browserMode = false, } = {}) {
8
- beforeEach(getCleanupHook(false));
9
- afterEach(getCleanupHook(true));
10
- if (!globalThis[ANGULAR_TESTBED_SETUP]) {
11
- globalThis[ANGULAR_TESTBED_SETUP] = true;
12
- let TestModule = class TestModule {
13
- };
14
- TestModule = __decorate([
15
- NgModule({
16
- providers: [
17
- ...(zoneless ? [provideZonelessChangeDetection()] : []),
18
- providers,
19
- ],
20
- })
21
- ], TestModule);
22
- getTestBed().initTestEnvironment([BrowserTestingModule, TestModule], platformBrowserTesting(), browserMode ? { teardown: { destroyAfterEach: false } } : undefined);
23
- }
1
+ import { __decorate } from "./_virtual/_@oxc-project_runtime@0.120.0/helpers/decorate.js";
2
+ import { NgModule, provideZonelessChangeDetection } from "@angular/core";
3
+ import { getTestBed, ɵgetCleanupHook } from "@angular/core/testing";
4
+ import { BrowserTestingModule, platformBrowserTesting } from "@angular/platform-browser/testing";
5
+ import { afterEach, beforeEach } from "vitest";
6
+ //#region packages/vitest-angular/setup-testbed.ts
7
+ var ANGULAR_TESTBED_SETUP = Symbol.for("testbed-setup");
8
+ function setupTestBed({ zoneless = true, providers = [], browserMode = false, teardown } = {}) {
9
+ beforeEach(ɵgetCleanupHook(false));
10
+ afterEach(ɵgetCleanupHook(true));
11
+ if (!globalThis[ANGULAR_TESTBED_SETUP]) {
12
+ globalThis[ANGULAR_TESTBED_SETUP] = true;
13
+ let TestModule = class TestModule {};
14
+ TestModule = __decorate([NgModule({ providers: [...zoneless ? [provideZonelessChangeDetection()] : [], ...providers] })], TestModule);
15
+ getTestBed().initTestEnvironment([BrowserTestingModule, TestModule], platformBrowserTesting(), { teardown: {
16
+ destroyAfterEach: !browserMode,
17
+ ...teardown
18
+ } });
19
+ }
24
20
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtdGVzdGJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3ZpdGVzdC1hbmd1bGFyL3NldHVwLXRlc3RiZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxRQUFRLEVBRVIsOEJBQThCLEdBQy9CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLElBQUksY0FBYyxFQUNqQyxVQUFVLEdBQ1gsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHNCQUFzQixHQUN2QixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRS9DLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQVExRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEVBQzNCLFFBQVEsR0FBRyxJQUFJLEVBQ2YsU0FBUyxHQUFHLEVBQUUsRUFDZCxXQUFXLEdBQUcsS0FBSyxNQUNJLEVBQUU7SUFDekIsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVoQyxJQUFJLENBQUUsVUFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7UUFDL0MsVUFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLElBQUksQ0FBQztRQVFsRCxJQUFNLFVBQVUsR0FBaEIsTUFBTSxVQUFVO1NBQUcsQ0FBQTtRQUFiLFVBQVU7WUFOZixRQUFRLENBQUM7Z0JBQ1IsU0FBUyxFQUFFO29CQUNULEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZELFNBQVM7aUJBQ1Y7YUFDRixDQUFDO1dBQ0ksVUFBVSxDQUFHO1FBRW5CLFVBQVUsRUFBRSxDQUFDLG1CQUFtQixDQUM5QixDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxFQUNsQyxzQkFBc0IsRUFBRSxFQUN4QixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNwRSxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBOZ01vZHVsZSxcbiAgUHJvdmlkZXIsXG4gIHByb3ZpZGVab25lbGVzc0NoYW5nZURldGVjdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICDJtWdldENsZWFudXBIb29rIGFzIGdldENsZWFudXBIb29rLFxuICBnZXRUZXN0QmVkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHtcbiAgQnJvd3NlclRlc3RpbmdNb2R1bGUsXG4gIHBsYXRmb3JtQnJvd3NlclRlc3RpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvdGVzdGluZyc7XG5pbXBvcnQgeyBhZnRlckVhY2gsIGJlZm9yZUVhY2ggfSBmcm9tICd2aXRlc3QnO1xuXG5jb25zdCBBTkdVTEFSX1RFU1RCRURfU0VUVVAgPSBTeW1ib2wuZm9yKCd0ZXN0YmVkLXNldHVwJyk7XG5cbnR5cGUgVGVzdEJlZFNldHVwT3B0aW9ucyA9IHtcbiAgem9uZWxlc3M/OiBib29sZWFuO1xuICBwcm92aWRlcnM/OiBQcm92aWRlcltdO1xuICBicm93c2VyTW9kZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBUZXN0QmVkKHtcbiAgem9uZWxlc3MgPSB0cnVlLFxuICBwcm92aWRlcnMgPSBbXSxcbiAgYnJvd3Nlck1vZGUgPSBmYWxzZSxcbn06IFRlc3RCZWRTZXR1cE9wdGlvbnMgPSB7fSkge1xuICBiZWZvcmVFYWNoKGdldENsZWFudXBIb29rKGZhbHNlKSk7XG4gIGFmdGVyRWFjaChnZXRDbGVhbnVwSG9vayh0cnVlKSk7XG5cbiAgaWYgKCEoZ2xvYmFsVGhpcyBhcyBhbnkpW0FOR1VMQVJfVEVTVEJFRF9TRVRVUF0pIHtcbiAgICAoZ2xvYmFsVGhpcyBhcyBhbnkpW0FOR1VMQVJfVEVTVEJFRF9TRVRVUF0gPSB0cnVlO1xuXG4gICAgQE5nTW9kdWxlKHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAuLi4oem9uZWxlc3MgPyBbcHJvdmlkZVpvbmVsZXNzQ2hhbmdlRGV0ZWN0aW9uKCldIDogW10pLFxuICAgICAgICBwcm92aWRlcnMsXG4gICAgICBdLFxuICAgIH0pXG4gICAgY2xhc3MgVGVzdE1vZHVsZSB7fVxuXG4gICAgZ2V0VGVzdEJlZCgpLmluaXRUZXN0RW52aXJvbm1lbnQoXG4gICAgICBbQnJvd3NlclRlc3RpbmdNb2R1bGUsIFRlc3RNb2R1bGVdLFxuICAgICAgcGxhdGZvcm1Ccm93c2VyVGVzdGluZygpLFxuICAgICAgYnJvd3Nlck1vZGUgPyB7IHRlYXJkb3duOiB7IGRlc3Ryb3lBZnRlckVhY2g6IGZhbHNlIH0gfSA6IHVuZGVmaW5lZCxcbiAgICApO1xuICB9XG59XG4iXX0=
21
+ //#endregion
22
+ export { setupTestBed };
23
+
24
+ //# sourceMappingURL=setup-testbed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-testbed.js","names":[],"sources":["../../../packages/vitest-angular/setup-testbed.ts"],"sourcesContent":["import {\n EnvironmentProviders,\n NgModule,\n Provider,\n provideZonelessChangeDetection,\n} from '@angular/core';\nimport {\n ɵgetCleanupHook as getCleanupHook,\n getTestBed,\n} from '@angular/core/testing';\nimport {\n BrowserTestingModule,\n platformBrowserTesting,\n} from '@angular/platform-browser/testing';\nimport { afterEach, beforeEach } from 'vitest';\n\nconst ANGULAR_TESTBED_SETUP = Symbol.for('testbed-setup');\n\ntype TestBedSetupOptions = {\n zoneless?: boolean;\n providers?: (Provider | EnvironmentProviders)[];\n /**\n * @deprecated Use `teardown.destroyAfterEach` instead.\n * @sunset 3.0.0\n */\n browserMode?: boolean;\n teardown?: {\n destroyAfterEach: boolean;\n };\n};\n\nexport function setupTestBed({\n zoneless = true,\n providers = [],\n browserMode = false,\n teardown,\n}: TestBedSetupOptions = {}): void {\n beforeEach(getCleanupHook(false));\n afterEach(getCleanupHook(true));\n\n if (!(globalThis as any)[ANGULAR_TESTBED_SETUP]) {\n (globalThis as any)[ANGULAR_TESTBED_SETUP] = true;\n\n @NgModule({\n providers: [\n ...(zoneless ? [provideZonelessChangeDetection()] : []),\n ...providers,\n ],\n })\n class TestModule {}\n\n getTestBed().initTestEnvironment(\n [BrowserTestingModule, TestModule],\n platformBrowserTesting(),\n {\n teardown: {\n ...{ destroyAfterEach: !browserMode },\n ...teardown,\n },\n },\n );\n }\n}\n"],"mappings":";;;;;;AAgBA,IAAM,wBAAwB,OAAO,IAAI,gBAAgB;AAezD,SAAgB,aAAa,EAC3B,WAAW,MACX,YAAY,EAAE,EACd,cAAc,OACd,aACuB,EAAE,EAAQ;AACjC,YAAW,gBAAe,MAAM,CAAC;AACjC,WAAU,gBAAe,KAAK,CAAC;AAE/B,KAAI,CAAE,WAAmB,wBAAwB;AAC9C,aAAmB,yBAAyB;EAE7C,IAAA,aAAA,MAMM,WAAW;2BANhB,SAAS,EACR,WAAW,CACT,GAAI,WAAW,CAAC,gCAAgC,CAAC,GAAG,EAAE,EACtD,GAAG,UACJ,EACF,CAAC,CAAA,EAAA,WAAA;AAGF,cAAY,CAAC,oBACX,CAAC,sBAAsB,WAAW,EAClC,wBAAwB,EACxB,EACE,UAAU;GACH,kBAAkB,CAAC;GACxB,GAAG;GACJ,EACF,CACF"}
package/setup-zone.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import 'zone.js';
2
- import 'zone.js/plugins/sync-test';
3
- import 'zone.js/plugins/proxy';
4
- import 'zone.js/testing';
5
- import './setup-snapshots.js';
1
+ import "zone.js";
2
+ import "zone.js/plugins/sync-test";
3
+ import "zone.js/plugins/proxy";
4
+ import "zone.js/testing";
5
+ import "./setup-snapshots.js";
6
+ export {};