tsmockit 2.0.5 → 2.0.7
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/Mock/FunctionMap.d.ts +1 -1
- package/Mock/Mock.d.ts +9 -5
- package/Mock/Mock.js +27 -5
- package/Mock/SignatureService.js +3 -3
- package/README.md +0 -1
- package/Utility/OrderBy.d.ts +1 -0
- package/Utility/OrderBy.js +24 -0
- package/package.json +1 -1
package/Mock/FunctionMap.d.ts
CHANGED
package/Mock/Mock.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Times } from './Times';
|
|
2
|
+
type Member<T> = (func: T) => any;
|
|
2
3
|
export declare class Mock<T> {
|
|
3
4
|
private memberSignatureMaps;
|
|
4
5
|
private object;
|
|
@@ -11,34 +12,37 @@ export declare class Mock<T> {
|
|
|
11
12
|
* @param member
|
|
12
13
|
* @param returns
|
|
13
14
|
*/
|
|
14
|
-
Setup(member:
|
|
15
|
+
Setup(member: Member<T>, returns?: any): void;
|
|
15
16
|
/**
|
|
16
17
|
* Configure a setup that will only resolve on the first time the member is registered
|
|
17
18
|
* @param member
|
|
18
19
|
* @param returns
|
|
19
20
|
*/
|
|
20
|
-
SetupOnce(member:
|
|
21
|
+
SetupOnce(member: Member<T>, returns?: any): void;
|
|
21
22
|
/**
|
|
22
23
|
* Configure a set of setups that will only resolve on the first time the member is registered
|
|
23
24
|
* @param setups
|
|
24
25
|
*/
|
|
25
|
-
SetupSequence(setups: [
|
|
26
|
+
SetupSequence(setups: [Member<T>, any][]): void;
|
|
26
27
|
/**
|
|
27
28
|
* Return the number of times a given member was referenced
|
|
28
29
|
* @param member
|
|
29
30
|
* @returns
|
|
30
31
|
*/
|
|
31
|
-
TimesMemberCalled(member:
|
|
32
|
+
TimesMemberCalled(member: Member<T>): number;
|
|
32
33
|
/**
|
|
33
34
|
* Make an assertion that a given member was referenced a given number of times
|
|
34
35
|
* @param member
|
|
35
36
|
* @param times
|
|
36
37
|
*/
|
|
37
|
-
Verify(member:
|
|
38
|
+
Verify(member: Member<T>, times: Times | number): void;
|
|
38
39
|
private setup;
|
|
39
40
|
private getReturnValueForProperty;
|
|
40
41
|
private getReturnForFunction;
|
|
42
|
+
private getPathFromMemberFunctionString;
|
|
41
43
|
private getFunctionMapsFromSignature;
|
|
42
44
|
private updateMemberSignatureMaps;
|
|
43
45
|
private updateSignatureMapFunctions;
|
|
46
|
+
private getArgumentArray;
|
|
44
47
|
}
|
|
48
|
+
export {};
|
package/Mock/Mock.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Mock = void 0;
|
|
4
|
+
var OrderBy_1 = require("../Utility/OrderBy");
|
|
4
5
|
var SignatureService_1 = require("./SignatureService");
|
|
5
6
|
var Any_1 = require("./Any");
|
|
6
7
|
var Mock = /** @class */ (function () {
|
|
@@ -54,7 +55,8 @@ var Mock = /** @class */ (function () {
|
|
|
54
55
|
Mock.prototype.TimesMemberCalled = function (member) {
|
|
55
56
|
var _a;
|
|
56
57
|
var memberSignatureMap = SignatureService_1.SignatureService.GetMemberSignatureMap(member);
|
|
57
|
-
var
|
|
58
|
+
var args = (_a = memberSignatureMap.functionMaps[0]) === null || _a === void 0 ? void 0 : _a.state;
|
|
59
|
+
var functionMap = this.getFunctionMapsFromSignature(memberSignatureMap, this.getArgumentArray(args)).functionMapForArgs;
|
|
58
60
|
return (functionMap === null || functionMap === void 0 ? void 0 : functionMap.timesCalled) || 0;
|
|
59
61
|
};
|
|
60
62
|
/**
|
|
@@ -70,7 +72,7 @@ var Mock = /** @class */ (function () {
|
|
|
70
72
|
// eslint-disable-next-line no-console
|
|
71
73
|
console.log("Actual calls made for, \"".concat(signature, ":"), memberSignatureMap === null || memberSignatureMap === void 0 ? void 0 : memberSignatureMap.functionMaps.map(function (m) { return "".concat(m.originalSignature, " x ").concat(m.timesCalled); }));
|
|
72
74
|
}
|
|
73
|
-
expect(timesCalled).toEqual(times
|
|
75
|
+
expect(timesCalled).toEqual(times);
|
|
74
76
|
};
|
|
75
77
|
Mock.prototype.setup = function (member, returns, singleUse) {
|
|
76
78
|
var _this = this;
|
|
@@ -89,7 +91,7 @@ var Mock = /** @class */ (function () {
|
|
|
89
91
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
90
92
|
args[_i] = arguments[_i];
|
|
91
93
|
}
|
|
92
|
-
return (_a = _this.getReturnForFunction(memberSignatureMap, args)) === null || _a === void 0 ? void 0 : _a();
|
|
94
|
+
return (_a = _this.getReturnForFunction(memberSignatureMap, _this.getArgumentArray(args))) === null || _a === void 0 ? void 0 : _a();
|
|
93
95
|
});
|
|
94
96
|
}
|
|
95
97
|
};
|
|
@@ -108,10 +110,26 @@ var Mock = /** @class */ (function () {
|
|
|
108
110
|
return functionMapForArgs.returns;
|
|
109
111
|
}) : undefined;
|
|
110
112
|
};
|
|
113
|
+
Mock.prototype.getPathFromMemberFunctionString = function (member) {
|
|
114
|
+
var regex = /[.][a-zA-Z0-9]*/g;
|
|
115
|
+
var path = '';
|
|
116
|
+
if (member) {
|
|
117
|
+
var match = void 0;
|
|
118
|
+
while ((match = regex.exec(member)) !== null) {
|
|
119
|
+
var matchValue = path.length ? match[0] : match[0].replace('.', '');
|
|
120
|
+
path += matchValue;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return path;
|
|
124
|
+
};
|
|
111
125
|
Mock.prototype.getFunctionMapsFromSignature = function (memberSignatureMap, args) {
|
|
126
|
+
var _this = this;
|
|
112
127
|
var existingMemberSignatureMap = this.memberSignatureMaps.find(function (s) { return s.signature === memberSignatureMap.signature; });
|
|
113
128
|
var signatureFunctionMaps = existingMemberSignatureMap === null || existingMemberSignatureMap === void 0 ? void 0 : existingMemberSignatureMap.functionMaps;
|
|
114
|
-
var functionMapForArgs = signatureFunctionMaps === null || signatureFunctionMaps === void 0 ? void 0 : signatureFunctionMaps.find(function (m) {
|
|
129
|
+
var functionMapForArgs = (signatureFunctionMaps === null || signatureFunctionMaps === void 0 ? void 0 : signatureFunctionMaps.find(function (m) {
|
|
130
|
+
return Array.isArray(args) && typeof (args === null || args === void 0 ? void 0 : args[0]) === 'string' && args[0].includes('function') &&
|
|
131
|
+
_this.getPathFromMemberFunctionString(args[0]) === _this.getPathFromMemberFunctionString(m.originalSignature);
|
|
132
|
+
})) || (signatureFunctionMaps === null || signatureFunctionMaps === void 0 ? void 0 : signatureFunctionMaps.find(function (m) { return JSON.stringify(m.state) === JSON.stringify(args); }));
|
|
115
133
|
var functionMapsUsingAny = signatureFunctionMaps === null || signatureFunctionMaps === void 0 ? void 0 : signatureFunctionMaps.filter(function (m) { return m.state.includes(Any_1.ANY_VALUE); });
|
|
116
134
|
if (!functionMapForArgs && (functionMapsUsingAny === null || functionMapsUsingAny === void 0 ? void 0 : functionMapsUsingAny.length)) {
|
|
117
135
|
functionMapsUsingAny.forEach(function (element) {
|
|
@@ -136,13 +154,17 @@ var Mock = /** @class */ (function () {
|
|
|
136
154
|
};
|
|
137
155
|
Mock.prototype.updateSignatureMapFunctions = function (existingSignatureMap, newFunctionMap) {
|
|
138
156
|
var existingFunctionMap = existingSignatureMap.functionMaps.find(function (fm) { return JSON.stringify(fm.state) === JSON.stringify(newFunctionMap.state); });
|
|
139
|
-
if (existingFunctionMap && !newFunctionMap.singleUse) {
|
|
157
|
+
if (existingFunctionMap && !newFunctionMap.singleUse && existingFunctionMap.originalSignature === newFunctionMap.originalSignature) {
|
|
140
158
|
var functionMaps = existingSignatureMap.functionMaps;
|
|
141
159
|
functionMaps.splice(functionMaps.indexOf(existingFunctionMap), 1, newFunctionMap);
|
|
142
160
|
}
|
|
143
161
|
else {
|
|
144
162
|
existingSignatureMap.functionMaps.push(newFunctionMap);
|
|
145
163
|
}
|
|
164
|
+
existingSignatureMap.functionMaps = (0, OrderBy_1.OrderBy)(existingSignatureMap.functionMaps, [function (f) { return f.singleUse ? 1 : 2; }]);
|
|
165
|
+
};
|
|
166
|
+
Mock.prototype.getArgumentArray = function (args) {
|
|
167
|
+
return args.map(function (a) { return typeof a === 'function' ? a.toString() : a; });
|
|
146
168
|
};
|
|
147
169
|
return Mock;
|
|
148
170
|
}());
|
package/Mock/SignatureService.js
CHANGED
|
@@ -12,7 +12,7 @@ var SignatureService = /** @class */ (function () {
|
|
|
12
12
|
memberSignature =
|
|
13
13
|
this.getOperationMemberSignature(value, memberSignature) ||
|
|
14
14
|
this.getPropertyMemberSignature(value, memberSignature);
|
|
15
|
-
var state = this.MemberSignatureIsProperty(memberSignature) ?
|
|
15
|
+
var state = this.MemberSignatureIsProperty(memberSignature) ? [] :
|
|
16
16
|
SignatureService.getStateForMemberSignature(memberSignature, value);
|
|
17
17
|
return {
|
|
18
18
|
signature: memberSignature,
|
|
@@ -34,7 +34,7 @@ var SignatureService = /** @class */ (function () {
|
|
|
34
34
|
};
|
|
35
35
|
SignatureService.getOriginalSignature = function (value) {
|
|
36
36
|
var originalSignature = value.toString();
|
|
37
|
-
originalSignature = (originalSignature
|
|
37
|
+
originalSignature = /.[.]/.test(originalSignature) ? originalSignature.split('.').slice(1).join('.') : originalSignature;
|
|
38
38
|
originalSignature = (originalSignature === null || originalSignature === void 0 ? void 0 : originalSignature.indexOf(';')) ? originalSignature.split(';')[0] : originalSignature;
|
|
39
39
|
return originalSignature === null || originalSignature === void 0 ? void 0 : originalSignature.trim();
|
|
40
40
|
};
|
|
@@ -61,7 +61,7 @@ var SignatureService = /** @class */ (function () {
|
|
|
61
61
|
return memberSignature;
|
|
62
62
|
};
|
|
63
63
|
SignatureService.getStateForMemberSignature = function (memberSignature, value) {
|
|
64
|
-
var state =
|
|
64
|
+
var state = [];
|
|
65
65
|
var obj = {};
|
|
66
66
|
obj[this.GetMemberNameFromSignature(memberSignature)] = (function () {
|
|
67
67
|
var args = [];
|
package/README.md
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Generic mocking library for TypeScript
|
|
3
3
|
|
|
4
4
|
[](https://github.com/bayes343/tsmockit/actions/workflows/ci.yml)
|
|
5
|
-

|
|
6
5
|
|
|
7
6
|
Helpful links:
|
|
8
7
|
- [GitHub](https://github.com/bayes343/tsmockit)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const OrderBy: <T>(array: T[], funcs: ((item: T) => number | string)[]) => T[];
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrderBy = void 0;
|
|
4
|
+
var OrderBy = function (array, funcs) {
|
|
5
|
+
var newArray = array.slice();
|
|
6
|
+
newArray.sort(function (a, b) {
|
|
7
|
+
var result = 0;
|
|
8
|
+
for (var index = 0; index < funcs.length; index++) {
|
|
9
|
+
var func = funcs[index];
|
|
10
|
+
if (func(a) < func(b)) {
|
|
11
|
+
result = -1;
|
|
12
|
+
break;
|
|
13
|
+
}
|
|
14
|
+
else if (func(a) > func(b)) {
|
|
15
|
+
result = 1;
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
});
|
|
21
|
+
return newArray;
|
|
22
|
+
};
|
|
23
|
+
exports.OrderBy = OrderBy;
|
|
24
|
+
//# sourceMappingURL=OrderBy.js.map
|