@sprucelabs/test-utils 7.0.21 → 7.1.0

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.
@@ -0,0 +1,18 @@
1
+ export default class MockFetch {
2
+ private requestLog;
3
+ private responses;
4
+ buildFetch(): typeof fetch;
5
+ assertWasCalled(url?: string | URL, init?: RequestInit): void;
6
+ private get lastInit();
7
+ private get wasCalled();
8
+ private get urlsCalled();
9
+ private get lastUrl();
10
+ assertMadeRequests(expected: ExpectedRequest[]): void;
11
+ setResponse(response: Response, url?: string | URL | Request, init?: RequestInit): void;
12
+ private generateResponseKey;
13
+ }
14
+ export interface RequestObject {
15
+ url: string | URL | Request;
16
+ init?: RequestInit;
17
+ }
18
+ export type ExpectedRequest = string | URL | RequestObject;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("./assert/assert"));
7
+ class MockFetch {
8
+ constructor() {
9
+ this.requestLog = [];
10
+ this.responses = {
11
+ '*': new Response(JSON.stringify({
12
+ success: true,
13
+ }), { status: 200 }),
14
+ };
15
+ }
16
+ buildFetch() {
17
+ return async (url, init) => {
18
+ this.requestLog.push({ url, init });
19
+ const key = this.generateResponseKey(url, init);
20
+ return (this.responses[key] ?? this.responses['*']).clone();
21
+ };
22
+ }
23
+ assertWasCalled(url, init) {
24
+ assert_1.default.isTruthy(this.wasCalled, 'Expected fetch() to have been called.');
25
+ if (url) {
26
+ const lastUrl = this.lastUrl;
27
+ assert_1.default.isEqual(lastUrl, url, `Expected fetch() to have been called with URL "${url}", but it was called with "${lastUrl}".`);
28
+ }
29
+ if (init) {
30
+ assert_1.default.isEqualDeep(this.lastInit, init, `Expected fetch() to have been called with init "${JSON.stringify(init)}", but it was called with "${JSON.stringify(this.lastInit)}".`);
31
+ }
32
+ }
33
+ get lastInit() {
34
+ return this.requestLog[this.requestLog.length - 1].init;
35
+ }
36
+ get wasCalled() {
37
+ return this.requestLog.length > 0;
38
+ }
39
+ get urlsCalled() {
40
+ return this.requestLog.map((req) => req.url);
41
+ }
42
+ get lastUrl() {
43
+ return this.urlsCalled[this.urlsCalled.length - 1];
44
+ }
45
+ assertMadeRequests(expected) {
46
+ const expectedAsObjects = expected.map((req) => {
47
+ if (typeof req === 'string' || req instanceof URL) {
48
+ return { url: req, init: undefined };
49
+ }
50
+ return req;
51
+ });
52
+ assert_1.default.isEqualDeep(this.requestLog, expectedAsObjects, `Expected fetch() to have been called with URL and init combinations as specified.`);
53
+ }
54
+ setResponse(response, url, init) {
55
+ const key = this.generateResponseKey(url, init);
56
+ this.responses[key] = response;
57
+ }
58
+ generateResponseKey(url, init) {
59
+ return `${url?.toString() ?? '*'}${init ? JSON.stringify(init) : ''}`;
60
+ }
61
+ }
62
+ exports.default = MockFetch;
@@ -0,0 +1,18 @@
1
+ export default class MockFetch {
2
+ private requestLog;
3
+ private responses;
4
+ buildFetch(): typeof fetch;
5
+ assertWasCalled(url?: string | URL, init?: RequestInit): void;
6
+ private get lastInit();
7
+ private get wasCalled();
8
+ private get urlsCalled();
9
+ private get lastUrl();
10
+ assertMadeRequests(expected: ExpectedRequest[]): void;
11
+ setResponse(response: Response, url?: string | URL | Request, init?: RequestInit): void;
12
+ private generateResponseKey;
13
+ }
14
+ export interface RequestObject {
15
+ url: string | URL | Request;
16
+ init?: RequestInit;
17
+ }
18
+ export type ExpectedRequest = string | URL | RequestObject;
@@ -0,0 +1,58 @@
1
+ import assert from './assert/assert.js';
2
+ export default class MockFetch {
3
+ constructor() {
4
+ this.requestLog = [];
5
+ this.responses = {
6
+ '*': new Response(JSON.stringify({
7
+ success: true,
8
+ }), { status: 200 }),
9
+ };
10
+ }
11
+ buildFetch() {
12
+ return async (url, init) => {
13
+ var _a;
14
+ this.requestLog.push({ url, init });
15
+ const key = this.generateResponseKey(url, init);
16
+ return ((_a = this.responses[key]) !== null && _a !== void 0 ? _a : this.responses['*']).clone();
17
+ };
18
+ }
19
+ assertWasCalled(url, init) {
20
+ assert.isTruthy(this.wasCalled, 'Expected fetch() to have been called.');
21
+ if (url) {
22
+ const lastUrl = this.lastUrl;
23
+ assert.isEqual(lastUrl, url, `Expected fetch() to have been called with URL "${url}", but it was called with "${lastUrl}".`);
24
+ }
25
+ if (init) {
26
+ assert.isEqualDeep(this.lastInit, init, `Expected fetch() to have been called with init "${JSON.stringify(init)}", but it was called with "${JSON.stringify(this.lastInit)}".`);
27
+ }
28
+ }
29
+ get lastInit() {
30
+ return this.requestLog[this.requestLog.length - 1].init;
31
+ }
32
+ get wasCalled() {
33
+ return this.requestLog.length > 0;
34
+ }
35
+ get urlsCalled() {
36
+ return this.requestLog.map((req) => req.url);
37
+ }
38
+ get lastUrl() {
39
+ return this.urlsCalled[this.urlsCalled.length - 1];
40
+ }
41
+ assertMadeRequests(expected) {
42
+ const expectedAsObjects = expected.map((req) => {
43
+ if (typeof req === 'string' || req instanceof URL) {
44
+ return { url: req, init: undefined };
45
+ }
46
+ return req;
47
+ });
48
+ assert.isEqualDeep(this.requestLog, expectedAsObjects, `Expected fetch() to have been called with URL and init combinations as specified.`);
49
+ }
50
+ setResponse(response, url, init) {
51
+ const key = this.generateResponseKey(url, init);
52
+ this.responses[key] = response;
53
+ }
54
+ generateResponseKey(url, init) {
55
+ var _a;
56
+ return `${(_a = url === null || url === void 0 ? void 0 : url.toString()) !== null && _a !== void 0 ? _a : '*'}${init ? JSON.stringify(init) : ''}`;
57
+ }
58
+ }
@@ -12,3 +12,5 @@ export { default as Spier } from './utilities/spies/Spier';
12
12
  export { default as Spy } from './utilities/spies/Spy';
