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.
@@ -1,5 +1,5 @@
1
1
  export type FunctionMap = {
2
- state: string | string[];
2
+ state: (string | Function)[];
3
3
  returns: Function;
4
4
  timesCalled: number;
5
5
  singleUse: boolean;
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: (func: T) => any, returns?: any): void;
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: (func: T) => any, returns?: any): void;
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: [(func: T) => any, any][]): void;
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: (func: T) => any): number;
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: (func: T) => any, times: Times | number): void;
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 functionMap = this.getFunctionMapsFromSignature(memberSignatureMap, (_a = memberSignatureMap.functionMaps[0]) === null || _a === void 0 ? void 0 : _a.state).functionMapForArgs;
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, timesCalled !== times ? '' : undefined);
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) { return JSON.stringify(m.state) === JSON.stringify(args); });
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
  }());
@@ -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 === null || originalSignature === void 0 ? void 0 : originalSignature.indexOf('i.')) ? originalSignature.split('i.')[1] : 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
  [![CI](https://github.com/bayes343/tsmockit/actions/workflows/ci.yml/badge.svg)](https://github.com/bayes343/tsmockit/actions/workflows/ci.yml)
5
- ![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/bayes343/tsmockit.svg?logo=lgtm&logoWidth=18)
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
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "dependency injection"
15
15
  ],
16
16
  "license": "MIT",
17
- "version": "2.0.5",
17
+ "version": "2.0.7",
18
18
  "description": "Generic mocking library for TypeScript",
19
19
  "private": false,
20
20
  "main": "./public_api.js",