Files
hoppscotch/packages/hoppscotch-common/src/setupTests.ts
2023-06-22 00:36:25 +05:30

72 lines
1.8 KiB
TypeScript

import * as E from "fp-ts/Either"
import { expect } from "vitest"
expect.extend({
toBeLeft(received, expected) {
const { isNot } = this
return {
pass:
E.isLeft(received) &&
this.equals(received.left, expected, undefined, false),
message: () =>
`Expected received value ${isNot ? "not " : ""}to be a left`,
}
},
toBeRight(received) {
const { isNot } = this
return {
pass: E.isRight(received),
message: () =>
`Expected received value ${isNot ? "not " : ""}to be a right`,
}
},
toEqualLeft(received, expected) {
const { isNot } = this
const isLeft = E.isLeft(received)
const leftEquals = E.isLeft(received)
? this.equals(received.left, expected)
: false
return {
pass: isLeft && leftEquals,
message: () => {
if (!isLeft) {
return `Expected received value ${isNot ? "not " : ""}to be a left`
} else if (!leftEquals) {
return `Expected received left value ${
isNot ? "not" : ""
} to equal expected value`
}
throw new Error("Invalid state on `toEqualLeft` matcher")
},
}
},
toSubsetEqualRight(received, expected) {
const { isNot } = this
const isRight = E.isRight(received)
const rightSubsetEquals = E.isRight(received)
? !!this.utils.subsetEquality(received.right, expected)
: false
return {
pass: isRight && rightSubsetEquals,
message: () => {
if (!isRight) {
return `Expected received value ${isNot ? "not " : ""}to be a left`
} else if (!rightSubsetEquals) {
return `Expected received left value to ${
isNot ? "not " : ""
}equal expected value`
}
throw new Error("Invalid state on `toSubsetEqualRight` matcher")
},
}
},
})