diff --git a/helpers/__tests__/postwomanTesting.spec.js b/helpers/__tests__/postwomanTesting.spec.js new file mode 100644 index 000000000..e0824ec41 --- /dev/null +++ b/helpers/__tests__/postwomanTesting.spec.js @@ -0,0 +1,64 @@ +import { PASS, FAIL } from "../postwomanTesting" +import runTestScriptWithVariables from "../postwomanTesting" + +function getTestResult(script, index) { + return runTestScriptWithVariables(script).testResults[index].result +} + +function getErrors(script) { + return runTestScriptWithVariables(script).errors +} + +describe("Error handling", () => { + test("throws error at unknown test method", () => { + const testScriptWithUnknownMethod = "pw.expect(1).toBeSomeUnknownMethod()" + expect(() => { + runTestScriptWithVariables(testScriptWithUnknownMethod) + }).toThrow() + }) + test("errors array is empty on a successful test", () => { + expect(getErrors("pw.expect(1).toBe(1)")).toStrictEqual([]) + }) +}) + +describe("toBe", () => { + test("test for numbers", () => { + expect(getTestResult("pw.expect(1).toBe(2)", 0)).toEqual(FAIL) + + expect(getTestResult("pw.expect(1).toBe(1)", 0)).toEqual(PASS) + }) + + test("test for strings", () => { + expect(getTestResult("pw.expect('hello').toBe('bonjour')", 0)).toEqual(FAIL) + expect(getTestResult("pw.expect('hi').toBe('hi')", 0)).toEqual(PASS) + }) + + test("test for negative assertion (.not.toBe)", () => { + expect(getTestResult("pw.expect(1).not.toBe(1)", 0)).toEqual(FAIL) + expect(getTestResult("pw.expect(1).not.toBe(2)", 0)).toEqual(PASS) + expect(getTestResult("pw.expect('world').not.toBe('planet')", 0)).toEqual(PASS) + expect(getTestResult("pw.expect('world').not.toBe('world')", 0)).toEqual(FAIL) + }) +}) + +describe("toHaveProperty", () => { + const dummyResponse = { + id: 843, + description: "random", + } + + test("test for positive assertion (.toHaveProperty)", () => { + expect( + getTestResult(`pw.expect(${JSON.stringify(dummyResponse)}).toHaveProperty("id")`, 0) + ).toEqual(PASS) + expect(getTestResult(`pw.expect(${dummyResponse.id}).toBe(843)`, 0)).toEqual(PASS) + }) + test("test for negative assertion (.not.toHaveProperty)", () => { + expect( + getTestResult(`pw.expect(${JSON.stringify(dummyResponse)}).not.toHaveProperty("type")`, 0) + ).toEqual(PASS) + expect( + getTestResult(`pw.expect(${JSON.stringify(dummyResponse)}).toHaveProperty("type")`, 0) + ).toEqual(FAIL) + }) +}) diff --git a/helpers/postwomanTesting.js b/helpers/postwomanTesting.js index b53b19276..30d0bb8d4 100644 --- a/helpers/postwomanTesting.js +++ b/helpers/postwomanTesting.js @@ -1,6 +1,6 @@ -const PASS = "PASS" -const FAIL = "FAIL" -const ERROR = "ERROR" +export const PASS = "PASS" +export const FAIL = "FAIL" +export const ERROR = "ERROR" const styles = { [PASS]: { icon: "check", class: "success-response" },