mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-14 09:37:18 +08:00
92 lines
2.9 KiB
TypeScript
92 lines
2.9 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
import { EmptyTree } from '@angular-devkit/schematics';
|
|
import { UnitTestTree } from '@angular-devkit/schematics/testing';
|
|
import {
|
|
NodeDependency,
|
|
NodeDependencyType,
|
|
addPackageJsonDependency,
|
|
getPackageJsonDependency,
|
|
} from './dependencies';
|
|
|
|
|
|
describe('dependencies', () => {
|
|
describe('addDependency', () => {
|
|
let tree: UnitTestTree;
|
|
const pkgJsonPath = '/package.json';
|
|
let dependency: NodeDependency;
|
|
beforeEach(() => {
|
|
tree = new UnitTestTree(new EmptyTree());
|
|
tree.create(pkgJsonPath, '{}');
|
|
|
|
dependency = {
|
|
type: NodeDependencyType.Default,
|
|
name: 'my-pkg',
|
|
version: '1.2.3',
|
|
};
|
|
});
|
|
|
|
[
|
|
{ type: NodeDependencyType.Default, key: 'dependencies' },
|
|
{ type: NodeDependencyType.Dev, key: 'devDependencies' },
|
|
{ type: NodeDependencyType.Optional, key: 'optionalDependencies' },
|
|
{ type: NodeDependencyType.Peer, key: 'peerDependencies' },
|
|
].forEach(type => {
|
|
describe(`Type: ${type.toString()}`, () => {
|
|
beforeEach(() => {
|
|
dependency.type = type.type;
|
|
});
|
|
|
|
it('should add a dependency', () => {
|
|
addPackageJsonDependency(tree, dependency);
|
|
const pkgJson = JSON.parse(tree.readContent(pkgJsonPath));
|
|
expect(pkgJson[type.key][dependency.name]).toEqual(dependency.version);
|
|
});
|
|
|
|
it('should handle an existing dependency (update version)', () => {
|
|
addPackageJsonDependency(tree, {...dependency, version: '0.0.0'});
|
|
addPackageJsonDependency(tree, {...dependency, overwrite: true});
|
|
const pkgJson = JSON.parse(tree.readContent(pkgJsonPath));
|
|
expect(pkgJson[type.key][dependency.name]).toEqual(dependency.version);
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should throw when missing package.json', () => {
|
|
expect((() => addPackageJsonDependency(new EmptyTree(), dependency))).toThrow();
|
|
});
|
|
|
|
});
|
|
|
|
describe('getDependency', () => {
|
|
let tree: UnitTestTree;
|
|
beforeEach(() => {
|
|
const pkgJsonPath = '/package.json';
|
|
const pkgJsonContent = JSON.stringify({
|
|
dependencies: {
|
|
'my-pkg': '1.2.3',
|
|
},
|
|
}, null, 2);
|
|
tree = new UnitTestTree(new EmptyTree());
|
|
tree.create(pkgJsonPath, pkgJsonContent);
|
|
});
|
|
|
|
it('should get a dependency', () => {
|
|
const dep = getPackageJsonDependency(tree, 'my-pkg') as NodeDependency;
|
|
expect(dep.type).toEqual(NodeDependencyType.Default);
|
|
expect(dep.name).toEqual('my-pkg');
|
|
expect(dep.version).toEqual('1.2.3');
|
|
});
|
|
|
|
it('should return null if dependency does not exist', () => {
|
|
const dep = getPackageJsonDependency(tree, 'missing-pkg') as NodeDependency;
|
|
expect(dep).toBeNull();
|
|
});
|
|
});
|
|
});
|