Skip to content

Commit

Permalink
test(core): exclude empty dictionaries from fixtures
Browse files Browse the repository at this point in the history
  • Loading branch information
JamieMason committed Feb 10, 2018
1 parent 2ab5480 commit 103e6f6
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 36 deletions.
4 changes: 2 additions & 2 deletions src/manifests/get-manifests.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ describe('getManifests', () => {
const result = await getManifests(pattern);
expect(result).toEqual([
{
data: { dependencies: { rimraf: '0.1.2' }, devDependencies: {}, name: 'bar', peerDependencies: {} },
data: { dependencies: { rimraf: '0.1.2' }, name: 'bar' },
path: '/Users/you/Dev/monorepo/packages/bar/package.json'
},
{
data: { dependencies: { chalk: '1.0.0' }, devDependencies: {}, name: 'foo', peerDependencies: {} },
data: { dependencies: { chalk: '1.0.0' }, name: 'foo' },
path: '/Users/you/Dev/monorepo/packages/foo/package.json'
}
]);
Expand Down
18 changes: 10 additions & 8 deletions src/manifests/index.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { readFileSync } from 'fs';
import * as _ from 'lodash';
import * as mock from 'mock-fs';
import { createFile, createManifest, createMockDescriptor, createMockFs } from '../../test/helpers';
import { IManifest, IManifestDescriptor } from '../typings';
Expand Down Expand Up @@ -26,16 +27,17 @@ beforeEach(() => {
{ gulp: '3.9.1' }
),
...createMockFs('bar', { chalk: '1.0.0' }, { jest: '22.1.4' }),
...createMockFs('baz', {}, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
...createMockFs('baz', null, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
});
});

describe('format', () => {
it('sorts and shortens properties according to a convention', async () => {
const result = await format(pattern);
result.forEach((descriptor: IManifestDescriptor) => {
expect(Object.keys(descriptor.data)).toEqual(['name', 'dependencies', 'devDependencies', 'peerDependencies']);
});
const getByName = (name) => Object.keys(_.find(result, (v) => v.data.name === name).data);
expect(getByName('foo')).toEqual(['name', 'dependencies', 'devDependencies', 'peerDependencies']);
expect(getByName('bar')).toEqual(['name', 'dependencies', 'devDependencies']);
expect(getByName('baz')).toEqual(['name', 'devDependencies', 'peerDependencies']);
});
});

Expand Down Expand Up @@ -77,7 +79,7 @@ describe('setVersion', () => {
{ gulp: '3.9.1' }
),
createMockDescriptor('bar', { chalk: '1.0.0' }, { jest: '25.0.0' }),
createMockDescriptor('baz', {}, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
createMockDescriptor('baz', null, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
])
);
});
Expand All @@ -95,7 +97,7 @@ describe('setVersionRange', () => {
{ gulp: '^3.9.1' }
),
createMockDescriptor('bar', { chalk: '^1.0.0' }, { jest: '^22.1.4' }),
createMockDescriptor('baz', {}, { npm: 'https://github.com/npm/npm.git', prettier: '^1.10.2' }, { gulp: '*' })
createMockDescriptor('baz', null, { npm: 'https://github.com/npm/npm.git', prettier: '^1.10.2' }, { gulp: '*' })
])
);
});
Expand All @@ -113,7 +115,7 @@ describe('setVersionsToNewestMismatch', () => {
{ gulp: '*' }
),
createMockDescriptor('bar', { chalk: '2.3.0' }, { jest: '22.1.4' }),
createMockDescriptor('baz', {}, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
createMockDescriptor('baz', null, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
])
);
});
Expand All @@ -131,7 +133,7 @@ describe('setVersionsToNewestMismatch', () => {
createFile('bar', { chalk: '2.3.0' }, { jest: '22.1.4' })
);
expect(readFileSync('/Users/you/Dev/monorepo/packages/baz/package.json', 'utf8')).toEqual(
createFile('baz', {}, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
createFile('baz', null, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
);
});
});
8 changes: 4 additions & 4 deletions src/manifests/manifest-data/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ beforeEach(() => {
{ gulp: '3.9.1' }
),
createManifest('bar', { chalk: '1.0.0' }, { jest: '22.1.4' }),
createManifest('baz', {}, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
createManifest('baz', null, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
];
});

