UNPKG

testeranto

Version:

the AI powered BDD test framework for typescript projects

196 lines (189 loc) 4.9 kB
import { ITestSpecification } from "../../CoreTypes"; import { I, O } from "./types"; export const specification: ITestSpecification<I, O> = ( Suite, Given, When, Then ) => [ Suite.Default("PM Proxy Functionality", { // Basic path rewriting tests writeFileProxyTest: Given.SomeBaseString( ["butThenProxy should rewrite writeFileSync paths"], [], [ Then.theButTheProxyReturns( "writeFileSync", "test/path/butThen/test.txt" ), ], "writeFileSync test" ), createWriteStreamProxyTest: Given.SomeBaseString( ["butThenProxy should rewrite createWriteStream paths"], [], [ Then.theButTheProxyReturns( "createWriteStream", "test/path/butThen/stream.txt" ), ], "createWriteStream test" ), screencastProxyTest: Given.SomeBaseString( ["butThenProxy should rewrite screencast paths"], [], [ Then.theButTheProxyReturns( "screencast", "test/path/butThen/screen.png" ), ], "screencast test" ), customScreenShotProxyTest: Given.SomeBaseString( ["butThenProxy should rewrite customScreenShot paths"], [], [ Then.theButTheProxyReturns( "customScreenShot", "test/path/butThen/shot.png" ), ], "customScreenShot test" ), // Edge cases emptyPathTest: Given.SomeBaseString( ["butThenProxy should handle empty paths"], [], [Then.theButTheProxyReturns("writeFileSync", "test/path/butThen/")], "empty path test" ), nestedPathTest: Given.SomeBaseString( ["butThenProxy should handle nested paths"], [], [ Then.theButTheProxyReturns( "writeFileSync", "test/path/butThen/nested/folder/test.txt" ), ], "nested path test" ), specialCharsTest: Given.SomeBaseString( ["butThenProxy should handle special characters in paths"], [], [ Then.theButTheProxyReturns( "writeFileSync", "test/path/butThen/file with spaces.txt" ), ], "special chars test" ), testsJsonTest: Given.SomeBaseString( ["butThenProxy should handle tests.json correctly"], [], [ Then.theButTheProxyReturns( "writeFileSync", "test/path/butThen/tests.json" ), ], "tests.json test" ), }), Suite.Default("Proxy Type Coverage", { // Test all proxy types butThenProxyTest: Given.SomeBaseString( ["butThenProxy should work correctly"], [], [ Then.theButTheProxyReturns( "writeFileSync", "test/path/butThen/test.txt" ), ], "butThenProxy test" ), andWhenProxyTest: Given.SomeBaseString( ["andWhenProxy should work correctly"], [], [ Then.theButTheProxyReturns( "writeFileSync", "test/path/andWhen/test.txt" ), ], "andWhenProxy test" ), beforeEachProxyTest: Given.SomeBaseString( ["beforeEachProxy should work correctly"], [], [ Then.theButTheProxyReturns( "writeFileSync", "suite-1/beforeEach/test.txt" ), ], "beforeEachProxy test" ), afterEachProxyTest: Given.SomeBaseString( ["afterEachProxy should work correctly"], [], [ Then.theButTheProxyReturns( "writeFileSync", "suite-1/given-1/afterEach/test.txt" ), ], "afterEachProxy test" ), }), Suite.Default("Content Preservation", { // Verify content is preserved contentPreservationTest: Given.SomeBaseString( ["Proxies should preserve file content"], [], [ Then.theButTheProxyReturns( "writeFileSync", "test/path/butThen/test.txt" ), Then.verifyContent("test content"), ], "content preservation test" ), objectContentTest: Given.SomeBaseString( ["Proxies should preserve object content"], [], [ Then.theButTheProxyReturns( "screencast", "test/path/butThen/screen.png" ), Then.verifyContent({ quality: 80, fullPage: true }), ], "object content test" ), }), Suite.Default("Error Cases", { invalidPathTest: Given.SomeBaseString( ["Proxies should handle invalid paths"], [], [ Then.theButTheProxyReturns( "writeFileSync", "test/path/butThen/../invalid.txt" ), ], "invalid path test" ), undefinedInputTest: Given.SomeBaseString( ["Proxies should handle undefined inputs"], [], [Then.theButTheProxyReturns("writeFileSync", undefined)], "undefined input test" ), }), ];