@taqueria/plugin-jest 0.39.18 → 0.39.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs.map +1 -1
- package/index.d.cts +2 -0
- package/index.d.ts +1 -0
- package/index.js.map +1 -1
- package/package.json +12 -12
package/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts","common.ts","contractTestTemplate.ts","proxy.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task, Template } from '@taqueria/node-sdk';\nimport { CustomRequestArgs, toRequestArgs } from './common';\nimport createContractTest from './contractTestTemplate';\nimport proxy from './proxy';\n\nPlugin.create<CustomRequestArgs>(requestArgs => ({\n\tschema: '0.1',\n\tversion: '0.4.0',\n\talias: 'jest',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'test',\n\t\t\tcommand: 'test [partition]',\n\t\t\tdescription: 'Setup a directory as a partition to run Jest tests',\n\t\t\taliases: ['jest'],\n\t\t\thandler: 'proxy',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'partition',\n\t\t\t\t\tdescription: 'Name of the partition for these tests',\n\t\t\t\t\tdefaultValue: 'tests',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t}),\n\t\t\t],\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'init',\n\t\t\t\t\tshortFlag: 'i',\n\t\t\t\t\tdescription: 'Initializes the partition for Jest',\n\t\t\t\t\tboolean: true,\n\t\t\t\t}),\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'testPattern',\n\t\t\t\t\tshortFlag: 't',\n\t\t\t\t\tdescription: 'Run test files that match the provided pattern',\n\t\t\t\t}),\n\t\t\t],\n\t\t}),\n\t],\n\ttemplates: [\n\t\tTemplate.create({\n\t\t\ttemplate: 'contract-test',\n\t\t\tcommand: 'contract-test <michelsonArtifact>',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'michelsonArtifact',\n\t\t\t\t\tdescription: 'Name of the michelson contract (artifact) to generate tests for',\n\t\t\t\t\trequired: true,\n\t\t\t\t\ttype: 'string',\n\t\t\t\t}),\n\t\t\t],\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'partition',\n\t\t\t\t\tdescription: 'Partition to place generated test suite',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefaultValue: toRequestArgs(requestArgs).config.jest.testsRootDir,\n\t\t\t\t}),\n\t\t\t],\n\t\t\tdescription: 'Generate integration test for a contract',\n\t\t\thandler: createContractTest,\n\t\t}),\n\t],\n\tproxy,\n}), process.argv);\n","import { noop, RequestArgs, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { SanitizedAbsPath, SanitizedPath } from '@taqueria/node-sdk/types';\nimport { mkdir, stat, writeFile } from 'fs/promises';\nimport { defaults } from 'jest-config';\nimport { join, relative } from 'path';\nimport JestConfig from './config';\n\nexport type DefaultConfig = typeof defaults;\n\nexport interface CustomRequestArgs extends RequestArgs.t {\n\tconfig: JestConfig;\n\tpartition?: string;\n\tinit?: string;\n\ttestPattern?: string;\n}\n\nexport const toRequestArgs = (args: RequestArgs.t): CustomRequestArgs => {\n\tconst config = {\n\t\t...args.config,\n\t\tjest: {\n\t\t\ttestsRootDir: 'tests',\n\t\t},\n\t};\n\n\treturn {\n\t\t...args,\n\t\tconfig,\n\t};\n};\n\nexport const getDefaultConfig = (defaultConfig: DefaultConfig) => {\n\tconst settings = { ...defaults, preset: 'ts-jest', testEnvironment: 'node' };\n\treturn (\n\t\t`\nmodule.exports = ${JSON.stringify(settings, null, 4)}\n`\n\t);\n};\n\nexport const ensureRootConfigExists = (projectDir: SanitizedAbsPath.t) => {\n\tconst jestRootConfig = getRootConfigAbspath(projectDir);\n\treturn stat(jestRootConfig)\n\t\t.catch(_ => writeFile(jestRootConfig, getDefaultConfig(defaults)))\n\t\t.then(_ => jestRootConfig);\n};\n\nexport const getRootConfigAbspath = (projectDir: SanitizedAbsPath.t) =>\n\tSanitizedAbsPath.create(\n\t\tjoin(projectDir, '.taq', 'jest.config.js'),\n\t);\n\nexport const getTestsRootDir = (config: JestConfig) => {\n\treturn config.jest.testsRootDir;\n};\n\nexport const toPartitionCfg = (partitionRelpath: SanitizedPath.t, rootConfigRelPath: SanitizedPath.t) => `\nconst parentConfig = require('${rootConfigRelPath}')\n\nmodule.exports = {\n ...parentConfig,\n roots: [\n \"${partitionRelpath}\"\n ]\n}\n`;\n\nexport const getPartitionAbspath = (partitionDir: string) => SanitizedAbsPath.create(partitionDir);\n\nexport const getPartitionConfigAbspath = (partitionDir: string) =>\n\tSanitizedAbsPath.create(join(partitionDir, 'jest.config.js'));\n\nexport const initPartition = (partitionDir: SanitizedAbsPath.t, projectDir: SanitizedAbsPath.t) => {\n\treturn writeFile(\n\t\tgetPartitionConfigAbspath(partitionDir),\n\t\ttoPartitionCfg(\n\t\t\tSanitizedPath.create('./'),\n\t\t\tSanitizedPath.create(relative(partitionDir, getRootConfigAbspath(projectDir))),\n\t\t),\n\t);\n};\n\nexport const ensurePartitionExists = async (\n\tpartitionDir: SanitizedAbsPath.t,\n\tprojectDir: SanitizedAbsPath.t,\n\tforceCreate = false,\n) =>\n\tensureRootConfigExists(projectDir)\n\t\t.then(_ => stat(partitionDir))\n\t\t.then(stats =>\n\t\t\tstats.isFile()\n\t\t\t\t? sendAsyncErr(`${partitionDir} is an invalid partition directory`)\n\t\t\t\t: stats\n\t\t)\n\t\t.catch(_ => mkdir(partitionDir, { recursive: true }))\n\t\t.then(_ => getPartitionConfigAbspath(partitionDir))\n\t\t.then(partitionCfgAbsPath =>\n\t\t\tstat(partitionCfgAbsPath)\n\t\t\t\t.then(_ => forceCreate ? initPartition(partitionDir, projectDir) : undefined)\n\t\t\t\t.catch(_ => initPartition(partitionDir, projectDir))\n\t\t)\n\t\t.then(_ => getPartitionConfigAbspath(partitionDir));\n\nexport const ensureSelectedPartitionExists = (args: CustomRequestArgs, forceCreate = false) =>\n\targs.partition\n\t\t? ensurePartitionExists(\n\t\t\tSanitizedAbsPath.create(join(args.projectDir, args.partition)),\n\t\t\tSanitizedPath.create(args.projectDir),\n\t\t\tforceCreate,\n\t\t)\n\t\t: ensurePartitionExists(\n\t\t\tSanitizedAbsPath.create(\n\t\t\t\tjoin(args.projectDir, getTestsRootDir(args.config)),\n\t\t\t),\n\t\t\tSanitizedPath.create(args.projectDir),\n\t\t\tforceCreate,\n\t\t);\n","// import { normalizeContractName } from '@taqueria/plugin-contract-types/src/generator/contract-name';\nimport { RequestArgs, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { generateContractTypesProcessContractFiles } from '@taqueria/plugin-contract-types/src/cli-process.js';\nimport {\n\tcreateTestingCodeGenerator,\n\tnormalizeContractName,\n} from '@taqueria/plugin-contract-types/src/generator/testing-code-generator.js';\nimport { readFile, stat, writeFile } from 'fs/promises';\nimport { basename, dirname, join } from 'path';\nimport { CustomRequestArgs, ensureSelectedPartitionExists, getPartitionAbspath, getTestsRootDir } from './common';\n\ntype Generator = ReturnType<typeof createTestingCodeGenerator>;\n\ninterface Opts extends CustomRequestArgs {\n\treadonly michelsonArtifact?: string;\n\treadonly partition?: string;\n\treadonly name?: string;\n}\n\nconst getMichelsonAbspath = (parsedArgs: Opts) =>\n\tjoin(parsedArgs.config.artifactsDir ?? 'artifacts', parsedArgs.michelsonArtifact!);\n\nconst ensureMichelsonExists = (parsedArgs: Opts) => {\n\tconst abspath = getMichelsonAbspath(parsedArgs);\n\treturn stat(abspath)\n\t\t.then(() => parsedArgs)\n\t\t.catch(() => Promise.reject(`${abspath} does not exist. Perhaps you need to run \"taq compile\"?`));\n};\n\nconst getPartition = (parsedArgs: Opts) => {\n\tconst partition = parsedArgs.partition ?? getTestsRootDir(parsedArgs.config);\n\treturn getPartitionAbspath(partition);\n};\n\nconst getTypesOutputAbspath = (parsedArgs: Opts) => join(getPartition(parsedArgs), 'types');\n\nconst generateContractTypes = (parsedArgs: Opts) =>\n\tgenerateContractTypesProcessContractFiles({\n\t\tinputTzContractDirectory: parsedArgs.config.artifactsDir ?? 'artifacts',\n\t\tinputFiles: [getMichelsonAbspath(parsedArgs)],\n\t\toutputTypescriptDirectory: getTypesOutputAbspath(parsedArgs),\n\t\tformat: 'tz',\n\t\ttypeAliasMode: 'file',\n\t}).then(_ => parsedArgs);\n\nconst getContractName = (parsedArgs: Opts) =>\n\tparsedArgs.name\n\t\t? parsedArgs.name.trim().replace(/\\.ts$/, '')\n\t\t: basename(parsedArgs.michelsonArtifact!, '.tz');\n\nconst generateTestSuite = (parsedArgs: Opts) => {\n\tconst michelsonAbspath = getMichelsonAbspath(parsedArgs);\n\tconst contractName = getContractName(parsedArgs);\n\tconst partition = getPartition(parsedArgs);\n\tconst jestSuiteAbspath = join(partition, `${contractName}.spec.ts`);\n\n\treturn readFile(michelsonAbspath, { encoding: 'utf-8' })\n\t\t.then(contractSource => ({ contractSource, contractFormat: 'tz' as const }))\n\t\t.then(createTestingCodeGenerator)\n\t\t.then(toJest(contractName))\n\t\t.then(contents => writeFile(jestSuiteAbspath, contents, { encoding: 'utf-8' }))\n\t\t.then(() => jestSuiteAbspath);\n};\n\nconst toJest = (contractName: string) =>\n\t(generator: Generator) => {\n\t\tconst methodCalls = generator.methods.map(m => ({\n\t\t\tname: m.name,\n\t\t\tmethodCall: generator.generateMethodCall({\n\t\t\t\tmethodName: m.name,\n\t\t\t\tformatting: {\n\t\t\t\t\tindent: 2,\n\t\t\t\t},\n\t\t\t}),\n\t\t\tstorageAccess: generator.generateStorageAccess({ storagePath: '' }),\n\t\t}));\n\t\treturn `\nimport { TezosToolkit } from '@taquito/taquito';\nimport { char2Bytes } from '@taquito/utils';\nimport { tas } from './types/type-aliases';\nimport { InMemorySigner, importKey } from '@taquito/signer';\nimport { ${normalizeContractName(contractName)}ContractType as ContractType } from './types/${contractName}.types';\nimport { ${normalizeContractName(contractName)}Code as ContractCode } from './types/${contractName}.code';\n\njest.setTimeout(20000)\n\ndescribe('${contractName}', () => {\n\tconst config = require('../.taq/config.json')\n const Tezos = new TezosToolkit(config.sandbox.local.rpcUrl);\n\tconst key = config.sandbox.local.accounts.bob.secretKey.replace('unencrypted:', '')\n\tTezos.setProvider({\n\t\tsigner: new InMemorySigner(key),\n\t });\n let contract: ContractType = undefined as unknown as ContractType;\n beforeAll(async () => {\n ${generator.generateOrigination({ formatting: { indent: 3 } }).code}\n });\n\n${\n\t\t\tmethodCalls.map(x => `\n it('should call ${x.name}', async () => {\n ${x.storageAccess.getStorageValueFunctionCode}\n const storageValueBefore = await ${x.storageAccess.getStorageValueFunctionName}();\n ${x.methodCall.code}\n const storageValueAfter = await ${x.storageAccess.getStorageValueFunctionName}();\n\n expect(storageValueAfter.toString()).toBe('');\n });\n`).join('')\n\t\t}});\n`;\n\t};\n\nexport default (args: RequestArgs.t) => {\n\tconst parsedArgs = args as Opts;\n\tparsedArgs.michelsonArtifact\n\t\t? ensureMichelsonExists(parsedArgs)\n\t\t\t.then(ensureSelectedPartitionExists)\n\t\t\t.then(() => parsedArgs)\n\t\t\t.then(generateContractTypes)\n\t\t\t.then(generateTestSuite)\n\t\t\t.then((outFile: string) => sendAsyncRes(`Test suite generated: ${outFile}`))\n\t\t\t.catch(sendAsyncErr)\n\t\t: sendAsyncErr(`No michelson artifact provided`);\n};\n","import { sendAsyncRes, sendErr } from '@taqueria/node-sdk';\nimport { RequestArgs } from '@taqueria/node-sdk';\nimport { execa } from 'execa';\nimport { CustomRequestArgs, ensureSelectedPartitionExists, toRequestArgs } from './common';\n\nconst execCmd = (cmd: string, args: string[]) => {\n\tconst child = execa(cmd, args, {\n\t\tshell: true,\n\t\treject: false,\n\t\tenv: { FORCE_COLOR: 'true' },\n\t});\n\n\tchild.stdout?.pipe(process.stdout);\n\tchild.stderr?.pipe(process.stderr);\n\n\treturn child;\n};\nexport default (args: RequestArgs.t) => {\n\tconst parsedArgs = toRequestArgs(args);\n\treturn ensureSelectedPartitionExists(parsedArgs, parsedArgs.init ? true : false)\n\t\t.then(configAbsPath => {\n\t\t\tif (!parsedArgs.init) {\n\t\t\t\tconst retval = parsedArgs.testPattern\n\t\t\t\t\t? execCmd('npx', ['jest', '-c', configAbsPath, '--testPathPattern', parsedArgs.testPattern])\n\t\t\t\t\t: execCmd('npx', ['jest', '-c', configAbsPath]);\n\t\t\t\treturn retval.then(child => {\n\t\t\t\t\tif (child.exitCode === 0) return;\n\t\t\t\t\telse process.exit(child.exitCode);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn sendAsyncRes('Initialized successfully.');\n\t\t});\n};\n"],"mappings":"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","names":["import_node_sdk","import_node_sdk","import_promises","import_path","import_node_sdk"]}
|
|
1
|
+
{"version":3,"sources":["index.ts","common.ts","contractTestTemplate.ts","proxy.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task, Template } from '@taqueria/node-sdk';\nimport { CustomRequestArgs, toRequestArgs } from './common';\nimport createContractTest from './contractTestTemplate';\nimport proxy from './proxy';\n\nPlugin.create<CustomRequestArgs>(requestArgs => ({\n\tschema: '0.1',\n\tversion: '0.4.0',\n\talias: 'jest',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'test',\n\t\t\tcommand: 'test [partition]',\n\t\t\tdescription: 'Setup a directory as a partition to run Jest tests',\n\t\t\taliases: ['jest'],\n\t\t\thandler: 'proxy',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'partition',\n\t\t\t\t\tdescription: 'Name of the partition for these tests',\n\t\t\t\t\tdefaultValue: 'tests',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t}),\n\t\t\t],\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'init',\n\t\t\t\t\tshortFlag: 'i',\n\t\t\t\t\tdescription: 'Initializes the partition for Jest',\n\t\t\t\t\tboolean: true,\n\t\t\t\t}),\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'testPattern',\n\t\t\t\t\tshortFlag: 't',\n\t\t\t\t\tdescription: 'Run test files that match the provided pattern',\n\t\t\t\t}),\n\t\t\t],\n\t\t}),\n\t],\n\ttemplates: [\n\t\tTemplate.create({\n\t\t\ttemplate: 'contract-test',\n\t\t\tcommand: 'contract-test <michelsonArtifact>',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'michelsonArtifact',\n\t\t\t\t\tdescription: 'Name of the michelson contract (artifact) to generate tests for',\n\t\t\t\t\trequired: true,\n\t\t\t\t\ttype: 'string',\n\t\t\t\t}),\n\t\t\t],\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'partition',\n\t\t\t\t\tdescription: 'Partition to place generated test suite',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefaultValue: toRequestArgs(requestArgs).config.jest.testsRootDir,\n\t\t\t\t}),\n\t\t\t],\n\t\t\tdescription: 'Generate integration test for a contract',\n\t\t\thandler: createContractTest,\n\t\t}),\n\t],\n\tproxy,\n}), process.argv);\n","import { noop, RequestArgs, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { SanitizedAbsPath, SanitizedPath } from '@taqueria/node-sdk/types';\nimport { mkdir, stat, writeFile } from 'fs/promises';\nimport { defaults } from 'jest-config';\nimport { join, relative } from 'path';\nimport JestConfig from './config';\n\nexport type DefaultConfig = typeof defaults;\n\nexport interface CustomRequestArgs extends RequestArgs.t {\n\tconfig: JestConfig;\n\tpartition?: string;\n\tinit?: string;\n\ttestPattern?: string;\n}\n\nexport const toRequestArgs = (args: RequestArgs.t): CustomRequestArgs => {\n\tconst config = {\n\t\t...args.config,\n\t\tjest: {\n\t\t\ttestsRootDir: 'tests',\n\t\t},\n\t};\n\n\treturn {\n\t\t...args,\n\t\tconfig,\n\t};\n};\n\nexport const getDefaultConfig = (defaultConfig: DefaultConfig) => {\n\tconst settings = { ...defaults, preset: 'ts-jest', testEnvironment: 'node' };\n\treturn (\n\t\t`\nmodule.exports = ${JSON.stringify(settings, null, 4)}\n`\n\t);\n};\n\nexport const ensureRootConfigExists = (projectDir: SanitizedAbsPath.t) => {\n\tconst jestRootConfig = getRootConfigAbspath(projectDir);\n\treturn stat(jestRootConfig)\n\t\t.catch(_ => writeFile(jestRootConfig, getDefaultConfig(defaults)))\n\t\t.then(_ => jestRootConfig);\n};\n\nexport const getRootConfigAbspath = (projectDir: SanitizedAbsPath.t) =>\n\tSanitizedAbsPath.create(\n\t\tjoin(projectDir, '.taq', 'jest.config.js'),\n\t);\n\nexport const getTestsRootDir = (config: JestConfig) => {\n\treturn config.jest.testsRootDir;\n};\n\nexport const toPartitionCfg = (partitionRelpath: SanitizedPath.t, rootConfigRelPath: SanitizedPath.t) => `\nconst parentConfig = require('${rootConfigRelPath}')\n\nmodule.exports = {\n ...parentConfig,\n roots: [\n \"${partitionRelpath}\"\n ]\n}\n`;\n\nexport const getPartitionAbspath = (partitionDir: string) => SanitizedAbsPath.create(partitionDir);\n\nexport const getPartitionConfigAbspath = (partitionDir: string) =>\n\tSanitizedAbsPath.create(join(partitionDir, 'jest.config.js'));\n\nexport const initPartition = (partitionDir: SanitizedAbsPath.t, projectDir: SanitizedAbsPath.t) => {\n\treturn writeFile(\n\t\tgetPartitionConfigAbspath(partitionDir),\n\t\ttoPartitionCfg(\n\t\t\tSanitizedPath.create('./'),\n\t\t\tSanitizedPath.create(relative(partitionDir, getRootConfigAbspath(projectDir))),\n\t\t),\n\t);\n};\n\nexport const ensurePartitionExists = async (\n\tpartitionDir: SanitizedAbsPath.t,\n\tprojectDir: SanitizedAbsPath.t,\n\tforceCreate = false,\n) =>\n\tensureRootConfigExists(projectDir)\n\t\t.then(_ => stat(partitionDir))\n\t\t.then(stats =>\n\t\t\tstats.isFile()\n\t\t\t\t? sendAsyncErr(`${partitionDir} is an invalid partition directory`)\n\t\t\t\t: stats\n\t\t)\n\t\t.catch(_ => mkdir(partitionDir, { recursive: true }))\n\t\t.then(_ => getPartitionConfigAbspath(partitionDir))\n\t\t.then(partitionCfgAbsPath =>\n\t\t\tstat(partitionCfgAbsPath)\n\t\t\t\t.then(_ => forceCreate ? initPartition(partitionDir, projectDir) : undefined)\n\t\t\t\t.catch(_ => initPartition(partitionDir, projectDir))\n\t\t)\n\t\t.then(_ => getPartitionConfigAbspath(partitionDir));\n\nexport const ensureSelectedPartitionExists = (args: CustomRequestArgs, forceCreate = false) =>\n\targs.partition\n\t\t? ensurePartitionExists(\n\t\t\tSanitizedAbsPath.create(join(args.projectDir, args.partition)),\n\t\t\tSanitizedPath.create(args.projectDir),\n\t\t\tforceCreate,\n\t\t)\n\t\t: ensurePartitionExists(\n\t\t\tSanitizedAbsPath.create(\n\t\t\t\tjoin(args.projectDir, getTestsRootDir(args.config)),\n\t\t\t),\n\t\t\tSanitizedPath.create(args.projectDir),\n\t\t\tforceCreate,\n\t\t);\n","// import { normalizeContractName } from '@taqueria/plugin-contract-types/src/generator/contract-name';\nimport { RequestArgs, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { generateContractTypesProcessContractFiles } from '@taqueria/plugin-contract-types/src/cli-process.js';\nimport {\n\tcreateTestingCodeGenerator,\n\tnormalizeContractName,\n} from '@taqueria/plugin-contract-types/src/generator/testing-code-generator.js';\nimport { readFile, stat, writeFile } from 'fs/promises';\nimport { basename, dirname, join } from 'path';\nimport { CustomRequestArgs, ensureSelectedPartitionExists, getPartitionAbspath, getTestsRootDir } from './common';\n\ntype Generator = ReturnType<typeof createTestingCodeGenerator>;\n\ninterface Opts extends CustomRequestArgs {\n\treadonly michelsonArtifact?: string;\n\treadonly partition?: string;\n\treadonly name?: string;\n}\n\nconst getMichelsonAbspath = (parsedArgs: Opts) =>\n\tjoin(parsedArgs.config.artifactsDir ?? 'artifacts', parsedArgs.michelsonArtifact!);\n\nconst ensureMichelsonExists = (parsedArgs: Opts) => {\n\tconst abspath = getMichelsonAbspath(parsedArgs);\n\treturn stat(abspath)\n\t\t.then(() => parsedArgs)\n\t\t.catch(() => Promise.reject(`${abspath} does not exist. Perhaps you need to run \"taq compile\"?`));\n};\n\nconst getPartition = (parsedArgs: Opts) => {\n\tconst partition = parsedArgs.partition ?? getTestsRootDir(parsedArgs.config);\n\treturn getPartitionAbspath(partition);\n};\n\nconst getTypesOutputAbspath = (parsedArgs: Opts) => join(getPartition(parsedArgs), 'types');\n\nconst generateContractTypes = (parsedArgs: Opts) =>\n\tgenerateContractTypesProcessContractFiles({\n\t\tinputTzContractDirectory: parsedArgs.config.artifactsDir ?? 'artifacts',\n\t\tinputFiles: [getMichelsonAbspath(parsedArgs)],\n\t\toutputTypescriptDirectory: getTypesOutputAbspath(parsedArgs),\n\t\tformat: 'tz',\n\t\ttypeAliasMode: 'file',\n\t}).then(_ => parsedArgs);\n\nconst getContractName = (parsedArgs: Opts) =>\n\tparsedArgs.name\n\t\t? parsedArgs.name.trim().replace(/\\.ts$/, '')\n\t\t: basename(parsedArgs.michelsonArtifact!, '.tz');\n\nconst generateTestSuite = (parsedArgs: Opts) => {\n\tconst michelsonAbspath = getMichelsonAbspath(parsedArgs);\n\tconst contractName = getContractName(parsedArgs);\n\tconst partition = getPartition(parsedArgs);\n\tconst jestSuiteAbspath = join(partition, `${contractName}.spec.ts`);\n\n\treturn readFile(michelsonAbspath, { encoding: 'utf-8' })\n\t\t.then(contractSource => ({ contractSource, contractFormat: 'tz' as const }))\n\t\t.then(createTestingCodeGenerator)\n\t\t.then(toJest(contractName))\n\t\t.then(contents => writeFile(jestSuiteAbspath, contents, { encoding: 'utf-8' }))\n\t\t.then(() => jestSuiteAbspath);\n};\n\nconst toJest = (contractName: string) =>\n\t(generator: Generator) => {\n\t\tconst methodCalls = generator.methods.map(m => ({\n\t\t\tname: m.name,\n\t\t\tmethodCall: generator.generateMethodCall({\n\t\t\t\tmethodName: m.name,\n\t\t\t\tformatting: {\n\t\t\t\t\tindent: 2,\n\t\t\t\t},\n\t\t\t}),\n\t\t\tstorageAccess: generator.generateStorageAccess({ storagePath: '' }),\n\t\t}));\n\t\treturn `\nimport { TezosToolkit } from '@taquito/taquito';\nimport { char2Bytes } from '@taquito/utils';\nimport { tas } from './types/type-aliases';\nimport { InMemorySigner, importKey } from '@taquito/signer';\nimport { ${normalizeContractName(contractName)}ContractType as ContractType } from './types/${contractName}.types';\nimport { ${normalizeContractName(contractName)}Code as ContractCode } from './types/${contractName}.code';\n\njest.setTimeout(20000)\n\ndescribe('${contractName}', () => {\n\tconst config = require('../.taq/config.json')\n const Tezos = new TezosToolkit(config.sandbox.local.rpcUrl);\n\tconst key = config.sandbox.local.accounts.bob.secretKey.replace('unencrypted:', '')\n\tTezos.setProvider({\n\t\tsigner: new InMemorySigner(key),\n\t });\n let contract: ContractType = undefined as unknown as ContractType;\n beforeAll(async () => {\n ${generator.generateOrigination({ formatting: { indent: 3 } }).code}\n });\n\n${\n\t\t\tmethodCalls.map(x => `\n it('should call ${x.name}', async () => {\n ${x.storageAccess.getStorageValueFunctionCode}\n const storageValueBefore = await ${x.storageAccess.getStorageValueFunctionName}();\n ${x.methodCall.code}\n const storageValueAfter = await ${x.storageAccess.getStorageValueFunctionName}();\n\n expect(storageValueAfter.toString()).toBe('');\n });\n`).join('')\n\t\t}});\n`;\n\t};\n\nexport default (args: RequestArgs.t) => {\n\tconst parsedArgs = args as Opts;\n\tparsedArgs.michelsonArtifact\n\t\t? ensureMichelsonExists(parsedArgs)\n\t\t\t.then(ensureSelectedPartitionExists)\n\t\t\t.then(() => parsedArgs)\n\t\t\t.then(generateContractTypes)\n\t\t\t.then(generateTestSuite)\n\t\t\t.then((outFile: string) => sendAsyncRes(`Test suite generated: ${outFile}`))\n\t\t\t.catch(sendAsyncErr)\n\t\t: sendAsyncErr(`No michelson artifact provided`);\n};\n","import { sendAsyncRes, sendErr } from '@taqueria/node-sdk';\nimport { RequestArgs } from '@taqueria/node-sdk';\nimport { execa } from 'execa';\nimport { CustomRequestArgs, ensureSelectedPartitionExists, toRequestArgs } from './common';\n\nconst execCmd = (cmd: string, args: string[]) => {\n\tconst child = execa(cmd, args, {\n\t\tshell: true,\n\t\treject: false,\n\t\tenv: { FORCE_COLOR: 'true' },\n\t});\n\n\tchild.stdout?.pipe(process.stdout);\n\tchild.stderr?.pipe(process.stderr);\n\n\treturn child;\n};\nexport default (args: RequestArgs.t) => {\n\tconst parsedArgs = toRequestArgs(args);\n\treturn ensureSelectedPartitionExists(parsedArgs, parsedArgs.init ? true : false)\n\t\t.then(configAbsPath => {\n\t\t\tif (!parsedArgs.init) {\n\t\t\t\tconst retval = parsedArgs.testPattern\n\t\t\t\t\t? execCmd('npx', ['jest', '-c', configAbsPath, '--testPathPattern', parsedArgs.testPattern])\n\t\t\t\t\t: execCmd('npx', ['jest', '-c', configAbsPath]);\n\t\t\t\treturn retval.then(child => {\n\t\t\t\t\tif (child.exitCode === 0) return;\n\t\t\t\t\telse process.exit(child.exitCode);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn sendAsyncRes('Initialized successfully.');\n\t\t});\n};\n"],"mappings":"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","names":["import_node_sdk","import_node_sdk","import_promises","import_path","import_node_sdk"]}
|
package/index.d.cts
ADDED
package/index.d.ts
CHANGED
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts","common.ts","contractTestTemplate.ts","proxy.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task, Template } from '@taqueria/node-sdk';\nimport { CustomRequestArgs, toRequestArgs } from './common';\nimport createContractTest from './contractTestTemplate';\nimport proxy from './proxy';\n\nPlugin.create<CustomRequestArgs>(requestArgs => ({\n\tschema: '0.1',\n\tversion: '0.4.0',\n\talias: 'jest',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'test',\n\t\t\tcommand: 'test [partition]',\n\t\t\tdescription: 'Setup a directory as a partition to run Jest tests',\n\t\t\taliases: ['jest'],\n\t\t\thandler: 'proxy',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'partition',\n\t\t\t\t\tdescription: 'Name of the partition for these tests',\n\t\t\t\t\tdefaultValue: 'tests',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t}),\n\t\t\t],\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'init',\n\t\t\t\t\tshortFlag: 'i',\n\t\t\t\t\tdescription: 'Initializes the partition for Jest',\n\t\t\t\t\tboolean: true,\n\t\t\t\t}),\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'testPattern',\n\t\t\t\t\tshortFlag: 't',\n\t\t\t\t\tdescription: 'Run test files that match the provided pattern',\n\t\t\t\t}),\n\t\t\t],\n\t\t}),\n\t],\n\ttemplates: [\n\t\tTemplate.create({\n\t\t\ttemplate: 'contract-test',\n\t\t\tcommand: 'contract-test <michelsonArtifact>',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'michelsonArtifact',\n\t\t\t\t\tdescription: 'Name of the michelson contract (artifact) to generate tests for',\n\t\t\t\t\trequired: true,\n\t\t\t\t\ttype: 'string',\n\t\t\t\t}),\n\t\t\t],\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'partition',\n\t\t\t\t\tdescription: 'Partition to place generated test suite',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefaultValue: toRequestArgs(requestArgs).config.jest.testsRootDir,\n\t\t\t\t}),\n\t\t\t],\n\t\t\tdescription: 'Generate integration test for a contract',\n\t\t\thandler: createContractTest,\n\t\t}),\n\t],\n\tproxy,\n}), process.argv);\n","import { noop, RequestArgs, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { SanitizedAbsPath, SanitizedPath } from '@taqueria/node-sdk/types';\nimport { mkdir, stat, writeFile } from 'fs/promises';\nimport { defaults } from 'jest-config';\nimport { join, relative } from 'path';\nimport JestConfig from './config';\n\nexport type DefaultConfig = typeof defaults;\n\nexport interface CustomRequestArgs extends RequestArgs.t {\n\tconfig: JestConfig;\n\tpartition?: string;\n\tinit?: string;\n\ttestPattern?: string;\n}\n\nexport const toRequestArgs = (args: RequestArgs.t): CustomRequestArgs => {\n\tconst config = {\n\t\t...args.config,\n\t\tjest: {\n\t\t\ttestsRootDir: 'tests',\n\t\t},\n\t};\n\n\treturn {\n\t\t...args,\n\t\tconfig,\n\t};\n};\n\nexport const getDefaultConfig = (defaultConfig: DefaultConfig) => {\n\tconst settings = { ...defaults, preset: 'ts-jest', testEnvironment: 'node' };\n\treturn (\n\t\t`\nmodule.exports = ${JSON.stringify(settings, null, 4)}\n`\n\t);\n};\n\nexport const ensureRootConfigExists = (projectDir: SanitizedAbsPath.t) => {\n\tconst jestRootConfig = getRootConfigAbspath(projectDir);\n\treturn stat(jestRootConfig)\n\t\t.catch(_ => writeFile(jestRootConfig, getDefaultConfig(defaults)))\n\t\t.then(_ => jestRootConfig);\n};\n\nexport const getRootConfigAbspath = (projectDir: SanitizedAbsPath.t) =>\n\tSanitizedAbsPath.create(\n\t\tjoin(projectDir, '.taq', 'jest.config.js'),\n\t);\n\nexport const getTestsRootDir = (config: JestConfig) => {\n\treturn config.jest.testsRootDir;\n};\n\nexport const toPartitionCfg = (partitionRelpath: SanitizedPath.t, rootConfigRelPath: SanitizedPath.t) => `\nconst parentConfig = require('${rootConfigRelPath}')\n\nmodule.exports = {\n ...parentConfig,\n roots: [\n \"${partitionRelpath}\"\n ]\n}\n`;\n\nexport const getPartitionAbspath = (partitionDir: string) => SanitizedAbsPath.create(partitionDir);\n\nexport const getPartitionConfigAbspath = (partitionDir: string) =>\n\tSanitizedAbsPath.create(join(partitionDir, 'jest.config.js'));\n\nexport const initPartition = (partitionDir: SanitizedAbsPath.t, projectDir: SanitizedAbsPath.t) => {\n\treturn writeFile(\n\t\tgetPartitionConfigAbspath(partitionDir),\n\t\ttoPartitionCfg(\n\t\t\tSanitizedPath.create('./'),\n\t\t\tSanitizedPath.create(relative(partitionDir, getRootConfigAbspath(projectDir))),\n\t\t),\n\t);\n};\n\nexport const ensurePartitionExists = async (\n\tpartitionDir: SanitizedAbsPath.t,\n\tprojectDir: SanitizedAbsPath.t,\n\tforceCreate = false,\n) =>\n\tensureRootConfigExists(projectDir)\n\t\t.then(_ => stat(partitionDir))\n\t\t.then(stats =>\n\t\t\tstats.isFile()\n\t\t\t\t? sendAsyncErr(`${partitionDir} is an invalid partition directory`)\n\t\t\t\t: stats\n\t\t)\n\t\t.catch(_ => mkdir(partitionDir, { recursive: true }))\n\t\t.then(_ => getPartitionConfigAbspath(partitionDir))\n\t\t.then(partitionCfgAbsPath =>\n\t\t\tstat(partitionCfgAbsPath)\n\t\t\t\t.then(_ => forceCreate ? initPartition(partitionDir, projectDir) : undefined)\n\t\t\t\t.catch(_ => initPartition(partitionDir, projectDir))\n\t\t)\n\t\t.then(_ => getPartitionConfigAbspath(partitionDir));\n\nexport const ensureSelectedPartitionExists = (args: CustomRequestArgs, forceCreate = false) =>\n\targs.partition\n\t\t? ensurePartitionExists(\n\t\t\tSanitizedAbsPath.create(join(args.projectDir, args.partition)),\n\t\t\tSanitizedPath.create(args.projectDir),\n\t\t\tforceCreate,\n\t\t)\n\t\t: ensurePartitionExists(\n\t\t\tSanitizedAbsPath.create(\n\t\t\t\tjoin(args.projectDir, getTestsRootDir(args.config)),\n\t\t\t),\n\t\t\tSanitizedPath.create(args.projectDir),\n\t\t\tforceCreate,\n\t\t);\n","// import { normalizeContractName } from '@taqueria/plugin-contract-types/src/generator/contract-name';\nimport { RequestArgs, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { generateContractTypesProcessContractFiles } from '@taqueria/plugin-contract-types/src/cli-process.js';\nimport {\n\tcreateTestingCodeGenerator,\n\tnormalizeContractName,\n} from '@taqueria/plugin-contract-types/src/generator/testing-code-generator.js';\nimport { readFile, stat, writeFile } from 'fs/promises';\nimport { basename, dirname, join } from 'path';\nimport { CustomRequestArgs, ensureSelectedPartitionExists, getPartitionAbspath, getTestsRootDir } from './common';\n\ntype Generator = ReturnType<typeof createTestingCodeGenerator>;\n\ninterface Opts extends CustomRequestArgs {\n\treadonly michelsonArtifact?: string;\n\treadonly partition?: string;\n\treadonly name?: string;\n}\n\nconst getMichelsonAbspath = (parsedArgs: Opts) =>\n\tjoin(parsedArgs.config.artifactsDir ?? 'artifacts', parsedArgs.michelsonArtifact!);\n\nconst ensureMichelsonExists = (parsedArgs: Opts) => {\n\tconst abspath = getMichelsonAbspath(parsedArgs);\n\treturn stat(abspath)\n\t\t.then(() => parsedArgs)\n\t\t.catch(() => Promise.reject(`${abspath} does not exist. Perhaps you need to run \"taq compile\"?`));\n};\n\nconst getPartition = (parsedArgs: Opts) => {\n\tconst partition = parsedArgs.partition ?? getTestsRootDir(parsedArgs.config);\n\treturn getPartitionAbspath(partition);\n};\n\nconst getTypesOutputAbspath = (parsedArgs: Opts) => join(getPartition(parsedArgs), 'types');\n\nconst generateContractTypes = (parsedArgs: Opts) =>\n\tgenerateContractTypesProcessContractFiles({\n\t\tinputTzContractDirectory: parsedArgs.config.artifactsDir ?? 'artifacts',\n\t\tinputFiles: [getMichelsonAbspath(parsedArgs)],\n\t\toutputTypescriptDirectory: getTypesOutputAbspath(parsedArgs),\n\t\tformat: 'tz',\n\t\ttypeAliasMode: 'file',\n\t}).then(_ => parsedArgs);\n\nconst getContractName = (parsedArgs: Opts) =>\n\tparsedArgs.name\n\t\t? parsedArgs.name.trim().replace(/\\.ts$/, '')\n\t\t: basename(parsedArgs.michelsonArtifact!, '.tz');\n\nconst generateTestSuite = (parsedArgs: Opts) => {\n\tconst michelsonAbspath = getMichelsonAbspath(parsedArgs);\n\tconst contractName = getContractName(parsedArgs);\n\tconst partition = getPartition(parsedArgs);\n\tconst jestSuiteAbspath = join(partition, `${contractName}.spec.ts`);\n\n\treturn readFile(michelsonAbspath, { encoding: 'utf-8' })\n\t\t.then(contractSource => ({ contractSource, contractFormat: 'tz' as const }))\n\t\t.then(createTestingCodeGenerator)\n\t\t.then(toJest(contractName))\n\t\t.then(contents => writeFile(jestSuiteAbspath, contents, { encoding: 'utf-8' }))\n\t\t.then(() => jestSuiteAbspath);\n};\n\nconst toJest = (contractName: string) =>\n\t(generator: Generator) => {\n\t\tconst methodCalls = generator.methods.map(m => ({\n\t\t\tname: m.name,\n\t\t\tmethodCall: generator.generateMethodCall({\n\t\t\t\tmethodName: m.name,\n\t\t\t\tformatting: {\n\t\t\t\t\tindent: 2,\n\t\t\t\t},\n\t\t\t}),\n\t\t\tstorageAccess: generator.generateStorageAccess({ storagePath: '' }),\n\t\t}));\n\t\treturn `\nimport { TezosToolkit } from '@taquito/taquito';\nimport { char2Bytes } from '@taquito/utils';\nimport { tas } from './types/type-aliases';\nimport { InMemorySigner, importKey } from '@taquito/signer';\nimport { ${normalizeContractName(contractName)}ContractType as ContractType } from './types/${contractName}.types';\nimport { ${normalizeContractName(contractName)}Code as ContractCode } from './types/${contractName}.code';\n\njest.setTimeout(20000)\n\ndescribe('${contractName}', () => {\n\tconst config = require('../.taq/config.json')\n const Tezos = new TezosToolkit(config.sandbox.local.rpcUrl);\n\tconst key = config.sandbox.local.accounts.bob.secretKey.replace('unencrypted:', '')\n\tTezos.setProvider({\n\t\tsigner: new InMemorySigner(key),\n\t });\n let contract: ContractType = undefined as unknown as ContractType;\n beforeAll(async () => {\n ${generator.generateOrigination({ formatting: { indent: 3 } }).code}\n });\n\n${\n\t\t\tmethodCalls.map(x => `\n it('should call ${x.name}', async () => {\n ${x.storageAccess.getStorageValueFunctionCode}\n const storageValueBefore = await ${x.storageAccess.getStorageValueFunctionName}();\n ${x.methodCall.code}\n const storageValueAfter = await ${x.storageAccess.getStorageValueFunctionName}();\n\n expect(storageValueAfter.toString()).toBe('');\n });\n`).join('')\n\t\t}});\n`;\n\t};\n\nexport default (args: RequestArgs.t) => {\n\tconst parsedArgs = args as Opts;\n\tparsedArgs.michelsonArtifact\n\t\t? ensureMichelsonExists(parsedArgs)\n\t\t\t.then(ensureSelectedPartitionExists)\n\t\t\t.then(() => parsedArgs)\n\t\t\t.then(generateContractTypes)\n\t\t\t.then(generateTestSuite)\n\t\t\t.then((outFile: string) => sendAsyncRes(`Test suite generated: ${outFile}`))\n\t\t\t.catch(sendAsyncErr)\n\t\t: sendAsyncErr(`No michelson artifact provided`);\n};\n","import { sendAsyncRes, sendErr } from '@taqueria/node-sdk';\nimport { RequestArgs } from '@taqueria/node-sdk';\nimport { execa } from 'execa';\nimport { CustomRequestArgs, ensureSelectedPartitionExists, toRequestArgs } from './common';\n\nconst execCmd = (cmd: string, args: string[]) => {\n\tconst child = execa(cmd, args, {\n\t\tshell: true,\n\t\treject: false,\n\t\tenv: { FORCE_COLOR: 'true' },\n\t});\n\n\tchild.stdout?.pipe(process.stdout);\n\tchild.stderr?.pipe(process.stderr);\n\n\treturn child;\n};\nexport default (args: RequestArgs.t) => {\n\tconst parsedArgs = toRequestArgs(args);\n\treturn ensureSelectedPartitionExists(parsedArgs, parsedArgs.init ? true : false)\n\t\t.then(configAbsPath => {\n\t\t\tif (!parsedArgs.init) {\n\t\t\t\tconst retval = parsedArgs.testPattern\n\t\t\t\t\t? execCmd('npx', ['jest', '-c', configAbsPath, '--testPathPattern', parsedArgs.testPattern])\n\t\t\t\t\t: execCmd('npx', ['jest', '-c', configAbsPath]);\n\t\t\t\treturn retval.then(child => {\n\t\t\t\t\tif (child.exitCode === 0) return;\n\t\t\t\t\telse process.exit(child.exitCode);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn sendAsyncRes('Initialized successfully.');\n\t\t});\n};\n"],"mappings":"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","names":["sendAsyncErr","sendAsyncRes","stat","writeFile","join","join","stat","writeFile","sendAsyncRes","sendAsyncErr","sendAsyncRes","sendAsyncRes"]}
|
|
1
|
+
{"version":3,"sources":["index.ts","common.ts","contractTestTemplate.ts","proxy.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task, Template } from '@taqueria/node-sdk';\nimport { CustomRequestArgs, toRequestArgs } from './common';\nimport createContractTest from './contractTestTemplate';\nimport proxy from './proxy';\n\nPlugin.create<CustomRequestArgs>(requestArgs => ({\n\tschema: '0.1',\n\tversion: '0.4.0',\n\talias: 'jest',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'test',\n\t\t\tcommand: 'test [partition]',\n\t\t\tdescription: 'Setup a directory as a partition to run Jest tests',\n\t\t\taliases: ['jest'],\n\t\t\thandler: 'proxy',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'partition',\n\t\t\t\t\tdescription: 'Name of the partition for these tests',\n\t\t\t\t\tdefaultValue: 'tests',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t}),\n\t\t\t],\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'init',\n\t\t\t\t\tshortFlag: 'i',\n\t\t\t\t\tdescription: 'Initializes the partition for Jest',\n\t\t\t\t\tboolean: true,\n\t\t\t\t}),\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'testPattern',\n\t\t\t\t\tshortFlag: 't',\n\t\t\t\t\tdescription: 'Run test files that match the provided pattern',\n\t\t\t\t}),\n\t\t\t],\n\t\t}),\n\t],\n\ttemplates: [\n\t\tTemplate.create({\n\t\t\ttemplate: 'contract-test',\n\t\t\tcommand: 'contract-test <michelsonArtifact>',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'michelsonArtifact',\n\t\t\t\t\tdescription: 'Name of the michelson contract (artifact) to generate tests for',\n\t\t\t\t\trequired: true,\n\t\t\t\t\ttype: 'string',\n\t\t\t\t}),\n\t\t\t],\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'partition',\n\t\t\t\t\tdescription: 'Partition to place generated test suite',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tdefaultValue: toRequestArgs(requestArgs).config.jest.testsRootDir,\n\t\t\t\t}),\n\t\t\t],\n\t\t\tdescription: 'Generate integration test for a contract',\n\t\t\thandler: createContractTest,\n\t\t}),\n\t],\n\tproxy,\n}), process.argv);\n","import { noop, RequestArgs, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { SanitizedAbsPath, SanitizedPath } from '@taqueria/node-sdk/types';\nimport { mkdir, stat, writeFile } from 'fs/promises';\nimport { defaults } from 'jest-config';\nimport { join, relative } from 'path';\nimport JestConfig from './config';\n\nexport type DefaultConfig = typeof defaults;\n\nexport interface CustomRequestArgs extends RequestArgs.t {\n\tconfig: JestConfig;\n\tpartition?: string;\n\tinit?: string;\n\ttestPattern?: string;\n}\n\nexport const toRequestArgs = (args: RequestArgs.t): CustomRequestArgs => {\n\tconst config = {\n\t\t...args.config,\n\t\tjest: {\n\t\t\ttestsRootDir: 'tests',\n\t\t},\n\t};\n\n\treturn {\n\t\t...args,\n\t\tconfig,\n\t};\n};\n\nexport const getDefaultConfig = (defaultConfig: DefaultConfig) => {\n\tconst settings = { ...defaults, preset: 'ts-jest', testEnvironment: 'node' };\n\treturn (\n\t\t`\nmodule.exports = ${JSON.stringify(settings, null, 4)}\n`\n\t);\n};\n\nexport const ensureRootConfigExists = (projectDir: SanitizedAbsPath.t) => {\n\tconst jestRootConfig = getRootConfigAbspath(projectDir);\n\treturn stat(jestRootConfig)\n\t\t.catch(_ => writeFile(jestRootConfig, getDefaultConfig(defaults)))\n\t\t.then(_ => jestRootConfig);\n};\n\nexport const getRootConfigAbspath = (projectDir: SanitizedAbsPath.t) =>\n\tSanitizedAbsPath.create(\n\t\tjoin(projectDir, '.taq', 'jest.config.js'),\n\t);\n\nexport const getTestsRootDir = (config: JestConfig) => {\n\treturn config.jest.testsRootDir;\n};\n\nexport const toPartitionCfg = (partitionRelpath: SanitizedPath.t, rootConfigRelPath: SanitizedPath.t) => `\nconst parentConfig = require('${rootConfigRelPath}')\n\nmodule.exports = {\n ...parentConfig,\n roots: [\n \"${partitionRelpath}\"\n ]\n}\n`;\n\nexport const getPartitionAbspath = (partitionDir: string) => SanitizedAbsPath.create(partitionDir);\n\nexport const getPartitionConfigAbspath = (partitionDir: string) =>\n\tSanitizedAbsPath.create(join(partitionDir, 'jest.config.js'));\n\nexport const initPartition = (partitionDir: SanitizedAbsPath.t, projectDir: SanitizedAbsPath.t) => {\n\treturn writeFile(\n\t\tgetPartitionConfigAbspath(partitionDir),\n\t\ttoPartitionCfg(\n\t\t\tSanitizedPath.create('./'),\n\t\t\tSanitizedPath.create(relative(partitionDir, getRootConfigAbspath(projectDir))),\n\t\t),\n\t);\n};\n\nexport const ensurePartitionExists = async (\n\tpartitionDir: SanitizedAbsPath.t,\n\tprojectDir: SanitizedAbsPath.t,\n\tforceCreate = false,\n) =>\n\tensureRootConfigExists(projectDir)\n\t\t.then(_ => stat(partitionDir))\n\t\t.then(stats =>\n\t\t\tstats.isFile()\n\t\t\t\t? sendAsyncErr(`${partitionDir} is an invalid partition directory`)\n\t\t\t\t: stats\n\t\t)\n\t\t.catch(_ => mkdir(partitionDir, { recursive: true }))\n\t\t.then(_ => getPartitionConfigAbspath(partitionDir))\n\t\t.then(partitionCfgAbsPath =>\n\t\t\tstat(partitionCfgAbsPath)\n\t\t\t\t.then(_ => forceCreate ? initPartition(partitionDir, projectDir) : undefined)\n\t\t\t\t.catch(_ => initPartition(partitionDir, projectDir))\n\t\t)\n\t\t.then(_ => getPartitionConfigAbspath(partitionDir));\n\nexport const ensureSelectedPartitionExists = (args: CustomRequestArgs, forceCreate = false) =>\n\targs.partition\n\t\t? ensurePartitionExists(\n\t\t\tSanitizedAbsPath.create(join(args.projectDir, args.partition)),\n\t\t\tSanitizedPath.create(args.projectDir),\n\t\t\tforceCreate,\n\t\t)\n\t\t: ensurePartitionExists(\n\t\t\tSanitizedAbsPath.create(\n\t\t\t\tjoin(args.projectDir, getTestsRootDir(args.config)),\n\t\t\t),\n\t\t\tSanitizedPath.create(args.projectDir),\n\t\t\tforceCreate,\n\t\t);\n","// import { normalizeContractName } from '@taqueria/plugin-contract-types/src/generator/contract-name';\nimport { RequestArgs, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { generateContractTypesProcessContractFiles } from '@taqueria/plugin-contract-types/src/cli-process.js';\nimport {\n\tcreateTestingCodeGenerator,\n\tnormalizeContractName,\n} from '@taqueria/plugin-contract-types/src/generator/testing-code-generator.js';\nimport { readFile, stat, writeFile } from 'fs/promises';\nimport { basename, dirname, join } from 'path';\nimport { CustomRequestArgs, ensureSelectedPartitionExists, getPartitionAbspath, getTestsRootDir } from './common';\n\ntype Generator = ReturnType<typeof createTestingCodeGenerator>;\n\ninterface Opts extends CustomRequestArgs {\n\treadonly michelsonArtifact?: string;\n\treadonly partition?: string;\n\treadonly name?: string;\n}\n\nconst getMichelsonAbspath = (parsedArgs: Opts) =>\n\tjoin(parsedArgs.config.artifactsDir ?? 'artifacts', parsedArgs.michelsonArtifact!);\n\nconst ensureMichelsonExists = (parsedArgs: Opts) => {\n\tconst abspath = getMichelsonAbspath(parsedArgs);\n\treturn stat(abspath)\n\t\t.then(() => parsedArgs)\n\t\t.catch(() => Promise.reject(`${abspath} does not exist. Perhaps you need to run \"taq compile\"?`));\n};\n\nconst getPartition = (parsedArgs: Opts) => {\n\tconst partition = parsedArgs.partition ?? getTestsRootDir(parsedArgs.config);\n\treturn getPartitionAbspath(partition);\n};\n\nconst getTypesOutputAbspath = (parsedArgs: Opts) => join(getPartition(parsedArgs), 'types');\n\nconst generateContractTypes = (parsedArgs: Opts) =>\n\tgenerateContractTypesProcessContractFiles({\n\t\tinputTzContractDirectory: parsedArgs.config.artifactsDir ?? 'artifacts',\n\t\tinputFiles: [getMichelsonAbspath(parsedArgs)],\n\t\toutputTypescriptDirectory: getTypesOutputAbspath(parsedArgs),\n\t\tformat: 'tz',\n\t\ttypeAliasMode: 'file',\n\t}).then(_ => parsedArgs);\n\nconst getContractName = (parsedArgs: Opts) =>\n\tparsedArgs.name\n\t\t? parsedArgs.name.trim().replace(/\\.ts$/, '')\n\t\t: basename(parsedArgs.michelsonArtifact!, '.tz');\n\nconst generateTestSuite = (parsedArgs: Opts) => {\n\tconst michelsonAbspath = getMichelsonAbspath(parsedArgs);\n\tconst contractName = getContractName(parsedArgs);\n\tconst partition = getPartition(parsedArgs);\n\tconst jestSuiteAbspath = join(partition, `${contractName}.spec.ts`);\n\n\treturn readFile(michelsonAbspath, { encoding: 'utf-8' })\n\t\t.then(contractSource => ({ contractSource, contractFormat: 'tz' as const }))\n\t\t.then(createTestingCodeGenerator)\n\t\t.then(toJest(contractName))\n\t\t.then(contents => writeFile(jestSuiteAbspath, contents, { encoding: 'utf-8' }))\n\t\t.then(() => jestSuiteAbspath);\n};\n\nconst toJest = (contractName: string) =>\n\t(generator: Generator) => {\n\t\tconst methodCalls = generator.methods.map(m => ({\n\t\t\tname: m.name,\n\t\t\tmethodCall: generator.generateMethodCall({\n\t\t\t\tmethodName: m.name,\n\t\t\t\tformatting: {\n\t\t\t\t\tindent: 2,\n\t\t\t\t},\n\t\t\t}),\n\t\t\tstorageAccess: generator.generateStorageAccess({ storagePath: '' }),\n\t\t}));\n\t\treturn `\nimport { TezosToolkit } from '@taquito/taquito';\nimport { char2Bytes } from '@taquito/utils';\nimport { tas } from './types/type-aliases';\nimport { InMemorySigner, importKey } from '@taquito/signer';\nimport { ${normalizeContractName(contractName)}ContractType as ContractType } from './types/${contractName}.types';\nimport { ${normalizeContractName(contractName)}Code as ContractCode } from './types/${contractName}.code';\n\njest.setTimeout(20000)\n\ndescribe('${contractName}', () => {\n\tconst config = require('../.taq/config.json')\n const Tezos = new TezosToolkit(config.sandbox.local.rpcUrl);\n\tconst key = config.sandbox.local.accounts.bob.secretKey.replace('unencrypted:', '')\n\tTezos.setProvider({\n\t\tsigner: new InMemorySigner(key),\n\t });\n let contract: ContractType = undefined as unknown as ContractType;\n beforeAll(async () => {\n ${generator.generateOrigination({ formatting: { indent: 3 } }).code}\n });\n\n${\n\t\t\tmethodCalls.map(x => `\n it('should call ${x.name}', async () => {\n ${x.storageAccess.getStorageValueFunctionCode}\n const storageValueBefore = await ${x.storageAccess.getStorageValueFunctionName}();\n ${x.methodCall.code}\n const storageValueAfter = await ${x.storageAccess.getStorageValueFunctionName}();\n\n expect(storageValueAfter.toString()).toBe('');\n });\n`).join('')\n\t\t}});\n`;\n\t};\n\nexport default (args: RequestArgs.t) => {\n\tconst parsedArgs = args as Opts;\n\tparsedArgs.michelsonArtifact\n\t\t? ensureMichelsonExists(parsedArgs)\n\t\t\t.then(ensureSelectedPartitionExists)\n\t\t\t.then(() => parsedArgs)\n\t\t\t.then(generateContractTypes)\n\t\t\t.then(generateTestSuite)\n\t\t\t.then((outFile: string) => sendAsyncRes(`Test suite generated: ${outFile}`))\n\t\t\t.catch(sendAsyncErr)\n\t\t: sendAsyncErr(`No michelson artifact provided`);\n};\n","import { sendAsyncRes, sendErr } from '@taqueria/node-sdk';\nimport { RequestArgs } from '@taqueria/node-sdk';\nimport { execa } from 'execa';\nimport { CustomRequestArgs, ensureSelectedPartitionExists, toRequestArgs } from './common';\n\nconst execCmd = (cmd: string, args: string[]) => {\n\tconst child = execa(cmd, args, {\n\t\tshell: true,\n\t\treject: false,\n\t\tenv: { FORCE_COLOR: 'true' },\n\t});\n\n\tchild.stdout?.pipe(process.stdout);\n\tchild.stderr?.pipe(process.stderr);\n\n\treturn child;\n};\nexport default (args: RequestArgs.t) => {\n\tconst parsedArgs = toRequestArgs(args);\n\treturn ensureSelectedPartitionExists(parsedArgs, parsedArgs.init ? true : false)\n\t\t.then(configAbsPath => {\n\t\t\tif (!parsedArgs.init) {\n\t\t\t\tconst retval = parsedArgs.testPattern\n\t\t\t\t\t? execCmd('npx', ['jest', '-c', configAbsPath, '--testPathPattern', parsedArgs.testPattern])\n\t\t\t\t\t: execCmd('npx', ['jest', '-c', configAbsPath]);\n\t\t\t\treturn retval.then(child => {\n\t\t\t\t\tif (child.exitCode === 0) return;\n\t\t\t\t\telse process.exit(child.exitCode);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn sendAsyncRes('Initialized successfully.');\n\t\t});\n};\n"],"mappings":"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","names":["sendAsyncErr","sendAsyncRes","stat","writeFile","join","join","stat","writeFile","sendAsyncRes","sendAsyncErr","sendAsyncRes","sendAsyncRes"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taqueria/plugin-jest",
|
|
3
|
-
"version": "0.39.
|
|
3
|
+
"version": "0.39.20",
|
|
4
4
|
"main": "index.cjs",
|
|
5
5
|
"module": "index.js",
|
|
6
6
|
"source": "index.ts",
|
|
@@ -27,23 +27,23 @@
|
|
|
27
27
|
"directory": "taqueria-plugin-jest"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@taqueria/node-sdk": "^0.39.
|
|
31
|
-
"@taqueria/plugin-contract-types": "^0.39.
|
|
32
|
-
"@taquito/signer": "^
|
|
33
|
-
"@taquito/taquito": "^
|
|
34
|
-
"@taquito/utils": "^
|
|
30
|
+
"@taqueria/node-sdk": "^0.39.20",
|
|
31
|
+
"@taqueria/plugin-contract-types": "^0.39.20",
|
|
32
|
+
"@taquito/signer": "^17.3.1",
|
|
33
|
+
"@taquito/taquito": "^17.3.1",
|
|
34
|
+
"@taquito/utils": "^17.3.1",
|
|
35
35
|
"@types/jest": "^29.5.3",
|
|
36
36
|
"async-retry": "^1.3.3",
|
|
37
|
-
"bignumber.js": "^9.1.
|
|
38
|
-
"execa": "^
|
|
39
|
-
"fast-glob": "^3.
|
|
37
|
+
"bignumber.js": "^9.1.2",
|
|
38
|
+
"execa": "^8.0.1",
|
|
39
|
+
"fast-glob": "^3.3.1",
|
|
40
40
|
"jest-config": "^29.6.3",
|
|
41
41
|
"ts-jest": "^29.1.1"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/async-retry": "^1.4.5",
|
|
45
|
-
"tsup": "
|
|
46
|
-
"typescript": "
|
|
45
|
+
"tsup": "^7.2.0",
|
|
46
|
+
"typescript": "^5.2.2"
|
|
47
47
|
},
|
|
48
48
|
"tsup": {
|
|
49
49
|
"entry": [
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"cjs"
|
|
62
62
|
]
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "aa19980091682210f6e1c2027ee581914b167c03"
|
|
65
65
|
}
|