Skip to content

Commit

Permalink
small change and added test
Browse files Browse the repository at this point in the history
  • Loading branch information
maximilianMairinger committed Sep 10, 2023
1 parent cdd6ac3 commit 5d1ee32
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 9 deletions.
4 changes: 2 additions & 2 deletions app/src/sanitizeAgainst.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ abstract class Matcher {
}



const isPromiseSani = sanitizeRec(Promise)
export class AWAITED<Pat extends Pattern> extends Matcher {
public sani: Function
constructor(private _pattern: Pat) {
Expand All @@ -40,7 +40,7 @@ export class AWAITED<Pat extends Pattern> extends Matcher {
return this._pattern instanceof AWAITED ? this._pattern.pattern : this._pattern
}
matches(input: unknown): unknown {
sanitizeRec(Promise)(input)
isPromiseSani(input)
const myKnownInputObjects = knownInputObjects
return (input as Promise<any>).then((input) => {
knownInputObjects = myKnownInputObjects
Expand Down
38 changes: 31 additions & 7 deletions test/src/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -307,31 +307,55 @@ describe("core", () => {
})

describe("Combinator with awaited", () => {
test("Or with one awaited", async () => {
test("Or with one awaited 1", async () => {
let against = sani(new OR(new AWAITED(Number), String))
expect.assertions(4)

expect(against(Promise.resolve(3))).toBeInstanceOf(Promise)
expect(against("asd")).toBeInstanceOf(Promise)
expect(await against(Promise.resolve(3))).eq(3)
expect(async () => await against(4)).rejects.toThrow()
expect(async () => await against(Promise.resolve("qwe"))).rejects.toThrow()
expect(await against("asd")).eq("asd")
})

test("Or with one awaited 2", async () => {
let against = sani(new OR(String, new AWAITED(Number)))

expect(against(Promise.resolve(3))).toBeInstanceOf(Promise)
expect(against("asd")).toBeInstanceOf(Promise)
expect(await against(Promise.resolve(3))).eq(3)
expect(async () => await against(4)).rejects.toThrow()
expect(async () => await against(Promise.resolve("qwe"))).rejects.toThrow()
expect(await against("asd")).eq("asd")
})


test("Or with two awaited", async () => {
let against = sani(new OR(new AWAITED(Number), new AWAITED(String)))

expect.assertions(6)

expect(await against(Promise.resolve(3))).eq(3)
expect(await against(Promise.resolve("qwe"))).eq("qwe")
expect(async () => await against(Promise.resolve(false))).rejects.toThrow()
expect(async () => await against(Promise.resolve(false))).rejects.toThrow()
expect(async () => await against(4)).rejects.toThrow()
expect(async () => await against("asd")).rejects.toThrow()
})

test("And with awaited", async () => {

})

describe("Combinator with arbitrary instance of", () => {
test("And", async () => {
const against1 = sani(new AND(Promise, (p) => p.then((e) => e + 1)))

expect(against1(Promise.resolve(2))).toBeInstanceOf(Promise)
expect(await against1(Promise.resolve(2))).eq(3)
expect(await against1(Promise.resolve(3))).eq(4)
expect(() => against1(2)).toThrow()
expect(() => against1("asd")).toThrow()

const against2 = sani(new AND(Promise, (p) => p.then((e) => {if (e !== "") throw new Error()})))
expect(against2(Promise.resolve(""))).toBeInstanceOf(Promise)
expect(await against2(Promise.resolve(""))).eq(undefined)
expect(async () => await against2(Promise.resolve("asd"))).rejects.toThrow()
})
})
})
Expand Down

0 comments on commit 5d1ee32

Please sign in to comment.