Expand Down Expand Up @@ -53,7 +53,7 @@ describe('setVersion', () => {
{ gulp: '3.9.1' }
),
createManifest('bar', { chalk: '1.0.0' }, { jest: '25.0.0' }),
createManifest('baz', {}, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
createManifest('baz', null, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
]);
});
});
Expand All @@ -68,7 +68,7 @@ describe('setVersionRange', () => {
{ gulp: '^3.9.1' }
),
createManifest('bar', { chalk: '^1.0.0' }, { jest: '^22.1.4' }),
createManifest('baz', {}, { npm: 'https://github.com/npm/npm.git', prettier: '^1.10.2' }, { gulp: '*' })
createManifest('baz', null, { npm: 'https://github.com/npm/npm.git', prettier: '^1.10.2' }, { gulp: '*' })
]);
});
});
Expand All @@ -83,7 +83,7 @@ describe('setVersionsToNewestMismatch', () => {
{ gulp: '*' }
),
createManifest('bar', { chalk: '2.3.0' }, { jest: '22.1.4' }),
createManifest('baz', {}, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
createManifest('baz', null, { npm: 'https://github.com/npm/npm.git', prettier: '1.10.2' }, { gulp: '*' })
]);
});
});
54 changes: 32 additions & 22 deletions test/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ import { formatJson } from '../src/lib/write-json';
import { IDictionary, IManifest, IManifestDescriptor } from '../src/typings';

export const createFile = (
name: string,
dependencies: IManifest['dependencies'] = {},
devDependencies: IManifest['devDependencies'] = {},
peerDependencies: IManifest['peerDependencies'] = {}
name?: string,
dependencies?: IManifest['dependencies'],
devDependencies?: IManifest['devDependencies'],
peerDependencies?: IManifest['peerDependencies']
) => formatJson(createManifest(name, dependencies, devDependencies, peerDependencies));

export const createMockFs = (
name: string,
dependencies: IManifest['dependencies'] = {},
devDependencies: IManifest['devDependencies'] = {},
peerDependencies: IManifest['peerDependencies'] = {}
name?: string,
dependencies?: IManifest['dependencies'],
devDependencies?: IManifest['devDependencies'],
peerDependencies?: IManifest['peerDependencies']
): { [path: string]: string } => ({
[`/Users/you/Dev/monorepo/packages/${name}/package.json`]: createFile(
name,
Expand All @@ -24,26 +24,36 @@ export const createMockFs = (
});

export const createMockDescriptor = (
name: string,
dependencies: IManifest['dependencies'] = {},
devDependencies: IManifest['devDependencies'] = {},
peerDependencies: IManifest['peerDependencies'] = {}
name?: string,
dependencies?: IManifest['dependencies'],
devDependencies?: IManifest['devDependencies'],
peerDependencies?: IManifest['peerDependencies']
): IManifestDescriptor => ({
data: createManifest(name, dependencies, devDependencies, peerDependencies),
path: `/Users/you/Dev/monorepo/packages/${name}/package.json`
});

export const createManifest = (
name: string,
dependencies: IManifest['dependencies'] = {},
devDependencies: IManifest['devDependencies'] = {},
peerDependencies: IManifest['peerDependencies'] = {}
): IManifest => ({
dependencies,
devDependencies,
name,
peerDependencies
});
name?: string,
dependencies?: IManifest['dependencies'],
devDependencies?: IManifest['devDependencies'],
peerDependencies?: IManifest['peerDependencies']
): IManifest => {
const manifest = { dependencies, devDependencies, name, peerDependencies };
if (!dependencies) {
delete manifest.dependencies;
}
if (!devDependencies) {
delete manifest.devDependencies;
}
if (!name) {
delete manifest.name;
}
if (!peerDependencies) {
delete manifest.peerDependencies;
}
return manifest;
};

const shuffle = (value: any): typeof value =>
_.isArray(value) ? _.shuffle(value) : _.isObject(value) ? shuffleObject(value) : value;
Expand Down

0 comments on commit 103e6f6

Please sign in to comment.