From 92c06e933fc8bd2e6b1027d1640d657bcf9a49a9 Mon Sep 17 00:00:00 2001 From: Rhys Evans Date: Mon, 28 Oct 2024 18:03:39 +0000 Subject: [PATCH 1/2] fix: allow sending responses with status 0 --- packages/fetch-mock/src/Route.ts | 6 ++++++ packages/fetch-mock/src/Router.ts | 7 ++++++- .../src/__tests__/FetchMock/response-construction.test.js | 7 +++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/fetch-mock/src/Route.ts b/packages/fetch-mock/src/Route.ts index 85b65e99..ca9f823f 100644 --- a/packages/fetch-mock/src/Route.ts +++ b/packages/fetch-mock/src/Route.ts @@ -89,6 +89,12 @@ function isBodyInit(body: BodyInit | object): body is BodyInit { } function sanitizeStatus(status?: number): number { + if (status === 0) { + // we do this here for now because we can't construct a Response with status 0 + // we overwrite to 0 later in the proxy wrapper around teh response. + return 200; + } + if (!status) { return 200; } diff --git a/packages/fetch-mock/src/Router.ts b/packages/fetch-mock/src/Router.ts index be3af6c9..bd5f8660 100644 --- a/packages/fetch-mock/src/Router.ts +++ b/packages/fetch-mock/src/Router.ts @@ -70,7 +70,7 @@ function shouldSendAsObject(responseInput: RouteResponseData): boolean { // TODO improve this... make it less hacky and magic if ( responseConfigProps.some( - (prop) => (responseInput as RouteResponseConfig)[prop], + (prop) => prop in (responseInput as RouteResponseConfig), ) ) { if ( @@ -268,6 +268,11 @@ export default class Router { return false; } } + + if (responseInput.status === 0) { + if (name === 'status') return 0; + if (name === 'statusText') return ''; + } // TODO fix these types properly //@ts-expect-error TODO probably make use of generics here if (typeof response[name] === 'function') { diff --git a/packages/fetch-mock/src/__tests__/FetchMock/response-construction.test.js b/packages/fetch-mock/src/__tests__/FetchMock/response-construction.test.js index 15fae2d8..98f24269 100644 --- a/packages/fetch-mock/src/__tests__/FetchMock/response-construction.test.js +++ b/packages/fetch-mock/src/__tests__/FetchMock/response-construction.test.js @@ -27,6 +27,13 @@ describe('response construction', () => { ); } }); + + it('should be able to send status 0', async () => { + fm.route('*', { status: 0 }); + const res = await fm.fetchHandler('http://a.com/'); + expect(res.status).toEqual(0); + expect(res.statusText).toEqual(''); + }); }); describe('string', () => { From 1fc51ee939d437cfa83785dd7ab673af4b0e2753 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:15:13 +0000 Subject: [PATCH 2/2] chore: release main --- .release-please-manifest.json | 6 +++--- package-lock.json | 10 +++++----- packages/fetch-mock/CHANGELOG.md | 7 +++++++ packages/fetch-mock/package.json | 2 +- packages/jest/CHANGELOG.md | 9 +++++++++ packages/jest/package.json | 4 ++-- packages/vitest/CHANGELOG.md | 9 +++++++++ packages/vitest/package.json | 4 ++-- 8 files changed, 38 insertions(+), 13 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 0686e95c..aa1f5331 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { - "packages/fetch-mock": "12.0.1", - "packages/vitest": "0.2.1", - "packages/jest": "0.2.1", + "packages/fetch-mock": "12.0.2", + "packages/vitest": "0.2.2", + "packages/jest": "0.2.2", "packages/codemods": "0.1.1" } diff --git a/package-lock.json b/package-lock.json index b1d597da..0e43fc6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26575,7 +26575,7 @@ } }, "packages/fetch-mock": { - "version": "12.0.1", + "version": "12.0.2", "license": "MIT", "dependencies": { "@types/glob-to-regexp": "^0.4.4", @@ -26590,10 +26590,10 @@ }, "packages/jest": { "name": "@fetch-mock/jest", - "version": "0.2.1", + "version": "0.2.2", "license": "MIT", "dependencies": { - "fetch-mock": "12.0.1" + "fetch-mock": "12.0.2" }, "engines": { "node": ">=18.11.0" @@ -26605,10 +26605,10 @@ }, "packages/vitest": { "name": "@fetch-mock/vitest", - "version": "0.2.1", + "version": "0.2.2", "license": "MIT", "dependencies": { - "fetch-mock": "12.0.1" + "fetch-mock": "12.0.2" }, "engines": { "node": ">=18.11.0" diff --git a/packages/fetch-mock/CHANGELOG.md b/packages/fetch-mock/CHANGELOG.md index efa6b2d3..8d4b2e7c 100644 --- a/packages/fetch-mock/CHANGELOG.md +++ b/packages/fetch-mock/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [12.0.2](https://github.com/wheresrhys/fetch-mock/compare/fetch-mock-v12.0.1...fetch-mock-v12.0.2) (2024-10-28) + + +### Bug Fixes + +* allow sending responses with status 0 ([92c06e9](https://github.com/wheresrhys/fetch-mock/commit/92c06e933fc8bd2e6b1027d1640d657bcf9a49a9)) + ## [12.0.1](https://github.com/wheresrhys/fetch-mock/compare/fetch-mock-v12.0.0...fetch-mock-v12.0.1) (2024-10-27) diff --git a/packages/fetch-mock/package.json b/packages/fetch-mock/package.json index 8151c4d4..3baf092f 100644 --- a/packages/fetch-mock/package.json +++ b/packages/fetch-mock/package.json @@ -1,7 +1,7 @@ { "name": "fetch-mock", "description": "Mock http requests made using fetch", - "version": "12.0.1", + "version": "12.0.2", "exports": { "browser": "./dist/esm/index.js", "import": { diff --git a/packages/jest/CHANGELOG.md b/packages/jest/CHANGELOG.md index a03b81d2..95a3e834 100644 --- a/packages/jest/CHANGELOG.md +++ b/packages/jest/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.2.2](https://github.com/wheresrhys/fetch-mock/compare/jest-v0.2.1...jest-v0.2.2) (2024-10-28) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * fetch-mock bumped from 12.0.1 to 12.0.2 + ## [0.2.1](https://github.com/wheresrhys/fetch-mock/compare/jest-v0.2.0...jest-v0.2.1) (2024-10-27) diff --git a/packages/jest/package.json b/packages/jest/package.json index 869713a6..1c34e151 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -1,7 +1,7 @@ { "name": "@fetch-mock/jest", "description": "jest wrapper for fetch-mock", - "version": "0.2.1", + "version": "0.2.2", "exports": { "browser": "./dist/esm/index.js", "import": { @@ -21,7 +21,7 @@ "node": ">=18.11.0" }, "dependencies": { - "fetch-mock": "12.0.1" + "fetch-mock": "12.0.2" }, "peerDependencies": { "jest": "*", diff --git a/packages/vitest/CHANGELOG.md b/packages/vitest/CHANGELOG.md index cf1805ab..ecbe3686 100644 --- a/packages/vitest/CHANGELOG.md +++ b/packages/vitest/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.2.2](https://github.com/wheresrhys/fetch-mock/compare/vitest-v0.2.1...vitest-v0.2.2) (2024-10-28) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * fetch-mock bumped from 12.0.1 to 12.0.2 + ## [0.2.1](https://github.com/wheresrhys/fetch-mock/compare/vitest-v0.2.0...vitest-v0.2.1) (2024-10-27) diff --git a/packages/vitest/package.json b/packages/vitest/package.json index 2f6febfe..b6d15fac 100644 --- a/packages/vitest/package.json +++ b/packages/vitest/package.json @@ -1,7 +1,7 @@ { "name": "@fetch-mock/vitest", "description": "Vitest wrapper for fetch-mock", - "version": "0.2.1", + "version": "0.2.2", "exports": { "browser": "./dist/esm/index.js", "import": { @@ -21,7 +21,7 @@ "node": ">=18.11.0" }, "dependencies": { - "fetch-mock": "12.0.1" + "fetch-mock": "12.0.2" }, "peerDependencies": { "vitest": "*"