Charles Lyding 37a06a7c37 build: format all files
All files are now formatted using the ng-dev tools via prettier.
2021-04-28 16:05:49 -07:00

95 lines
2.9 KiB
TypeScript

/**
* @license
* Copyright Google LLC 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();
});
});
});