@o3r/testing 12.5.0-prerelease.33 → 12.5.0-prerelease.35
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/core/angular/angular-materials/autocomplete-material.js +9 -20
- package/core/angular/angular-materials/autocomplete-material.js.map +1 -1
- package/core/angular/angular-materials/index.js +1 -1
- package/core/angular/angular-materials/select-material.js +42 -91
- package/core/angular/angular-materials/select-material.js.map +1 -1
- package/core/angular/angular-materials/slider-material.js +8 -11
- package/core/angular/angular-materials/slider-material.js.map +1 -1
- package/core/angular/component-fixture.js +68 -148
- package/core/angular/component-fixture.js.map +1 -1
- package/core/angular/element.js +44 -50
- package/core/angular/element.js.map +1 -1
- package/core/angular/elements/checkbox-element.js +12 -16
- package/core/angular/elements/checkbox-element.js.map +1 -1
- package/core/angular/elements/index.js +1 -1
- package/core/angular/elements/radio-element.js +12 -16
- package/core/angular/elements/radio-element.js.map +1 -1
- package/core/angular/elements/select-element.js +28 -49
- package/core/angular/elements/select-element.js.map +1 -1
- package/core/angular/elements/slider-element.js +38 -42
- package/core/angular/elements/slider-element.js.map +1 -1
- package/core/angular/group.js +9 -14
- package/core/angular/group.js.map +1 -1
- package/core/angular/groups/index.js +1 -1
- package/core/angular/groups/radio-group.js +25 -62
- package/core/angular/groups/radio-group.js.map +1 -1
- package/core/angular/index.js +1 -1
- package/core/angular/page-fixture.js +8 -11
- package/core/angular/page-fixture.js.map +1 -1
- package/core/angular-materials/autocomplete-material.js +8 -11
- package/core/angular-materials/autocomplete-material.js.map +1 -1
- package/core/angular-materials/index.js +1 -1
- package/core/angular-materials/select-material.js +12 -15
- package/core/angular-materials/select-material.js.map +1 -1
- package/core/angular-materials/slider-material.js +5 -8
- package/core/angular-materials/slider-material.js.map +1 -1
- package/core/component-fixture.js +28 -33
- package/core/component-fixture.js.map +1 -1
- package/core/element.js +24 -26
- package/core/element.js.map +1 -1
- package/core/elements/checkbox-element.js +12 -16
- package/core/elements/checkbox-element.js.map +1 -1
- package/core/elements/index.js +1 -1
- package/core/elements/radio-element.js +12 -16
- package/core/elements/radio-element.js.map +1 -1
- package/core/elements/select-element.js +10 -13
- package/core/elements/select-element.js.map +1 -1
- package/core/elements/slider-element.js +5 -8
- package/core/elements/slider-element.js.map +1 -1
- package/core/group.js +9 -15
- package/core/group.js.map +1 -1
- package/core/groups/index.js +1 -1
- package/core/groups/radio-group.js +8 -11
- package/core/groups/radio-group.js.map +1 -1
- package/core/helpers.js +11 -16
- package/core/helpers.js.map +1 -1
- package/core/index.js +1 -1
- package/core/page-fixture.js +8 -11
- package/core/page-fixture.js.map +1 -1
- package/core/playwright/angular-materials/autocomplete-material.js +26 -56
- package/core/playwright/angular-materials/autocomplete-material.js.map +1 -1
- package/core/playwright/angular-materials/index.js +1 -1
- package/core/playwright/angular-materials/select-material.js +48 -110
- package/core/playwright/angular-materials/select-material.js.map +1 -1
- package/core/playwright/angular-materials/slider-material.js +7 -10
- package/core/playwright/angular-materials/slider-material.js.map +1 -1
- package/core/playwright/component-fixture.js +88 -173
- package/core/playwright/component-fixture.js.map +1 -1
- package/core/playwright/element.js +38 -90
- package/core/playwright/element.js.map +1 -1
- package/core/playwright/elements/checkbox-element.js +49 -94
- package/core/playwright/elements/checkbox-element.js.map +1 -1
- package/core/playwright/elements/index.js +1 -1
- package/core/playwright/elements/radio-element.js +18 -34
- package/core/playwright/elements/radio-element.js.map +1 -1
- package/core/playwright/elements/select-element.js +14 -21
- package/core/playwright/elements/select-element.js.map +1 -1
- package/core/playwright/elements/slider-element.js +78 -157
- package/core/playwright/elements/slider-element.js.map +1 -1
- package/core/playwright/group.js +9 -14
- package/core/playwright/group.js.map +1 -1
- package/core/playwright/groups/index.js +1 -1
- package/core/playwright/groups/radio-group.js +27 -64
- package/core/playwright/groups/radio-group.js.map +1 -1
- package/core/playwright/index.js +1 -1
- package/core/playwright/page-fixture.js +8 -18
- package/core/playwright/page-fixture.js.map +1 -1
- package/core/protractor/angular-materials/autocomplete-material.js +12 -26
- package/core/protractor/angular-materials/autocomplete-material.js.map +1 -1
- package/core/protractor/angular-materials/index.js +1 -1
- package/core/protractor/angular-materials/select-material.js +45 -97
- package/core/protractor/angular-materials/select-material.js.map +1 -1
- package/core/protractor/component-fixture.js +89 -200
- package/core/protractor/component-fixture.js.map +1 -1
- package/core/protractor/element.js +46 -118
- package/core/protractor/element.js.map +1 -1
- package/core/protractor/elements/checkbox-element.js +18 -40
- package/core/protractor/elements/checkbox-element.js.map +1 -1
- package/core/protractor/elements/index.js +1 -1
- package/core/protractor/elements/radio-element.js +20 -42
- package/core/protractor/elements/radio-element.js.map +1 -1
- package/core/protractor/elements/select-element.js +16 -37
- package/core/protractor/elements/select-element.js.map +1 -1
- package/core/protractor/group.js +9 -14
- package/core/protractor/group.js.map +1 -1
- package/core/protractor/groups/index.js +1 -1
- package/core/protractor/groups/radio-group.js +29 -66
- package/core/protractor/groups/radio-group.js.map +1 -1
- package/core/protractor/index.js +1 -1
- package/core/protractor/page-fixture.js +9 -12
- package/core/protractor/page-fixture.js.map +1 -1
- package/core/protractor/utils.js +1 -1
- package/core/protractor/utils.js.map +1 -1
- package/errors/fixture-usage-error.js +5 -10
- package/errors/fixture-usage-error.js.map +1 -1
- package/errors/index.js +1 -1
- package/errors/transpilation-purpose-only.js +5 -10
- package/errors/transpilation-purpose-only.js.map +1 -1
- package/kassette/index.js +1 -1
- package/kassette/update-dates-in-mocks.js +66 -85
- package/kassette/update-dates-in-mocks.js.map +1 -1
- package/localization/index.js +1 -1
- package/localization/localization-mock.js +38 -60
- package/localization/localization-mock.js.map +1 -1
- package/mocks/index.js +1 -1
- package/mocks/mock-component-generator.js +54 -53
- package/mocks/mock-component-generator.js.map +1 -1
- package/package.json +11 -11
- package/public_api.js +1 -1
- package/store/index.js +1 -1
- package/store/testable-select.js +13 -13
- package/store/testable-select.js.map +1 -1
- package/tools/index.js +1 -1
- package/tools/path-replacement/index.js +1 -1
- package/tools/path-replacement/path-replacement.js +24 -19
- package/tools/path-replacement/path-replacement.js.map +1 -1
- package/tools/protractor/fetch-manager/index.js +1 -1
- package/tools/protractor/fetch-manager/utils.js +15 -51
- package/tools/protractor/fetch-manager/utils.js.map +1 -1
- package/tools/protractor/index.js +1 -1
- package/tools/protractor/post-message-interceptor/index.js +1 -1
- package/tools/protractor/post-message-interceptor/post-message-interceptor.js +30 -103
- package/tools/protractor/post-message-interceptor/post-message-interceptor.js.map +1 -1
- package/visual-test/index.js +1 -1
- package/visual-test/utils.js +18 -7
- package/visual-test/utils.js.map +1 -1
- package/visual-test/visual-test.js +29 -34
- package/visual-test/visual-test.js.map +1 -1
- package/visual-testing-reporter/index.d.ts.map +1 -1
- package/visual-testing-reporter/index.js +37 -40
- package/visual-testing-reporter/index.js.map +1 -1
@@ -1,71 +1,52 @@
|
|
1
1
|
"use strict";
|
2
|
+
var LocalizationDependencyMocks_1;
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
4
|
exports.LocalizationDependencyMocks = exports.O3rTranslatePipeMock = exports.TranslatePipeMock = void 0;
|
4
5
|
exports.mockTranslationModules = mockTranslationModules;
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
const tslib_1 = require("tslib");
|
7
|
+
const core_1 = require("@angular/core");
|
8
|
+
const core_2 = require("@ngx-translate/core");
|
9
|
+
const localization_1 = require("@o3r/localization");
|
10
|
+
const rxjs_1 = require("rxjs");
|
11
|
+
const defaultLocalizationConfiguration = {
|
11
12
|
supportedLocales: ['en'],
|
12
13
|
language: 'en',
|
13
14
|
endPointUrl: '',
|
14
15
|
fallbackLanguage: 'en'
|
15
16
|
};
|
16
|
-
|
17
|
-
|
17
|
+
let TranslatePipeMock = class TranslatePipeMock {
|
18
|
+
transform(...args) {
|
19
|
+
return args && args.map((arg) => JSON.parse(arg)).join(', ');
|
18
20
|
}
|
19
|
-
|
20
|
-
var args = [];
|
21
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
22
|
-
args[_i] = arguments[_i];
|
23
|
-
}
|
24
|
-
return args && args.map(function (arg) { return JSON.parse(arg); }).join(', ');
|
25
|
-
};
|
26
|
-
TranslatePipeMock = tslib_1.__decorate([
|
27
|
-
(0, core_1.Pipe)({ name: 'translate' })
|
28
|
-
], TranslatePipeMock);
|
29
|
-
return TranslatePipeMock;
|
30
|
-
}());
|
21
|
+
};
|
31
22
|
exports.TranslatePipeMock = TranslatePipeMock;
|
32
|
-
|
33
|
-
|
23
|
+
exports.TranslatePipeMock = TranslatePipeMock = tslib_1.__decorate([
|
24
|
+
(0, core_1.Pipe)({ name: 'translate' })
|
25
|
+
], TranslatePipeMock);
|
26
|
+
let O3rTranslatePipeMock = class O3rTranslatePipeMock {
|
27
|
+
transform(...args) {
|
28
|
+
return args && args.map((arg) => JSON.parse(arg)).join(', ');
|
34
29
|
}
|
35
|
-
|
36
|
-
var args = [];
|
37
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
38
|
-
args[_i] = arguments[_i];
|
39
|
-
}
|
40
|
-
return args && args.map(function (arg) { return JSON.parse(arg); }).join(', ');
|
41
|
-
};
|
42
|
-
O3rTranslatePipeMock = tslib_1.__decorate([
|
43
|
-
(0, core_1.Pipe)({ name: 'o3rTranslate' })
|
44
|
-
], O3rTranslatePipeMock);
|
45
|
-
return O3rTranslatePipeMock;
|
46
|
-
}());
|
30
|
+
};
|
47
31
|
exports.O3rTranslatePipeMock = O3rTranslatePipeMock;
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
if (pipeWithPrefix === void 0) { pipeWithPrefix = false; }
|
32
|
+
exports.O3rTranslatePipeMock = O3rTranslatePipeMock = tslib_1.__decorate([
|
33
|
+
(0, core_1.Pipe)({ name: 'o3rTranslate' })
|
34
|
+
], O3rTranslatePipeMock);
|
35
|
+
let LocalizationDependencyMocks = LocalizationDependencyMocks_1 = class LocalizationDependencyMocks {
|
36
|
+
static forTest(pipeWithPrefix = false) {
|
54
37
|
return {
|
55
38
|
ngModule: LocalizationDependencyMocks_1,
|
56
39
|
providers: [{ provide: localization_1.O3rLocalizationTranslatePipe, useClass: pipeWithPrefix ? O3rTranslatePipeMock : TranslatePipeMock }]
|
57
40
|
};
|
58
|
-
}
|
59
|
-
|
60
|
-
LocalizationDependencyMocks = LocalizationDependencyMocks_1 = tslib_1.__decorate([
|
61
|
-
(0, core_1.NgModule)({
|
62
|
-
declarations: [TranslatePipeMock, O3rTranslatePipeMock],
|
63
|
-
exports: [TranslatePipeMock, O3rTranslatePipeMock]
|
64
|
-
})
|
65
|
-
], LocalizationDependencyMocks);
|
66
|
-
return LocalizationDependencyMocks;
|
67
|
-
}());
|
41
|
+
}
|
42
|
+
};
|
68
43
|
exports.LocalizationDependencyMocks = LocalizationDependencyMocks;
|
44
|
+
exports.LocalizationDependencyMocks = LocalizationDependencyMocks = LocalizationDependencyMocks_1 = tslib_1.__decorate([
|
45
|
+
(0, core_1.NgModule)({
|
46
|
+
declarations: [TranslatePipeMock, O3rTranslatePipeMock],
|
47
|
+
exports: [TranslatePipeMock, O3rTranslatePipeMock]
|
48
|
+
})
|
49
|
+
], LocalizationDependencyMocks);
|
69
50
|
/**
|
70
51
|
* Function to get the list of modules required to test component using Localization module
|
71
52
|
* @param localizationConfiguration Localization configuration
|
@@ -75,22 +56,19 @@ exports.LocalizationDependencyMocks = LocalizationDependencyMocks;
|
|
75
56
|
* @param pipeWithPrefix Enable pipe with prefix
|
76
57
|
* @returns List of modules to import in the TestBed
|
77
58
|
*/
|
78
|
-
function mockTranslationModules(localizationConfiguration, translations, translationCompilerProvider, mockPipe, pipeWithPrefix) {
|
79
|
-
|
80
|
-
|
81
|
-
if (mockPipe === void 0) { mockPipe = false; }
|
82
|
-
if (pipeWithPrefix === void 0) { pipeWithPrefix = false; }
|
83
|
-
return tslib_1.__spreadArray([
|
84
|
-
localization_1.LocalizationModule.forRoot(function () { return localizationConfiguration; }),
|
59
|
+
function mockTranslationModules(localizationConfiguration = defaultLocalizationConfiguration, translations = {}, translationCompilerProvider, mockPipe = false, pipeWithPrefix = false) {
|
60
|
+
return [
|
61
|
+
localization_1.LocalizationModule.forRoot(() => localizationConfiguration),
|
85
62
|
core_2.TranslateModule.forRoot({
|
86
63
|
loader: {
|
87
64
|
provide: core_2.TranslateLoader,
|
88
65
|
useValue: {
|
89
|
-
getTranslation:
|
66
|
+
getTranslation: (lang) => (0, rxjs_1.of)(translations[lang])
|
90
67
|
}
|
91
68
|
},
|
92
69
|
compiler: translationCompilerProvider
|
93
|
-
})
|
94
|
-
|
70
|
+
}),
|
71
|
+
...(mockPipe ? [LocalizationDependencyMocks.forTest(pipeWithPrefix)] : [])
|
72
|
+
];
|
95
73
|
}
|
96
74
|
//# sourceMappingURL=localization-mock.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"localization-mock.js","sourceRoot":"","sources":["../../src/localization/localization-mock.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"localization-mock.js","sourceRoot":"","sources":["../../src/localization/localization-mock.ts"],"names":[],"mappings":";;;;AAsEA,wDAoBC;;AA1FD,wCAMuB;AACvB,8CAG6B;AAC7B,oDAI2B;AAC3B,+BAEc;AAEd,MAAM,gCAAgC,GAAG;IACvC,gBAAgB,EAAE,CAAC,IAAI,CAAC;IACxB,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,EAAE;IACf,gBAAgB,EAAE,IAAI;CAC+B,CAAC;AAGjD,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACrB,SAAS,CAAC,GAAG,IAAW;QAC7B,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;CACF,CAAA;AAJY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,WAAI,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;GACf,iBAAiB,CAI7B;AAGM,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACxB,SAAS,CAAC,GAAG,IAAW;QAC7B,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;CACF,CAAA;AAJY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,WAAI,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;GAClB,oBAAoB,CAIhC;AAMM,IAAM,2BAA2B,mCAAjC,MAAM,2BAA2B;IAC/B,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,KAAK;QAC1C,OAAO;YACL,QAAQ,EAAE,6BAA2B;YACrC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,2CAA4B,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;SAC5H,CAAC;IACJ,CAAC;CACF,CAAA;AAPY,kEAA2B;sCAA3B,2BAA2B;IAJvC,IAAA,eAAQ,EAAC;QACR,YAAY,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;QACvD,OAAO,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;KACnD,CAAC;GACW,2BAA2B,CAOvC;AASD;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CACpC,4BAAgE,gCAAgC,EAChG,eAAiC,EAAE,EACnC,2BAAsC,EACtC,QAAQ,GAAG,KAAK,EAChB,cAAc,GAAG,KAAK;IAEtB,OAAO;QACL,iCAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC;QAC3D,sBAAe,CAAC,OAAO,CAAC;YACtB,MAAM,EAAE;gBACN,OAAO,EAAE,sBAAe;gBACxB,QAAQ,EAAE;oBACR,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAA,SAAE,EAAC,YAAY,CAAC,IAAI,CAAC,CAAC;iBACzD;aACF;YACD,QAAQ,EAAE,2BAA2B;SACtC,CAAC;QACF,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAC;AACJ,CAAC","sourcesContent":["import {\n ModuleWithProviders,\n NgModule,\n Pipe,\n PipeTransform,\n Provider,\n} from '@angular/core';\nimport {\n TranslateLoader,\n TranslateModule,\n} from '@ngx-translate/core';\nimport {\n LocalizationConfiguration,\n LocalizationModule,\n O3rLocalizationTranslatePipe,\n} from '@o3r/localization';\nimport {\n of,\n} from 'rxjs';\n\nconst defaultLocalizationConfiguration = {\n supportedLocales: ['en'],\n language: 'en',\n endPointUrl: '',\n fallbackLanguage: 'en'\n} as const satisfies Partial<LocalizationConfiguration>;\n\n@Pipe({ name: 'translate' })\nexport class TranslatePipeMock implements PipeTransform {\n public transform(...args: any[]): string | undefined {\n return args && args.map((arg) => JSON.parse(arg)).join(', ');\n }\n}\n\n@Pipe({ name: 'o3rTranslate' })\nexport class O3rTranslatePipeMock implements PipeTransform {\n public transform(...args: any[]): string | undefined {\n return args && args.map((arg) => JSON.parse(arg)).join(', ');\n }\n}\n\n@NgModule({\n declarations: [TranslatePipeMock, O3rTranslatePipeMock],\n exports: [TranslatePipeMock, O3rTranslatePipeMock]\n})\nexport class LocalizationDependencyMocks {\n public static forTest(pipeWithPrefix = false): ModuleWithProviders<LocalizationDependencyMocks> {\n return {\n ngModule: LocalizationDependencyMocks,\n providers: [{ provide: O3rLocalizationTranslatePipe, useClass: pipeWithPrefix ? O3rTranslatePipeMock : TranslatePipeMock }]\n };\n }\n}\n\n/** Mock to provide to the MockTranslation module */\nexport interface MockTranslations {\n [lang: string]: {\n [key: string]: any;\n };\n}\n\n/**\n * Function to get the list of modules required to test component using Localization module\n * @param localizationConfiguration Localization configuration\n * @param translations Translations to use\n * @param translationCompilerProvider Provider for translations compiler\n * @param mockPipe Enable translation pipe mocking\n * @param pipeWithPrefix Enable pipe with prefix\n * @returns List of modules to import in the TestBed\n */\nexport function mockTranslationModules(\n localizationConfiguration: Partial<LocalizationConfiguration> = defaultLocalizationConfiguration,\n translations: MockTranslations = {},\n translationCompilerProvider?: Provider,\n mockPipe = false,\n pipeWithPrefix = false\n): ModuleWithProviders<LocalizationModule>[] {\n return [\n LocalizationModule.forRoot(() => localizationConfiguration),\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useValue: {\n getTranslation: (lang: string) => of(translations[lang])\n }\n },\n compiler: translationCompilerProvider\n }),\n ...(mockPipe ? [LocalizationDependencyMocks.forTest(pipeWithPrefix)] : [])\n ];\n}\n"]}
|
package/mocks/index.js
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.generateMockComponent = generateMockComponent;
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
var ts = require("typescript");
|
4
|
+
const core_1 = require("@angular/core");
|
5
|
+
const forms_1 = require("@angular/forms");
|
6
|
+
const ts = require("typescript");
|
8
7
|
/**
|
9
8
|
* Determine if the node in an input field
|
10
9
|
* @param node Typescript AST Node
|
@@ -28,18 +27,18 @@ function isOutputNode(node, source) {
|
|
28
27
|
* @param source Typescript source file
|
29
28
|
*/
|
30
29
|
function getIOName(currentNode, decorator, source) {
|
31
|
-
|
30
|
+
const nameInDecorator = decorator.getText(source).match(/@(input|output) *\( *(["'](.*)["'])? *\) */i);
|
32
31
|
if (nameInDecorator && nameInDecorator[3]) {
|
33
32
|
return nameInDecorator[3];
|
34
33
|
}
|
35
34
|
else {
|
36
|
-
|
37
|
-
currentNode.forEachChild(
|
35
|
+
let name;
|
36
|
+
currentNode.forEachChild((node) => {
|
38
37
|
if (ts.isIdentifier(node)) {
|
39
|
-
|
38
|
+
name = node.getText(source);
|
40
39
|
}
|
41
40
|
});
|
42
|
-
return
|
41
|
+
return name;
|
43
42
|
}
|
44
43
|
}
|
45
44
|
/**
|
@@ -48,30 +47,30 @@ function getIOName(currentNode, decorator, source) {
|
|
48
47
|
* @param source Typescript source file
|
49
48
|
*/
|
50
49
|
function parseIO(parentNode, source) {
|
51
|
-
|
52
|
-
|
53
|
-
parentNode.forEachChild(
|
50
|
+
const outputs = [];
|
51
|
+
const inputs = [];
|
52
|
+
parentNode.forEachChild((node) => {
|
54
53
|
if (isInputNode(node, source)) {
|
55
|
-
|
56
|
-
if (
|
57
|
-
inputs.push(
|
54
|
+
const name = getIOName(parentNode, node, source);
|
55
|
+
if (name) {
|
56
|
+
inputs.push(name);
|
58
57
|
}
|
59
58
|
}
|
60
59
|
else if (isOutputNode(node, source)) {
|
61
|
-
|
62
|
-
if (
|
63
|
-
outputs.push(
|
60
|
+
const name = getIOName(parentNode, node, source);
|
61
|
+
if (name) {
|
62
|
+
outputs.push(name);
|
64
63
|
}
|
65
64
|
}
|
66
65
|
else {
|
67
|
-
|
68
|
-
inputs.push
|
69
|
-
outputs.push
|
66
|
+
const childrenResult = parseIO(node, source);
|
67
|
+
inputs.push(...childrenResult.inputs);
|
68
|
+
outputs.push(...childrenResult.outputs);
|
70
69
|
}
|
71
70
|
});
|
72
71
|
return {
|
73
|
-
outputs
|
74
|
-
inputs
|
72
|
+
outputs,
|
73
|
+
inputs
|
75
74
|
};
|
76
75
|
}
|
77
76
|
/**
|
@@ -81,13 +80,11 @@ function parseIO(parentNode, source) {
|
|
81
80
|
* @param isInDecorator true if the recursive execution is in a decorator
|
82
81
|
* @param isInComponentConfig true if the recursive execution is in a component decorator configuration
|
83
82
|
*/
|
84
|
-
function getSelector(parentNode, source, isInDecorator, isInComponentConfig) {
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
var ret;
|
90
|
-
parentNode.forEachChild(function (node) {
|
83
|
+
function getSelector(parentNode, source, isInDecorator = false, isInComponentConfig = false) {
|
84
|
+
let foundDecorator = false;
|
85
|
+
let foundSelector = false;
|
86
|
+
let ret;
|
87
|
+
parentNode.forEachChild((node) => {
|
91
88
|
if (isInDecorator && isInComponentConfig && ts.isIdentifier(node) && node.getText(source) === 'selector') {
|
92
89
|
foundSelector = true;
|
93
90
|
}
|
@@ -128,35 +125,39 @@ function getSelector(parentNode, source, isInDecorator, isInComponentConfig) {
|
|
128
125
|
* ```
|
129
126
|
*/
|
130
127
|
function generateMockComponent(componentPath, config) {
|
131
|
-
|
132
|
-
|
128
|
+
const program = ts.createProgram([componentPath], {});
|
129
|
+
const source = program.getSourceFile(componentPath);
|
133
130
|
if (!source) {
|
134
131
|
throw new Error('No Source found');
|
135
132
|
}
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
var _this = this;
|
133
|
+
const { outputs, inputs } = parseIO(source, source);
|
134
|
+
const mock = class {
|
135
|
+
constructor() {
|
140
136
|
Object.keys(outputs)
|
141
|
-
.forEach(
|
137
|
+
.forEach((outputName) => this[outputName] = new core_1.EventEmitter());
|
142
138
|
if (config && config.isControlValueAccessor) {
|
143
|
-
this.writeValue =
|
144
|
-
this.registerOnChange =
|
145
|
-
this.registerOnTouched =
|
139
|
+
this.writeValue = () => { };
|
140
|
+
this.registerOnChange = () => { };
|
141
|
+
this.registerOnTouched = () => { };
|
146
142
|
}
|
147
143
|
}
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
144
|
+
};
|
145
|
+
return (0, core_1.Component)({
|
146
|
+
template: config?.template || '',
|
147
|
+
selector: getSelector(source, source) || '',
|
148
|
+
inputs,
|
149
|
+
outputs,
|
150
|
+
...(config && config.isControlValueAccessor)
|
151
|
+
? {
|
152
|
+
providers: [
|
153
|
+
{
|
154
|
+
provide: forms_1.NG_VALUE_ACCESSOR,
|
155
|
+
useExisting: (0, core_1.forwardRef)(() => mock),
|
156
|
+
multi: true
|
157
|
+
}
|
158
|
+
]
|
159
|
+
}
|
160
|
+
: {}
|
161
|
+
})(mock);
|
161
162
|
}
|
162
163
|
//# sourceMappingURL=mock-component-generator.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mock-component-generator.js","sourceRoot":"","sources":["../../src/mocks/mock-component-generator.ts"],"names":[],"mappings":";;AAmIA,sDAyCC
|
1
|
+
{"version":3,"file":"mock-component-generator.js","sourceRoot":"","sources":["../../src/mocks/mock-component-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n EventEmitter,\n forwardRef,\n Type,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport * as ts from 'typescript';\n\n/**\n * Determine if the node in an input field\n * @param node Typescript AST Node\n * @param source Typescript source file\n */\nfunction isInputNode(node: ts.Node, source: ts.SourceFile): node is ts.Decorator {\n return ts.isDecorator(node) && node.getText(source).startsWith('@Input');\n}\n\n/**\n * Determine if the node in an output field\n * @param node Typescript AST Node\n * @param source Typescript source file\n */\nfunction isOutputNode(node: ts.Node, source: ts.SourceFile): node is ts.Decorator {\n return ts.isDecorator(node) && node.getText(source).startsWith('@Output');\n}\n\n/**\n * Get the name of the input / output\n * @param currentNode Typescript AST Node\n * @param decorator Current Input/Output decorator node\n * @param source Typescript source file\n */\nfunction getIOName(currentNode: ts.Node, decorator: ts.Decorator, source: ts.SourceFile): string | undefined {\n const nameInDecorator = decorator.getText(source).match(/@(input|output) *\\( *([\"'](.*)[\"'])? *\\) */i);\n if (nameInDecorator && nameInDecorator[3]) {\n return nameInDecorator[3];\n } else {\n let name: string | undefined;\n currentNode.forEachChild((node) => {\n if (ts.isIdentifier(node)) {\n name = node.getText(source);\n }\n });\n return name;\n }\n}\n\n/**\n * Get the list of Input and Output of a component\n * @param parentNode Typescript AST Node\n * @param source Typescript source file\n */\nfunction parseIO(parentNode: ts.Node, source: ts.SourceFile): { outputs: string[]; inputs: string[] } {\n const outputs: string[] = [];\n const inputs: string[] = [];\n\n parentNode.forEachChild((node) => {\n if (isInputNode(node, source)) {\n const name = getIOName(parentNode, node, source);\n if (name) {\n inputs.push(name);\n }\n } else if (isOutputNode(node, source)) {\n const name = getIOName(parentNode, node, source);\n if (name) {\n outputs.push(name);\n }\n } else {\n const childrenResult = parseIO(node, source);\n inputs.push(...childrenResult.inputs);\n outputs.push(...childrenResult.outputs);\n }\n });\n\n return {\n outputs,\n inputs\n };\n}\n\n/**\n * Get the selector of an angular class\n * @param parentNode Typescript AST Node\n * @param source Typescript source file\n * @param isInDecorator true if the recursive execution is in a decorator\n * @param isInComponentConfig true if the recursive execution is in a component decorator configuration\n */\nfunction getSelector(parentNode: ts.Node, source: ts.SourceFile, isInDecorator = false, isInComponentConfig = false) {\n let foundDecorator = false;\n let foundSelector = false;\n let ret: string | undefined;\n parentNode.forEachChild((node) => {\n if (isInDecorator && isInComponentConfig && ts.isIdentifier(node) && node.getText(source) === 'selector') {\n foundSelector = true;\n } else if (foundSelector && ts.isStringLiteral(node)) {\n ret = node.getText(source).replace(/[\"']/gi, '');\n } else if (isInDecorator && ts.isIdentifier(node) && node.getText(source) === 'Component') {\n foundDecorator = true;\n } else if (isInDecorator && foundDecorator && ts.isObjectLiteralExpression(node)) {\n ret = ret || getSelector(node, source, isInDecorator, true);\n } else {\n ret = ret || getSelector(node, source, isInDecorator || ts.isDecorator(node), isInComponentConfig);\n }\n });\n return ret;\n}\n\n/**\n * Generate a mock class base on a component file\n * @param componentPath Path to the component file to mock\n * @param config Object containing the following configurations:\n * template: should be provided if the template contain `<ng-content></ng-content>`\n * isControlValueAccessor: should be provided if the component extends ControlValueAccessor\n * @param config.template\n * @param config.isControlValueAccessor\n * @example\n * ```typescript\n * // hero.component.ts\n * \\@Component({selector: 'hero'})\n * class HeroComponent {\n * \\@Input() name: string;\n * \\@Output() doSomething: EventEmitter<void>\n * }\n *\n * // mock generation\n * class MockComponent extends generateMockComponent('hero.component.ts') {}\n * ```\n */\nexport function generateMockComponent<T = Record<string, unknown>>(componentPath: string, config?: { template?: string; isControlValueAccessor?: boolean }): Type<T> {\n const program = ts.createProgram([componentPath], {});\n const source = program.getSourceFile(componentPath);\n if (!source) {\n throw new Error('No Source found');\n }\n\n const { outputs, inputs } = parseIO(source, source);\n const mock = class {\n public writeValue: any;\n public registerOnChange: any;\n public registerOnTouched: any;\n\n constructor() {\n Object.keys(outputs)\n .forEach((outputName) => (this as any)[outputName] = new EventEmitter<any>());\n if (config && config.isControlValueAccessor) {\n this.writeValue = () => {};\n this.registerOnChange = () => {};\n this.registerOnTouched = () => {};\n }\n }\n };\n\n return Component({\n template: config?.template || '',\n selector: getSelector(source, source) || '',\n inputs,\n outputs,\n ...(config && config.isControlValueAccessor)\n ? {\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => mock),\n multi: true\n }\n ]\n }\n : {}\n })(mock) as Type<T>;\n}\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@o3r/testing",
|
3
|
-
"version": "12.5.0-prerelease.
|
3
|
+
"version": "12.5.0-prerelease.35",
|
4
4
|
"publishConfig": {
|
5
5
|
"access": "public"
|
6
6
|
},
|
@@ -112,9 +112,9 @@
|
|
112
112
|
"@material/slider": "^14.0.0",
|
113
113
|
"@ngrx/store": "^19.0.0",
|
114
114
|
"@ngx-translate/core": "^15.0.0 || ~16.0.4",
|
115
|
-
"@o3r/core": "^12.5.0-prerelease.
|
116
|
-
"@o3r/localization": "^12.5.0-prerelease.
|
117
|
-
"@o3r/schematics": "^12.5.0-prerelease.
|
115
|
+
"@o3r/core": "^12.5.0-prerelease.35",
|
116
|
+
"@o3r/localization": "^12.5.0-prerelease.35",
|
117
|
+
"@o3r/schematics": "^12.5.0-prerelease.35",
|
118
118
|
"@playwright/test": "^1.49.0",
|
119
119
|
"@schematics/angular": "^19.0.0",
|
120
120
|
"pixelmatch": "^6.0.0",
|
@@ -183,7 +183,7 @@
|
|
183
183
|
}
|
184
184
|
},
|
185
185
|
"dependencies": {
|
186
|
-
"@o3r/schematics": "^12.5.0-prerelease.
|
186
|
+
"@o3r/schematics": "^12.5.0-prerelease.35",
|
187
187
|
"esbuild": "~0.25.1",
|
188
188
|
"module-from-string": "^3.2.0",
|
189
189
|
"tslib": "^2.6.2"
|
@@ -210,12 +210,12 @@
|
|
210
210
|
"@ngx-translate/core": "~16.0.4",
|
211
211
|
"@nx/eslint-plugin": "~20.8.0",
|
212
212
|
"@nx/jest": "~20.8.0",
|
213
|
-
"@o3r/build-helpers": "^12.5.0-prerelease.
|
214
|
-
"@o3r/core": "^12.5.0-prerelease.
|
215
|
-
"@o3r/eslint-plugin": "^12.5.0-prerelease.
|
216
|
-
"@o3r/localization": "^12.5.0-prerelease.
|
217
|
-
"@o3r/test-helpers": "^12.5.0-prerelease.
|
218
|
-
"@playwright/test": "~1.
|
213
|
+
"@o3r/build-helpers": "^12.5.0-prerelease.35",
|
214
|
+
"@o3r/core": "^12.5.0-prerelease.35",
|
215
|
+
"@o3r/eslint-plugin": "^12.5.0-prerelease.35",
|
216
|
+
"@o3r/localization": "^12.5.0-prerelease.35",
|
217
|
+
"@o3r/test-helpers": "^12.5.0-prerelease.35",
|
218
|
+
"@playwright/test": "~1.54.0",
|
219
219
|
"@schematics/angular": "~19.2.0",
|
220
220
|
"@stylistic/eslint-plugin": "~3.1.0",
|
221
221
|
"@swc/helpers": "~0.5.0",
|
package/public_api.js
CHANGED
package/store/index.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
|
3
|
+
const tslib_1 = require("tslib");
|
4
4
|
tslib_1.__exportStar(require("./testable-select"), exports);
|
5
5
|
tslib_1.__exportStar(require("./typings"), exports);
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/store/testable-select.js
CHANGED
@@ -5,14 +5,14 @@ exports.initializeSelectorSpies = initializeSelectorSpies;
|
|
5
5
|
exports.spyOnSelector = spyOnSelector;
|
6
6
|
exports.clearSelectorSpy = clearSelectorSpy;
|
7
7
|
exports.select = select;
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
const tslib_1 = require("tslib");
|
9
|
+
const store_1 = require("@ngrx/store");
|
10
|
+
const rxjs_1 = require("rxjs");
|
11
|
+
const typings_1 = require("./typings");
|
12
12
|
// eslint-disable-next-line import/export -- legacy code
|
13
13
|
tslib_1.__exportStar(require("@ngrx/store"), exports);
|
14
14
|
/** Global variable that holds the registered spies */
|
15
|
-
|
15
|
+
let registeredSpies = [];
|
16
16
|
/**
|
17
17
|
*
|
18
18
|
* PRIVATE METHODS
|
@@ -22,13 +22,13 @@ var registeredSpies = [];
|
|
22
22
|
* Searches for the index of given selector
|
23
23
|
* @param selectFn Selector function to be searched
|
24
24
|
*/
|
25
|
-
|
25
|
+
const getSpyIndex = (selectFn) => registeredSpies.findIndex((spy) => spy.selector === selectFn);
|
26
26
|
/**
|
27
27
|
* Searches for the given selector spy. Returns undefined if none is registered
|
28
28
|
* @param selectFn Selector function to be searched
|
29
29
|
*/
|
30
|
-
|
31
|
-
|
30
|
+
const getSpy = (selectFn) => {
|
31
|
+
const index = getSpyIndex(selectFn);
|
32
32
|
return index >= 0 ? registeredSpies[index] : undefined;
|
33
33
|
};
|
34
34
|
/**
|
@@ -36,7 +36,7 @@ var getSpy = function (selectFn) {
|
|
36
36
|
* @param spy The selector spy
|
37
37
|
*/
|
38
38
|
function useSpy(spy) {
|
39
|
-
return (0, typings_1.isSelectorSpyCall)(spy) ? spy.fakeResult :
|
39
|
+
return (0, typings_1.isSelectorSpyCall)(spy) ? spy.fakeResult : () => (0, rxjs_1.of)(spy.fakeResult);
|
40
40
|
}
|
41
41
|
/**
|
42
42
|
*
|
@@ -61,12 +61,12 @@ function initializeSelectorSpies() {
|
|
61
61
|
* @param fakeResult The fake result to be used when a select is triggered
|
62
62
|
*/
|
63
63
|
function spyOnSelector(selector, fakeResult) {
|
64
|
-
|
64
|
+
const spyIndex = getSpyIndex(selector);
|
65
65
|
if (spyIndex >= 0) {
|
66
66
|
registeredSpies[spyIndex].fakeResult = fakeResult;
|
67
67
|
}
|
68
68
|
else {
|
69
|
-
registeredSpies.push({ selector: selector, fakeResult
|
69
|
+
registeredSpies.push({ selector: selector, fakeResult });
|
70
70
|
}
|
71
71
|
}
|
72
72
|
/**
|
@@ -74,7 +74,7 @@ function spyOnSelector(selector, fakeResult) {
|
|
74
74
|
* @param selector Selector function that is being spied on
|
75
75
|
*/
|
76
76
|
function clearSelectorSpy(selector) {
|
77
|
-
|
77
|
+
const spyIndex = getSpyIndex(selector);
|
78
78
|
if (spyIndex >= 0) {
|
79
79
|
registeredSpies.splice(spyIndex, 1);
|
80
80
|
}
|
@@ -87,7 +87,7 @@ function clearSelectorSpy(selector) {
|
|
87
87
|
*/
|
88
88
|
// eslint-disable-next-line import/export -- legacy code
|
89
89
|
function select(selectFn, props) {
|
90
|
-
|
90
|
+
const spy = getSpy(selectFn);
|
91
91
|
return spy ? useSpy(spy) : (0, store_1.select)(selectFn, props);
|
92
92
|
}
|
93
93
|
//# sourceMappingURL=testable-select.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"testable-select.js","sourceRoot":"","sources":["../../src/store/testable-select.ts"],"names":[],"mappings":";;AAwDA,gDAEC;AAKD,0DAEC;AAOD,sCAOC;AAMD,4CAKC;AASD,wBAGC;;AAtGD,
|
1
|
+
{"version":3,"file":"testable-select.js","sourceRoot":"","sources":["../../src/store/testable-select.ts"],"names":[],"mappings":";;AAwDA,gDAEC;AAKD,0DAEC;AAOD,sCAOC;AAMD,4CAKC;AASD,wBAGC;;AAtGD,uCAEqB;AACrB,+BAGc;AACd,uCAKmB;AAEnB,wDAAwD;AACxD,sDAA4B;AAE5B,sDAAsD;AACtD,IAAI,eAAe,GAAuB,EAAE,CAAC;AAE7C;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAmB,QAAkC,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAC5I;;;GAGG;AACH,MAAM,MAAM,GAAG,CAAC,QAAuC,EAAE,EAAE;IACzD,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC,CAAC;AACF;;;GAGG;AACH,SAAS,MAAM,CAAI,GAAmB;IACpC,OAAO,IAAA,2BAAiB,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAA,SAAE,EAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AAEH;;GAEG;AACH,SAAgB,kBAAkB;IAChC,eAAe,GAAG,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB;IACrC,kBAAkB,EAAE,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAA+B,QAAgC,EAAE,UAAiC;IAC7H,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,eAAe,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAuC,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAA+B,QAAgC;IAC7F,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,wDAAwD;AACxD,SAAgB,MAAM,CAAC,QAAuC,EAAE,KAAc;IAC5E,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,cAAU,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACzD,CAAC","sourcesContent":["import {\n select as baseSelect,\n} from '@ngrx/store';\nimport {\n Observable,\n of,\n} from 'rxjs';\nimport {\n FakeSelectCall,\n isSelectorSpyCall,\n SelectorFunction,\n SelectorSpy,\n} from './typings';\n\n// eslint-disable-next-line import/export -- legacy code\nexport * from '@ngrx/store';\n\n/** Global variable that holds the registered spies */\nlet registeredSpies: SelectorSpy<any>[] = [];\n\n/**\n *\n * PRIVATE METHODS\n *\n */\n\n/**\n * Searches for the index of given selector\n * @param selectFn Selector function to be searched\n */\nconst getSpyIndex = <S extends object>(selectFn: SelectorFunction<S, any>) => registeredSpies.findIndex((spy) => spy.selector === selectFn);\n/**\n * Searches for the given selector spy. Returns undefined if none is registered\n * @param selectFn Selector function to be searched\n */\nconst getSpy = (selectFn: SelectorFunction<object, any>) => {\n const index = getSpyIndex(selectFn);\n return index >= 0 ? registeredSpies[index] : undefined;\n};\n/**\n * Uses the spy as the return of a select\n * @param spy The selector spy\n */\nfunction useSpy<R>(spy: SelectorSpy<R>): (source$: Observable<any>) => Observable<R> {\n return isSelectorSpyCall(spy) ? spy.fakeResult : () => of(spy.fakeResult);\n}\n\n/**\n *\n * PUBLIC METHODS\n *\n */\n\n/**\n * Clears all the registered selector spies\n */\nexport function clearSelectorSpies() {\n registeredSpies = [];\n}\n\n/**\n * Initialize the selector spies structure\n */\nexport function initializeSelectorSpies() {\n clearSelectorSpies();\n}\n\n/**\n * Spy on a selector function\n * @param selector Selector function to be spied on\n * @param fakeResult The fake result to be used when a select is triggered\n */\nexport function spyOnSelector<R, S extends object = object>(selector: SelectorFunction<S, R>, fakeResult: R | FakeSelectCall<R>) {\n const spyIndex = getSpyIndex(selector);\n if (spyIndex >= 0) {\n registeredSpies[spyIndex].fakeResult = fakeResult;\n } else {\n registeredSpies.push({ selector: selector as SelectorFunction<object, R>, fakeResult });\n }\n}\n\n/**\n * Removes the spy on a given selector function\n * @param selector Selector function that is being spied on\n */\nexport function clearSelectorSpy<R, S extends object = object>(selector: SelectorFunction<S, R>) {\n const spyIndex = getSpyIndex(selector);\n if (spyIndex >= 0) {\n registeredSpies.splice(spyIndex, 1);\n }\n}\n\n/**\n * Highjacked ngrx/store select. It checks if the selector function is being spied on\n * and returns it's fake result. Otherwise, it runs the original ngrx/store select\n * @param selectFn Selector function to be used\n * @param props optional properties to be used by the selector\n */\n// eslint-disable-next-line import/export -- legacy code\nexport function select(selectFn: SelectorFunction<object, any>, props?: object) {\n const spy = getSpy(selectFn);\n return spy ? useSpy(spy) : baseSelect(selectFn, props);\n}\n"]}
|
package/tools/index.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
|
3
|
+
const tslib_1 = require("tslib");
|
4
4
|
tslib_1.__exportStar(require("./path-replacement"), exports);
|
5
5
|
tslib_1.__exportStar(require("./protractor"), exports);
|
6
6
|
//# sourceMappingURL=index.js.map
|