{"version":3,"file":"yarn.test.cjs","names":["Yarn","utils"],"sources":["../../../../src/tests/packagers/yarn.test.ts"],"sourcesContent":["import { Yarn } from '../../packagers/yarn';\nimport type { YarnDeps } from '../../packagers/yarn';\nimport type { DependenciesResult } from '../../types';\n\nimport * as utils from '../../utils';\n\njest.mock('process');\ndescribe('Yarn Packager', () => {\n  const yarn = new Yarn({});\n  const path = './';\n\n  let spawnSpy: jest.SpyInstance;\n\n  beforeEach(() => {\n    spawnSpy = jest.spyOn(utils, 'spawnProcess');\n  });\n\n  afterEach(() => {\n    jest.resetAllMocks();\n    jest.restoreAllMocks();\n  });\n\n  it('should call spawnProcess with the correct arguments for listing yarn dependencies', async () => {\n    spawnSpy.mockResolvedValueOnce({\n      stderr: '',\n      stdout: '{\"type\":\"tree\",\"data\":{\"type\":\"list\",\"trees\":[]}}',\n    });\n\n    await yarn.getProdDependencies(path);\n\n    expect(spawnSpy).toHaveBeenCalledTimes(1);\n    expect(spawnSpy).toHaveBeenCalledWith('yarn', ['list', '--json', '--production'], { cwd: './' });\n  });\n\n  it('should call spawnProcess with the correct arguments for listing yarn dependencies when depth is provided', async () => {\n    spawnSpy.mockResolvedValueOnce({\n      stderr: '',\n      stdout: '{\"type\":\"tree\",\"data\":{\"type\":\"list\",\"trees\":[]}}',\n    });\n\n    await yarn.getProdDependencies(path, 2);\n\n    expect(spawnSpy).toHaveBeenCalledTimes(1);\n    expect(spawnSpy).toHaveBeenCalledWith('yarn', ['list', '--depth=2', '--json', '--production'], {\n      cwd: './',\n    });\n  });\n\n  it('should create a dependency tree from yarn output', async () => {\n    const yarnOutput: YarnDeps = {\n      type: 'tree',\n      data: {\n        type: 'list',\n        trees: [\n          {\n            name: 'samchungy-a@2.0.0',\n            children: [\n              {\n                name: 'samchungy-dep-a@1.0.0',\n                color: 'dim',\n                shadow: true,\n              },\n            ],\n            hint: null,\n            color: 'bold',\n            depth: 0,\n          },\n          {\n            name: 'samchungy-b@2.0.0',\n            children: [\n              {\n                name: 'samchungy-dep-a@2.0.0',\n                color: 'dim',\n                shadow: true,\n              },\n              {\n                name: 'samchungy-dep-a@2.0.0',\n                children: [],\n                hint: null,\n                color: 'bold',\n                depth: 0,\n              },\n            ],\n            hint: null,\n            color: 'bold',\n            depth: 0,\n          },\n          {\n            name: 'samchungy-dep-a@1.0.0',\n            children: [],\n            hint: null,\n            color: null,\n            depth: 0,\n          },\n        ],\n      },\n    };\n    const expectedResult: DependenciesResult = {\n      dependencies: {\n        'samchungy-a': {\n          dependencies: {\n            'samchungy-dep-a': {\n              isRootDep: true,\n              version: '1.0.0',\n            },\n          },\n          version: '2.0.0',\n        },\n        'samchungy-b': {\n          dependencies: {\n            'samchungy-dep-a': {\n              version: '2.0.0',\n            },\n          },\n          version: '2.0.0',\n        },\n        'samchungy-dep-a': {\n          version: '1.0.0',\n        },\n      },\n    };\n\n    spawnSpy.mockResolvedValueOnce({\n      stderr: '',\n      stdout: JSON.stringify(yarnOutput),\n    });\n\n    const result = await yarn.getProdDependencies(path, 2);\n\n    expect(result).toStrictEqual(expectedResult);\n  });\n\n  it('should create a dependency tree which handles deduping from yarn output', async () => {\n    const yarnOutput: YarnDeps = {\n      type: 'tree',\n      data: {\n        type: 'list',\n        trees: [\n          {\n            name: 'samchungy-a@3.0.0',\n            children: [{ name: 'samchungy-dep-b@3.0.0', color: 'dim', shadow: true }],\n            hint: null,\n            color: 'bold',\n            depth: 0,\n          },\n          {\n            name: 'samchungy-b@5.0.0',\n            children: [{ name: 'samchungy-dep-b@3.0.0', color: 'dim', shadow: true }],\n            hint: null,\n            color: 'bold',\n            depth: 0,\n          },\n          {\n            name: 'samchungy-dep-b@3.0.0',\n            children: [\n              { name: 'samchungy-dep-c@^1.0.0', color: 'dim', shadow: true },\n              { name: 'samchungy-dep-d@^1.0.0', color: 'dim', shadow: true },\n            ],\n            hint: null,\n            color: null,\n            depth: 0,\n          },\n          {\n            name: 'samchungy-dep-c@1.0.0',\n            children: [{ name: 'samchungy-dep-e@^1.0.0', color: 'dim', shadow: true }],\n            hint: null,\n            color: null,\n            depth: 0,\n          },\n          {\n            name: 'samchungy-dep-d@1.0.0',\n            children: [{ name: 'samchungy-dep-e@^1.0.0', color: 'dim', shadow: true }],\n            hint: null,\n            color: null,\n            depth: 0,\n          },\n          {\n            name: 'samchungy-dep-e@1.0.0',\n            children: [],\n            hint: null,\n            color: null,\n            depth: 0,\n          },\n        ],\n      },\n    };\n\n    const expectedResult: DependenciesResult = {\n      dependencies: {\n        'samchungy-a': {\n          version: '3.0.0',\n          dependencies: {\n            'samchungy-dep-b': { version: '3.0.0', isRootDep: true },\n          },\n        },\n        'samchungy-b': {\n          version: '5.0.0',\n          dependencies: {\n            'samchungy-dep-b': { version: '3.0.0', isRootDep: true },\n          },\n        },\n        'samchungy-dep-b': {\n          version: '3.0.0',\n          dependencies: {\n            'samchungy-dep-c': { version: '^1.0.0', isRootDep: true },\n            'samchungy-dep-d': { version: '^1.0.0', isRootDep: true },\n          },\n        },\n        'samchungy-dep-c': {\n          version: '1.0.0',\n          dependencies: {\n            'samchungy-dep-e': { version: '^1.0.0', isRootDep: true },\n          },\n        },\n        'samchungy-dep-d': {\n          version: '1.0.0',\n          dependencies: {\n            'samchungy-dep-e': { version: '^1.0.0', isRootDep: true },\n          },\n        },\n        'samchungy-dep-e': { version: '1.0.0' },\n      },\n    };\n\n    spawnSpy.mockResolvedValueOnce({\n      stderr: '',\n      stdout: JSON.stringify(yarnOutput),\n    });\n\n    const result = await yarn.getProdDependencies(path, 2);\n\n    expect(result).toStrictEqual(expectedResult);\n  });\n\n  it('should skip install if the noInstall option is true', async () => {\n    const yarnWithoutInstall = new Yarn({\n      noInstall: true,\n    });\n\n    await expect(yarnWithoutInstall.install(path, [], false)).resolves.toBeUndefined();\n    expect(spawnSpy).toHaveBeenCalledTimes(0);\n  });\n});\n"],"mappings":"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"}