@sanity/migrate
Version:
Tooling for running data migrations on Sanity.io projects
70 lines (64 loc) • 1.8 kB
text/typescript
import {expect, test} from 'vitest'
import {assert2xx} from '../fetchStream'
test('server responds with 2xx', async () => {
const mockResponse = {
status: 200,
statusText: 'OK',
json: () =>
Promise.resolve({
this: 'is fine',
}),
}
await expect(assert2xx(mockResponse as unknown as Response)).resolves.toBeUndefined()
})
test('server responds with 4xx and error response', () => {
const mockResponse = {
status: 400,
statusText: 'Request error',
json: () =>
Promise.resolve({
error: 'Error message',
status: 400,
message: 'More details',
}),
}
expect(assert2xx(mockResponse as unknown as Response)).rejects.toThrowError(
expect.objectContaining({
statusCode: 400,
message: 'Error message: More details',
}),
)
})
test('server responds with 5xx and no json response', () => {
const mockResponse = {
status: 500,
statusText: 'Internal Server Error',
json: () => Promise.reject(new Error('Failed to parse JSON')),
}
expect(assert2xx(mockResponse as unknown as Response)).rejects.toThrowError(
expect.objectContaining({
statusCode: 500,
message: 'HTTP Error 500: Internal Server Error',
}),
)
})
test('server responds with 5xx and json response', () => {
const mockResponse = {
status: 500,
statusText: 'Internal Server Error',
json: () =>
Promise.resolve({
error: {
type: 'validationError',
description: 'Document is not of valid type',
},
status: 500,
}),
}
expect(assert2xx(mockResponse as unknown as Response)).rejects.toThrowError(
expect.objectContaining({
statusCode: 500,
message: 'validationError: Document is not of valid type',
}),
)
})