@taqueria/plugin-jest 0.16.0 → 0.18.0

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.
@@ -77,11 +77,19 @@ const toJest = (contractName: string) =>
77
77
  import { TezosToolkit } from '@taquito/taquito';
78
78
  import { char2Bytes } from '@taquito/utils';
79
79
  import { tas } from './types/type-aliases';
80
+ import { InMemorySigner, importKey } from '@taquito/signer';
80
81
  import { ${normalizeContractName(contractName)}ContractType as ContractType } from './types/${contractName}.types';
81
82
  import { ${normalizeContractName(contractName)}Code as ContractCode } from './types/${contractName}.code';
82
83
 
84
+ jest.setTimeout(20000)
85
+
83
86
  describe('${contractName}', () => {
84
- const Tezos = new TezosToolkit('RPC_URL');
87
+ const config = require('../.taq/config.json')
88
+ const Tezos = new TezosToolkit(config.sandbox.local.rpcUrl);
89
+ const key = config.sandbox.local.accounts.bob.secretKey.replace('unencrypted:', '')
90
+ Tezos.setProvider({
91
+ signer: new InMemorySigner(key),
92
+ });
85
93
  let contract: ContractType = undefined as unknown as ContractType;
86
94
  beforeAll(async () => {
87
95
  ${generator.generateOrigination({ formatting: { indent: 3 } }).code}
@@ -95,10 +103,10 @@ ${
95
103
  ${x.methodCall.code}
96
104
  const storageValueAfter = await ${x.storageAccess.getStorageValueFunctionName}();
97
105
 
98
- expect(storageValueAfter).toBe('');
106
+ expect(storageValueAfter.toString()).toBe('');
99
107
  });
100
108
  `).join('')
101
- });
109
+ }});
102
110
  `;
103
111
  };
104
112
 
package/index.cjs CHANGED
@@ -153,11 +153,19 @@ var toJest = (contractName) => (generator) => {
153
153
  import { TezosToolkit } from '@taquito/taquito';
154
154
  import { char2Bytes } from '@taquito/utils';
155
155
  import { tas } from './types/type-aliases';
156
+ import { InMemorySigner, importKey } from '@taquito/signer';
156
157
  import { ${(0, import_testing_code_generator.normalizeContractName)(contractName)}ContractType as ContractType } from './types/${contractName}.types';
157
158
  import { ${(0, import_testing_code_generator.normalizeContractName)(contractName)}Code as ContractCode } from './types/${contractName}.code';
158
159
 
160
+ jest.setTimeout(20000)
161
+
159
162
  describe('${contractName}', () => {
160
- const Tezos = new TezosToolkit('RPC_URL');
163
+ const config = require('../.taq/config.json')
164
+ const Tezos = new TezosToolkit(config.sandbox.local.rpcUrl);
165
+ const key = config.sandbox.local.accounts.bob.secretKey.replace('unencrypted:', '')
166
+ Tezos.setProvider({
167
+ signer: new InMemorySigner(key),
168
+ });
161
169
  let contract: ContractType = undefined as unknown as ContractType;
162
170
  beforeAll(async () => {
163
171
  ${generator.generateOrigination({ formatting: { indent: 3 } }).code}
@@ -170,9 +178,9 @@ ${methodCalls.map((x) => `
170
178
  ${x.methodCall.code}
171
179
  const storageValueAfter = await ${x.storageAccess.getStorageValueFunctionName}();
172
180
 
173
- expect(storageValueAfter).toBe('');
181
+ expect(storageValueAfter.toString()).toBe('');
174
182
  });
175
- `).join("")});
183
+ `).join("")}});
176
184
  `;
177
185
  };
178
186
  var contractTestTemplate_default = (parsedArgs) => {
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts","common.ts","config.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, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { LoadedConfig, RequestArgs, 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 * as JestConfig from './config';\n\nexport type DefaultConfig = typeof defaults;\n\nexport interface CustomRequestArgs extends RequestArgs.t {\n\tconfig: JestConfig.t;\n\tpartition?: string;\n\tinit?: string;\n\ttestPattern?: string;\n}\n\nexport const toRequestArgs = (args: RequestArgs.t): CustomRequestArgs => {\n\tconst config = {\n\t\tjest: {\n\t\t\ttestsRootDir: 'tests',\n\t\t},\n\t\t...args.config,\n\t};\n\n\treturn {\n\t\t...args,\n\t\tconfig: JestConfig.create(config),\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.t) => {\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\twriteFile(\n\t\tgetPartitionConfigAbspath(partitionDir),\n\t\ttoPartitionCfg(\n\t\t\tSanitizedPath.create(relative(partitionDir, partitionDir)),\n\t\t\tSanitizedPath.create(relative(partitionDir, getRootConfigAbspath(projectDir))),\n\t\t),\n\t);\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\targs.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\targs.projectDir,\n\t\t\tforceCreate,\n\t\t);\n","import { LoadedConfig } from '@taqueria/node-sdk';\nimport { z } from 'zod';\n\nconst jestType: unique symbol = Symbol('jestConfig');\n\nconst rawSchema = LoadedConfig.rawSchema.extend({\n\tjest: z.preprocess(\n\t\tinput => {\n\t\t\tconst overrides = typeof input === 'object'\n\t\t\t\t? input\n\t\t\t\t: {};\n\n\t\t\treturn {\n\t\t\t\t'testsRootDir': 'tests',\n\t\t\t\t...overrides,\n\t\t\t};\n\t\t},\n\t\tz.object({\n\t\t\t'testsRootDir': z.preprocess(\n\t\t\t\tval => val ?? 'tests',\n\t\t\t\tz.string().min(1).describe('testsRootDir'),\n\t\t\t),\n\t\t}),\n\t),\n});\n\nconst internalSchema = Object.assign({}, rawSchema);\n\ntype RawInput = z.infer<typeof rawSchema>;\n\ntype Input = z.infer<typeof internalSchema>;\n\nexport interface JestRawConfig extends LoadedConfig.t {\n\t[jestType]: void;\n}\n\nexport type JestConfig = Input & JestRawConfig;\n\nexport type t = JestConfig;\n\nexport const schema = internalSchema.transform(val => val as JestConfig);\n\nexport const create = (input: RawInput | unknown) => {\n\ttry {\n\t\tconst retval = schema.parse(input);\n\t\treturn retval;\n\t} catch {\n\t\tthrow `The .taq/config.json file is invalid.`;\n\t}\n};\n","// import { normalizeContractName } from '@taqueria/plugin-contract-types/src/generator/contract-name';\nimport { 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) => join(parsedArgs.config.artifactsDir, 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,\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 { ${normalizeContractName(contractName)}ContractType as ContractType } from './types/${contractName}.types';\nimport { ${normalizeContractName(contractName)}Code as ContractCode } from './types/${contractName}.code';\n\ndescribe('${contractName}', () => {\n const Tezos = new TezosToolkit('RPC_URL');\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).toBe('');\n });\n`).join('')\n\t\t});\n`;\n\t};\n\nexport default (parsedArgs: Opts) => {\n\treturn ensureMichelsonExists(parsedArgs)\n\t\t.then(ensureSelectedPartitionExists)\n\t\t.then(() => parsedArgs)\n\t\t.then(generateContractTypes)\n\t\t.then(generateTestSuite)\n\t\t.then(outFile => sendAsyncRes(`Test suite generated: ${outFile}`));\n};\n","import { sendAsyncRes } from '@taqueria/node-sdk';\nimport { RequestArgs } from '@taqueria/node-sdk/types';\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 async (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_node_sdk","import_promises","import_path","import_node_sdk"]}
1
+ {"version":3,"sources":["index.ts","common.ts","config.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, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { LoadedConfig, RequestArgs, 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 * as JestConfig from './config';\n\nexport type DefaultConfig = typeof defaults;\n\nexport interface CustomRequestArgs extends RequestArgs.t {\n\tconfig: JestConfig.t;\n\tpartition?: string;\n\tinit?: string;\n\ttestPattern?: string;\n}\n\nexport const toRequestArgs = (args: RequestArgs.t): CustomRequestArgs => {\n\tconst config = {\n\t\tjest: {\n\t\t\ttestsRootDir: 'tests',\n\t\t},\n\t\t...args.config,\n\t};\n\n\treturn {\n\t\t...args,\n\t\tconfig: JestConfig.create(config),\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.t) => {\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\twriteFile(\n\t\tgetPartitionConfigAbspath(partitionDir),\n\t\ttoPartitionCfg(\n\t\t\tSanitizedPath.create(relative(partitionDir, partitionDir)),\n\t\t\tSanitizedPath.create(relative(partitionDir, getRootConfigAbspath(projectDir))),\n\t\t),\n\t);\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\targs.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\targs.projectDir,\n\t\t\tforceCreate,\n\t\t);\n","import { LoadedConfig } from '@taqueria/node-sdk';\nimport { z } from 'zod';\n\nconst jestType: unique symbol = Symbol('jestConfig');\n\nconst rawSchema = LoadedConfig.rawSchema.extend({\n\tjest: z.preprocess(\n\t\tinput => {\n\t\t\tconst overrides = typeof input === 'object'\n\t\t\t\t? input\n\t\t\t\t: {};\n\n\t\t\treturn {\n\t\t\t\t'testsRootDir': 'tests',\n\t\t\t\t...overrides,\n\t\t\t};\n\t\t},\n\t\tz.object({\n\t\t\t'testsRootDir': z.preprocess(\n\t\t\t\tval => val ?? 'tests',\n\t\t\t\tz.string().min(1).describe('testsRootDir'),\n\t\t\t),\n\t\t}),\n\t),\n});\n\nconst internalSchema = Object.assign({}, rawSchema);\n\ntype RawInput = z.infer<typeof rawSchema>;\n\ntype Input = z.infer<typeof internalSchema>;\n\nexport interface JestRawConfig extends LoadedConfig.t {\n\t[jestType]: void;\n}\n\nexport type JestConfig = Input & JestRawConfig;\n\nexport type t = JestConfig;\n\nexport const schema = internalSchema.transform(val => val as JestConfig);\n\nexport const create = (input: RawInput | unknown) => {\n\ttry {\n\t\tconst retval = schema.parse(input);\n\t\treturn retval;\n\t} catch {\n\t\tthrow `The .taq/config.json file is invalid.`;\n\t}\n};\n","// import { normalizeContractName } from '@taqueria/plugin-contract-types/src/generator/contract-name';\nimport { 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) => join(parsedArgs.config.artifactsDir, 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,\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 (parsedArgs: Opts) => {\n\treturn ensureMichelsonExists(parsedArgs)\n\t\t.then(ensureSelectedPartitionExists)\n\t\t.then(() => parsedArgs)\n\t\t.then(generateContractTypes)\n\t\t.then(generateTestSuite)\n\t\t.then(outFile => sendAsyncRes(`Test suite generated: ${outFile}`));\n};\n","import { sendAsyncRes } from '@taqueria/node-sdk';\nimport { RequestArgs } from '@taqueria/node-sdk/types';\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 async (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":";;;AAAA,IAAAA,mBAA8D;;;ACA9D,IAAAC,mBAAiD;AACjD,mBAA2E;AAC3E,sBAAuC;AACvC,yBAAyB;AACzB,kBAA+B;;;ACJ/B,sBAA6B;AAC7B,iBAAkB;AAElB,IAAM,WAA0B,OAAO,YAAY;AAEnD,IAAM,YAAY,6BAAa,UAAU,OAAO;AAAA,EAC/C,MAAM,aAAE;AAAA,IACP,WAAS;AACR,YAAM,YAAY,OAAO,UAAU,WAChC,QACA,CAAC;AAEJ,aAAO;AAAA,QACN,gBAAgB;AAAA,QAChB,GAAG;AAAA,MACJ;AAAA,IACD;AAAA,IACA,aAAE,OAAO;AAAA,MACR,gBAAgB,aAAE;AAAA,QACjB,SAAO,OAAO;AAAA,QACd,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,cAAc;AAAA,MAC1C;AAAA,IACD,CAAC;AAAA,EACF;AACD,CAAC;AAED,IAAM,iBAAiB,OAAO,OAAO,CAAC,GAAG,SAAS;AAc3C,IAAM,SAAS,eAAe,UAAU,SAAO,GAAiB;AAEhE,IAAM,SAAS,CAAC,UAA8B;AACpD,MAAI;AACH,UAAM,SAAS,OAAO,MAAM,KAAK;AACjC,WAAO;AAAA,EACR,QAAE;AACD,UAAM;AAAA,EACP;AACD;;;ADjCO,IAAM,gBAAgB,CAAC,SAA2C;AACxE,QAAM,SAAS;AAAA,IACd,MAAM;AAAA,MACL,cAAc;AAAA,IACf;AAAA,IACA,GAAG,KAAK;AAAA,EACT;AAEA,SAAO;AAAA,IACN,GAAG;AAAA,IACH,QAAmB,OAAO,MAAM;AAAA,EACjC;AACD;AAEO,IAAM,mBAAmB,CAAC,kBAAiC;AACjE,QAAM,WAAW,EAAE,GAAG,6BAAU,QAAQ,WAAW,iBAAiB,OAAO;AAC3E,SACC;AAAA,mBACiB,KAAK,UAAU,UAAU,MAAM,CAAC;AAAA;AAGnD;AAEO,IAAM,yBAAyB,CAAC,eAAmC;AACzE,QAAM,iBAAiB,qBAAqB,UAAU;AACtD,aAAO,sBAAK,cAAc,EACxB,MAAM,WAAK,2BAAU,gBAAgB,iBAAiB,2BAAQ,CAAC,CAAC,EAChE,KAAK,OAAK,cAAc;AAC3B;AAEO,IAAM,uBAAuB,CAAC,eACpC,8BAAiB;AAAA,MAChB,kBAAK,YAAY,QAAQ,gBAAgB;AAC1C;AAEM,IAAM,kBAAkB,CAAC,WAAyB;AACxD,SAAO,OAAO,KAAK;AACpB;AAEO,IAAM,iBAAiB,CAAC,kBAAmC,sBAAuC;AAAA,gCACzE;AAAA;AAAA;AAAA;AAAA;AAAA,WAKrB;AAAA;AAAA;AAAA;AAKJ,IAAM,sBAAsB,CAAC,iBAAyB,8BAAiB,OAAO,YAAY;AAE1F,IAAM,4BAA4B,CAAC,iBACzC,8BAAiB,WAAO,kBAAK,cAAc,gBAAgB,CAAC;AAEtD,IAAM,gBAAgB,CAAC,cAAkC,mBAC/D;AAAA,EACC,0BAA0B,YAAY;AAAA,EACtC;AAAA,IACC,2BAAc,WAAO,sBAAS,cAAc,YAAY,CAAC;AAAA,IACzD,2BAAc,WAAO,sBAAS,cAAc,qBAAqB,UAAU,CAAC,CAAC;AAAA,EAC9E;AACD;AAEM,IAAM,wBAAwB,OACpC,cACA,YACA,cAAc,UAEd,uBAAuB,UAAU,EAC/B,KAAK,WAAK,sBAAK,YAAY,CAAC,EAC5B;AAAA,EAAK,WACL,MAAM,OAAO,QACV,+BAAa,GAAG,gDAAgD,IAChE;AACJ,EACC,MAAM,WAAK,uBAAM,cAAc,EAAE,WAAW,KAAK,CAAC,CAAC,EACnD,KAAK,OAAK,0BAA0B,YAAY,CAAC,EACjD;AAAA,EAAK,6BACL,sBAAK,mBAAmB,EACtB,KAAK,OAAK,cAAc,cAAc,cAAc,UAAU,IAAI,MAAS,EAC3E,MAAM,OAAK,cAAc,cAAc,UAAU,CAAC;AACrD,EACC,KAAK,OAAK,0BAA0B,YAAY,CAAC;AAE7C,IAAM,gCAAgC,CAAC,MAAyB,cAAc,UACpF,KAAK,YACF;AAAA,EACD,8BAAiB,WAAO,kBAAK,KAAK,YAAY,KAAK,SAAS,CAAC;AAAA,EAC7D,KAAK;AAAA,EACL;AACD,IACE;AAAA,EACD,8BAAiB;AAAA,QAChB,kBAAK,KAAK,YAAY,gBAAgB,KAAK,MAAM,CAAC;AAAA,EACnD;AAAA,EACA,KAAK;AAAA,EACL;AACD;;;AEjHF,IAAAC,mBAA6B;AAC7B,yBAA0D;AAC1D,oCAGO;AACP,IAAAC,mBAA0C;AAC1C,IAAAC,eAAwC;AAWxC,IAAM,sBAAsB,CAAC,mBAAqB,mBAAK,WAAW,OAAO,cAAc,WAAW,iBAAiB;AAEnH,IAAM,wBAAwB,CAAC,eAAqB;AACnD,QAAM,UAAU,oBAAoB,UAAU;AAC9C,aAAO,uBAAK,OAAO,EACjB,KAAK,MAAM,UAAU,EACrB,MAAM,MAAM,QAAQ,OAAO,GAAG,gEAAgE,CAAC;AAClG;AAEA,IAAM,eAAe,CAAC,eAAqB;AAC1C,QAAM,YAAY,WAAW,aAAa,gBAAgB,WAAW,MAAM;AAC3E,SAAO,oBAAoB,SAAS;AACrC;AAEA,IAAM,wBAAwB,CAAC,mBAAqB,mBAAK,aAAa,UAAU,GAAG,OAAO;AAE1F,IAAM,wBAAwB,CAAC,mBAC9B,8DAA0C;AAAA,EACzC,0BAA0B,WAAW,OAAO;AAAA,EAC5C,YAAY,CAAC,oBAAoB,UAAU,CAAC;AAAA,EAC5C,2BAA2B,sBAAsB,UAAU;AAAA,EAC3D,QAAQ;AAAA,EACR,eAAe;AAChB,CAAC,EAAE,KAAK,OAAK,UAAU;AAExB,IAAM,kBAAkB,CAAC,eACxB,WAAW,OACR,WAAW,KAAK,KAAK,EAAE,QAAQ,SAAS,EAAE,QAC1C,uBAAS,WAAW,mBAAmB,KAAK;AAEhD,IAAM,oBAAoB,CAAC,eAAqB;AAC/C,QAAM,mBAAmB,oBAAoB,UAAU;AACvD,QAAM,eAAe,gBAAgB,UAAU;AAC/C,QAAM,YAAY,aAAa,UAAU;AACzC,QAAM,uBAAmB,mBAAK,WAAW,GAAG,sBAAsB;AAElE,aAAO,2BAAS,kBAAkB,EAAE,UAAU,QAAQ,CAAC,EACrD,KAAK,qBAAmB,EAAE,gBAAgB,gBAAgB,KAAc,EAAE,EAC1E,KAAK,wDAA0B,EAC/B,KAAK,OAAO,YAAY,CAAC,EACzB,KAAK,kBAAY,4BAAU,kBAAkB,UAAU,EAAE,UAAU,QAAQ,CAAC,CAAC,EAC7E,KAAK,MAAM,gBAAgB;AAC9B;AAEA,IAAM,SAAS,CAAC,iBACf,CAAC,cAAyB;AACzB,QAAM,cAAc,UAAU,QAAQ,IAAI,QAAM;AAAA,IAC/C,MAAM,EAAE;AAAA,IACR,YAAY,UAAU,mBAAmB;AAAA,MACxC,YAAY,EAAE;AAAA,MACd,YAAY;AAAA,QACX,QAAQ;AAAA,MACT;AAAA,IACD,CAAC;AAAA,IACD,eAAe,UAAU,sBAAsB,EAAE,aAAa,GAAG,CAAC;AAAA,EACnE,EAAE;AACF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,eAKE,qDAAsB,YAAY,iDAAiD;AAAA,eACnF,qDAAsB,YAAY,yCAAyC;AAAA;AAAA;AAAA;AAAA,YAI1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASF,UAAU,oBAAoB,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE;AAAA;AAAA;AAAA,EAIpE,YAAY,IAAI,OAAK;AAAA,sBACF,EAAE;AAAA,UACd,EAAE,cAAc;AAAA,2CACiB,EAAE,cAAc;AAAA,UACjD,EAAE,WAAW;AAAA,0CACmB,EAAE,cAAc;AAAA;AAAA;AAAA;AAAA,CAIzD,EAAE,KAAK,EAAE;AAAA;AAGT;AAED,IAAO,+BAAQ,CAAC,eAAqB;AACpC,SAAO,sBAAsB,UAAU,EACrC,KAAK,6BAA6B,EAClC,KAAK,MAAM,UAAU,EACrB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,iBAAW,+BAAa,yBAAyB,SAAS,CAAC;AACnE;;;ACvHA,IAAAC,mBAA6B;AAE7B,mBAAsB;AAGtB,IAAM,UAAU,CAAC,KAAa,SAAmB;AALjD;AAMC,QAAM,YAAQ,oBAAM,KAAK,MAAM;AAAA,IAC9B,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK,EAAE,aAAa,OAAO;AAAA,EAC5B,CAAC;AAED,cAAM,WAAN,mBAAc,KAAK,QAAQ;AAC3B,cAAM,WAAN,mBAAc,KAAK,QAAQ;AAE3B,SAAO;AACR;AACA,IAAO,gBAAQ,OAAO,SAAwB;AAC7C,QAAM,aAAa,cAAc,IAAI;AACrC,SAAO,8BAA8B,YAAY,WAAW,OAAO,OAAO,KAAK,EAC7E,KAAK,mBAAiB;AACtB,QAAI,CAAC,WAAW,MAAM;AACrB,YAAM,SAAS,WAAW,cACvB,QAAQ,OAAO,CAAC,QAAQ,MAAM,eAAe,qBAAqB,WAAW,WAAW,CAAC,IACzF,QAAQ,OAAO,CAAC,QAAQ,MAAM,aAAa,CAAC;AAC/C,aAAO,OAAO,KAAK,WAAS;AAC3B,YAAI,MAAM,aAAa;AAAG;AAAA;AACrB,kBAAQ,KAAK,MAAM,QAAQ;AAAA,MACjC,CAAC;AAAA,IACF;AAEA,eAAO,+BAAa,2BAA2B;AAAA,EAChD,CAAC;AACH;;;AJ5BA,wBAAO,OAA0B,kBAAgB;AAAA,EAChD,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,OAAO;AAAA,IACN,sBAAK,OAAO;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,MACb,SAAS,CAAC,MAAM;AAAA,MAChB,SAAS;AAAA,MACT,aAAa;AAAA,QACZ,+BAAc,OAAO;AAAA,UACpB,aAAa;AAAA,UACb,aAAa;AAAA,UACb,cAAc;AAAA,UACd,MAAM;AAAA,QACP,CAAC;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACR,wBAAO,OAAO;AAAA,UACb,MAAM;AAAA,UACN,WAAW;AAAA,UACX,aAAa;AAAA,UACb,SAAS;AAAA,QACV,CAAC;AAAA,QACD,wBAAO,OAAO;AAAA,UACb,MAAM;AAAA,UACN,WAAW;AAAA,UACX,aAAa;AAAA,QACd,CAAC;AAAA,MACF;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACV,0BAAS,OAAO;AAAA,MACf,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,QACZ,+BAAc,OAAO;AAAA,UACpB,aAAa;AAAA,UACb,aAAa;AAAA,UACb,UAAU;AAAA,UACV,MAAM;AAAA,QACP,CAAC;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACR,wBAAO,OAAO;AAAA,UACb,MAAM;AAAA,UACN,aAAa;AAAA,UACb,MAAM;AAAA,UACN,cAAc,cAAc,WAAW,EAAE,OAAO,KAAK;AAAA,QACtD,CAAC;AAAA,MACF;AAAA,MACA,aAAa;AAAA,MACb,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAAA,EACA;AACD,IAAI,QAAQ,IAAI;","names":["import_node_sdk","import_node_sdk","import_node_sdk","import_promises","import_path","import_node_sdk"]}
package/index.js CHANGED
@@ -154,11 +154,19 @@ var toJest = (contractName) => (generator) => {
154
154
  import { TezosToolkit } from '@taquito/taquito';
155
155
  import { char2Bytes } from '@taquito/utils';
156
156
  import { tas } from './types/type-aliases';
157
+ import { InMemorySigner, importKey } from '@taquito/signer';
157
158
  import { ${normalizeContractName(contractName)}ContractType as ContractType } from './types/${contractName}.types';
158
159
  import { ${normalizeContractName(contractName)}Code as ContractCode } from './types/${contractName}.code';
159
160
 
161
+ jest.setTimeout(20000)
162
+
160
163
  describe('${contractName}', () => {
161
- const Tezos = new TezosToolkit('RPC_URL');
164
+ const config = require('../.taq/config.json')
165
+ const Tezos = new TezosToolkit(config.sandbox.local.rpcUrl);
166
+ const key = config.sandbox.local.accounts.bob.secretKey.replace('unencrypted:', '')
167
+ Tezos.setProvider({
168
+ signer: new InMemorySigner(key),
169
+ });
162
170
  let contract: ContractType = undefined as unknown as ContractType;
163
171
  beforeAll(async () => {
164
172
  ${generator.generateOrigination({ formatting: { indent: 3 } }).code}
@@ -171,9 +179,9 @@ ${methodCalls.map((x) => `
171
179
  ${x.methodCall.code}
172
180
  const storageValueAfter = await ${x.storageAccess.getStorageValueFunctionName}();
173
181
 
174
- expect(storageValueAfter).toBe('');
182
+ expect(storageValueAfter.toString()).toBe('');
175
183
  });
176
- `).join("")});
184
+ `).join("")}});
177
185
  `;
178
186
  };
179
187
  var contractTestTemplate_default = (parsedArgs) => {
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts","common.ts","config.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, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { LoadedConfig, RequestArgs, 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 * as JestConfig from './config';\n\nexport type DefaultConfig = typeof defaults;\n\nexport interface CustomRequestArgs extends RequestArgs.t {\n\tconfig: JestConfig.t;\n\tpartition?: string;\n\tinit?: string;\n\ttestPattern?: string;\n}\n\nexport const toRequestArgs = (args: RequestArgs.t): CustomRequestArgs => {\n\tconst config = {\n\t\tjest: {\n\t\t\ttestsRootDir: 'tests',\n\t\t},\n\t\t...args.config,\n\t};\n\n\treturn {\n\t\t...args,\n\t\tconfig: JestConfig.create(config),\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.t) => {\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\twriteFile(\n\t\tgetPartitionConfigAbspath(partitionDir),\n\t\ttoPartitionCfg(\n\t\t\tSanitizedPath.create(relative(partitionDir, partitionDir)),\n\t\t\tSanitizedPath.create(relative(partitionDir, getRootConfigAbspath(projectDir))),\n\t\t),\n\t);\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\targs.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\targs.projectDir,\n\t\t\tforceCreate,\n\t\t);\n","import { LoadedConfig } from '@taqueria/node-sdk';\nimport { z } from 'zod';\n\nconst jestType: unique symbol = Symbol('jestConfig');\n\nconst rawSchema = LoadedConfig.rawSchema.extend({\n\tjest: z.preprocess(\n\t\tinput => {\n\t\t\tconst overrides = typeof input === 'object'\n\t\t\t\t? input\n\t\t\t\t: {};\n\n\t\t\treturn {\n\t\t\t\t'testsRootDir': 'tests',\n\t\t\t\t...overrides,\n\t\t\t};\n\t\t},\n\t\tz.object({\n\t\t\t'testsRootDir': z.preprocess(\n\t\t\t\tval => val ?? 'tests',\n\t\t\t\tz.string().min(1).describe('testsRootDir'),\n\t\t\t),\n\t\t}),\n\t),\n});\n\nconst internalSchema = Object.assign({}, rawSchema);\n\ntype RawInput = z.infer<typeof rawSchema>;\n\ntype Input = z.infer<typeof internalSchema>;\n\nexport interface JestRawConfig extends LoadedConfig.t {\n\t[jestType]: void;\n}\n\nexport type JestConfig = Input & JestRawConfig;\n\nexport type t = JestConfig;\n\nexport const schema = internalSchema.transform(val => val as JestConfig);\n\nexport const create = (input: RawInput | unknown) => {\n\ttry {\n\t\tconst retval = schema.parse(input);\n\t\treturn retval;\n\t} catch {\n\t\tthrow `The .taq/config.json file is invalid.`;\n\t}\n};\n","// import { normalizeContractName } from '@taqueria/plugin-contract-types/src/generator/contract-name';\nimport { 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) => join(parsedArgs.config.artifactsDir, 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,\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 { ${normalizeContractName(contractName)}ContractType as ContractType } from './types/${contractName}.types';\nimport { ${normalizeContractName(contractName)}Code as ContractCode } from './types/${contractName}.code';\n\ndescribe('${contractName}', () => {\n const Tezos = new TezosToolkit('RPC_URL');\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).toBe('');\n });\n`).join('')\n\t\t});\n`;\n\t};\n\nexport default (parsedArgs: Opts) => {\n\treturn ensureMichelsonExists(parsedArgs)\n\t\t.then(ensureSelectedPartitionExists)\n\t\t.then(() => parsedArgs)\n\t\t.then(generateContractTypes)\n\t\t.then(generateTestSuite)\n\t\t.then(outFile => sendAsyncRes(`Test suite generated: ${outFile}`));\n};\n","import { sendAsyncRes } from '@taqueria/node-sdk';\nimport { RequestArgs } from '@taqueria/node-sdk/types';\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 async (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":["sendAsyncRes","stat","writeFile","join","join","stat","writeFile","sendAsyncRes","sendAsyncRes","sendAsyncRes"]}
1
+ {"version":3,"sources":["index.ts","common.ts","config.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, sendAsyncErr, sendAsyncRes } from '@taqueria/node-sdk';\nimport { LoadedConfig, RequestArgs, 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 * as JestConfig from './config';\n\nexport type DefaultConfig = typeof defaults;\n\nexport interface CustomRequestArgs extends RequestArgs.t {\n\tconfig: JestConfig.t;\n\tpartition?: string;\n\tinit?: string;\n\ttestPattern?: string;\n}\n\nexport const toRequestArgs = (args: RequestArgs.t): CustomRequestArgs => {\n\tconst config = {\n\t\tjest: {\n\t\t\ttestsRootDir: 'tests',\n\t\t},\n\t\t...args.config,\n\t};\n\n\treturn {\n\t\t...args,\n\t\tconfig: JestConfig.create(config),\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.t) => {\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\twriteFile(\n\t\tgetPartitionConfigAbspath(partitionDir),\n\t\ttoPartitionCfg(\n\t\t\tSanitizedPath.create(relative(partitionDir, partitionDir)),\n\t\t\tSanitizedPath.create(relative(partitionDir, getRootConfigAbspath(projectDir))),\n\t\t),\n\t);\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\targs.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\targs.projectDir,\n\t\t\tforceCreate,\n\t\t);\n","import { LoadedConfig } from '@taqueria/node-sdk';\nimport { z } from 'zod';\n\nconst jestType: unique symbol = Symbol('jestConfig');\n\nconst rawSchema = LoadedConfig.rawSchema.extend({\n\tjest: z.preprocess(\n\t\tinput => {\n\t\t\tconst overrides = typeof input === 'object'\n\t\t\t\t? input\n\t\t\t\t: {};\n\n\t\t\treturn {\n\t\t\t\t'testsRootDir': 'tests',\n\t\t\t\t...overrides,\n\t\t\t};\n\t\t},\n\t\tz.object({\n\t\t\t'testsRootDir': z.preprocess(\n\t\t\t\tval => val ?? 'tests',\n\t\t\t\tz.string().min(1).describe('testsRootDir'),\n\t\t\t),\n\t\t}),\n\t),\n});\n\nconst internalSchema = Object.assign({}, rawSchema);\n\ntype RawInput = z.infer<typeof rawSchema>;\n\ntype Input = z.infer<typeof internalSchema>;\n\nexport interface JestRawConfig extends LoadedConfig.t {\n\t[jestType]: void;\n}\n\nexport type JestConfig = Input & JestRawConfig;\n\nexport type t = JestConfig;\n\nexport const schema = internalSchema.transform(val => val as JestConfig);\n\nexport const create = (input: RawInput | unknown) => {\n\ttry {\n\t\tconst retval = schema.parse(input);\n\t\treturn retval;\n\t} catch {\n\t\tthrow `The .taq/config.json file is invalid.`;\n\t}\n};\n","// import { normalizeContractName } from '@taqueria/plugin-contract-types/src/generator/contract-name';\nimport { 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) => join(parsedArgs.config.artifactsDir, 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,\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 (parsedArgs: Opts) => {\n\treturn ensureMichelsonExists(parsedArgs)\n\t\t.then(ensureSelectedPartitionExists)\n\t\t.then(() => parsedArgs)\n\t\t.then(generateContractTypes)\n\t\t.then(generateTestSuite)\n\t\t.then(outFile => sendAsyncRes(`Test suite generated: ${outFile}`));\n};\n","import { sendAsyncRes } from '@taqueria/node-sdk';\nimport { RequestArgs } from '@taqueria/node-sdk/types';\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 async (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":["sendAsyncRes","stat","writeFile","join","join","stat","writeFile","sendAsyncRes","sendAsyncRes","sendAsyncRes"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taqueria/plugin-jest",
3
- "version": "0.16.0",
3
+ "version": "0.18.0",
4
4
  "main": "index.cjs",
5
5
  "module": "index.js",
6
6
  "source": "index.ts",
@@ -27,9 +27,14 @@
27
27
  "directory": "taqueria-plugin-jest"
28
28
  },
29
29
  "dependencies": {
30
- "@taqueria/node-sdk": "^0.16.0",
30
+ "@taqueria/node-sdk": "^0.18.0",
31
31
  "@taqueria/plugin-contract-types": "^0.14.4",
32
+ "@taquito/signer": "^13.0.1",
33
+ "@taquito/taquito": "^13.0.1",
34
+ "@taquito/utils": "^13.0.1",
35
+ "@types/jest": "^27.5.2",
32
36
  "async-retry": "^1.3.3",
37
+ "bignumber.js": "^9.1.0",
33
38
  "execa": "^6.1.0",
34
39
  "fast-glob": "^3.2.7",
35
40
  "jest-config": "^28.1.0",
@@ -37,7 +42,6 @@
37
42
  },
38
43
  "devDependencies": {
39
44
  "@types/async-retry": "^1.3.3",
40
- "@types/jest": "^27.5.1",
41
45
  "tsup": "^6.1.3",
42
46
  "typescript": "4.7.2"
43
47
  },