Unit tests for test functions toBe, toHaveProperty (#1392)

* Added unit tests for the post-request tests

* Added 2 top level functions to avoid duplication of code

* Simplified tests for toBe and error handling

* Added a test for asserting string values with toBe

* Added a test for negative assertion with toBe

* Added tests for toHaveProperty

* Imported PASS, FAIL and ERROR constants

* Use getTestResult and getErrors to avoid duplication of code

* Removed .vscode/settings.json

* Minor cleanup to postwomanTesting.spec.js

* Revert change of runTestScriptWithVariables back to default export

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
This commit is contained in:
Karel De Smet
2020-12-19 03:15:36 +01:00
committed by GitHub
parent 8e63a84152
commit a2a03c6b52
2 changed files with 67 additions and 3 deletions

View File

@@ -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)
})
})

View File

@@ -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" },