|
1 | 1 | import path from 'node:path'; |
2 | 2 | import fs, {promises as fsPromises} from 'node:fs'; |
3 | 3 | import test from 'ava'; |
4 | | -import {omit} from 'filter-anything'; |
| 4 | +import {omit, pick} from 'filter-anything'; |
5 | 5 | import {temporaryDirectory} from 'tempy'; |
6 | 6 | import {readPackage, readPackageSync} from 'read-pkg'; |
7 | 7 | import {removePackageDependencies, removePackageDependenciesSync, writePackage, writePackageSync} from '../index.js'; |
@@ -49,6 +49,23 @@ test('async - multiple types', async t => { |
49 | 49 | t.deepEqual(packageJson, omit(fixture, ['dependencies', 'devDependencies.bar'])); |
50 | 50 | }); |
51 | 51 |
|
| 52 | +test('async - multiple types with multiple dependencies', async t => { |
| 53 | + const temporary = temporaryDirectory(); |
| 54 | + |
| 55 | + const fixture = { |
| 56 | + name: 'foo', |
| 57 | + dependencies: {foo: '1.0.0', bar: '1.0.0', baz: '1.0.0'}, |
| 58 | + devDependencies: {foobar: '1.0.0', foobaz: '1.0.0'}, |
| 59 | + }; |
| 60 | + |
| 61 | + await writePackage(temporary, fixture); |
| 62 | + |
| 63 | + await removePackageDependencies(temporary, {dependencies: ['foo', 'bar'], devDependencies: ['foobar', 'foobaz']}); |
| 64 | + const packageJson = await readPackage({cwd: temporary, normalize: false}); |
| 65 | + |
| 66 | + t.deepEqual(packageJson, pick(fixture, ['name', 'dependencies.baz'])); |
| 67 | +}); |
| 68 | + |
52 | 69 | test('async - should not throw if package.json does not exist', async t => { |
53 | 70 | const temporary = temporaryDirectory(); |
54 | 71 | await t.notThrowsAsync(removePackageDependencies(temporary, ['foo'])); |
@@ -152,6 +169,23 @@ test('sync - multiple types', t => { |
152 | 169 | t.deepEqual(packageJson, omit(fixture, ['dependencies', 'devDependencies.bar'])); |
153 | 170 | }); |
154 | 171 |
|
| 172 | +test('sync - multiple types with multiple dependencies', t => { |
| 173 | + const temporary = temporaryDirectory(); |
| 174 | + |
| 175 | + const fixture = { |
| 176 | + name: 'foo', |
| 177 | + dependencies: {foo: '1.0.0', bar: '1.0.0', baz: '1.0.0'}, |
| 178 | + devDependencies: {foobar: '1.0.0', foobaz: '1.0.0'}, |
| 179 | + }; |
| 180 | + |
| 181 | + writePackageSync(temporary, fixture); |
| 182 | + |
| 183 | + removePackageDependenciesSync(temporary, {dependencies: ['foo', 'bar'], devDependencies: ['foobar', 'foobaz']}); |
| 184 | + const packageJson = readPackageSync({cwd: temporary, normalize: false}); |
| 185 | + |
| 186 | + t.deepEqual(packageJson, pick(fixture, ['name', 'dependencies.baz'])); |
| 187 | +}); |
| 188 | + |
155 | 189 | test('sync - should not throw if package.json does not exist', t => { |
156 | 190 | const temporary = temporaryDirectory(); |
157 | 191 | t.notThrows(() => removePackageDependenciesSync(temporary, ['foo'])); |
|
0 commit comments