13
13
  export { default as SpruceTestResolver } from './SpruceTestResolver';
14
14
  export * from './SpruceTestResolver';
15
+ export { default as MockFetch } from './MockFetch';
16
+ export * from './MockFetch';
@@ -12,3 +12,5 @@ export { default as Spier } from './utilities/spies/Spier.js';
12
12
  export { default as Spy } from './utilities/spies/Spy.js';
13
13
  export { default as SpruceTestResolver } from './SpruceTestResolver.js';
14
14
  export * from './SpruceTestResolver.js';
15
+ export { default as MockFetch } from './MockFetch.js';
16
+ export * from './MockFetch.js';
package/build/index.d.ts CHANGED
@@ -12,3 +12,5 @@ export { default as Spier } from './utilities/spies/Spier';
12
12
  export { default as Spy } from './utilities/spies/Spy';
13
13
  export { default as SpruceTestResolver } from './SpruceTestResolver';
14
14
  export * from './SpruceTestResolver';
15
+ export { default as MockFetch } from './MockFetch';
16
+ export * from './MockFetch';
package/build/index.js CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.SpruceTestResolver = exports.Spy = exports.Spier = exports.StackCleaner = exports.assertUtil = exports.test = exports.assert = exports.default = exports.generateId = exports.errorAssertUtil = exports.errorAssert = void 0;
20
+ exports.MockFetch = exports.SpruceTestResolver = exports.Spy = exports.Spier = exports.StackCleaner = exports.assertUtil = exports.test = exports.assert = exports.default = exports.generateId = exports.errorAssertUtil = exports.errorAssert = void 0;
21
21
  var errorAssert_1 = require("./utilities/errorAssert");
22
22
  Object.defineProperty(exports, "errorAssert", { enumerable: true, get: function () { return __importDefault(errorAssert_1).default; } });
23
23
  var errorAssert_utility_1 = require("./utilities/errorAssert.utility");
@@ -43,3 +43,6 @@ Object.defineProperty(exports, "Spy", { enumerable: true, get: function () { ret
43
43
  var SpruceTestResolver_1 = require("./SpruceTestResolver");
44
44
  Object.defineProperty(exports, "SpruceTestResolver", { enumerable: true, get: function () { return __importDefault(SpruceTestResolver_1).default; } });
45
45
  __exportStar(require("./SpruceTestResolver"), exports);
46
+ var MockFetch_1 = require("./MockFetch");
47
+ Object.defineProperty(exports, "MockFetch", { enumerable: true, get: function () { return __importDefault(MockFetch_1).default; } });
48
+ __exportStar(require("./MockFetch"), exports);
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "7.0.21",
6
+ "version": "7.1.0",
7
7
  "files": [
8
8
  "build"
9
9
  ],