Skip to content

Commit

Permalink
Add more test cases. (#502)
Browse files Browse the repository at this point in the history
  • Loading branch information
JimiC authored and robertohuertasm committed Dec 11, 2016
1 parent b85f99a commit 438435f
Show file tree
Hide file tree
Showing 6 changed files with 169 additions and 14 deletions.
14 changes: 10 additions & 4 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,20 @@
"airbnb-base/legacy"
],
"globals": {
"afterEach": true,
"beforeEach": true,
"afterAll": true,
"beforeAll": true,
"describe": true,
"expect": true,
"it": true,
"fit": true,
"expect": true,
"xit": true,
"test": true,
"xdescribe": true,
"fdescribe": true
},
"fdescribe": true,
"xit": true,
"xtest": true
},
"rules": {
"max-len": [
2,
Expand Down
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,20 +64,20 @@
"prebuild": "npm run lint && npm run test",
"build": "node ./src/build/build.js",
"example": "node ./src/build/example.js ",
"lint": "node ./node_modules/eslint/bin/eslint src",
"lint": "eslint src tests",
"postinstall": "node ./node_modules/vscode/bin/install",
"test": "jest --config ./jest.config.json"
"test": "jest -c ./jest.config.json"
},
"devDependencies": {
"eslint": "^3.12.0",
"eslint-config-airbnb": "^13.0.0",
"eslint-plugin-import": "^2.2.0",
"eslint-plugin-jsx-a11y": "^3.0.1",
"eslint-plugin-react": "^6.6.0",
"ncp": "^2.0.0",
"jest-cli": "^17.0.3",
"lodash": "^4.17.2",
"vscode": "^1.0.0",
"jest-cli": "^17.0.3"
"ncp": "^2.0.0",
"vscode": "^1.0.0"
},
"dependencies": {
"open": "0.0.5",
Expand Down
5 changes: 3 additions & 2 deletions src/build/iconGenerator.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ function buildJsonStructure(iconsFolderBasePath) {
};

current.languages.forEach(function (langIds) {
if (_.isArray(langIds)) {
if (Array.isArray(langIds)) {
langIds.forEach(function (id) { assignLanguages(id); });
} else {
assignLanguages(langIds);
Expand Down Expand Up @@ -227,5 +227,6 @@ module.exports = {
generate: generate,
removeFirstDot: removeFirstDot,
getPathToDirName: getPathToDirName,
getDefaultSchema: getDefaultSchema
getDefaultSchema: getDefaultSchema,
buildJsonStructure: buildJsonStructure
};
2 changes: 1 addition & 1 deletion src/build/languages.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module.exports = {
exports.languages = {
javascript: 'javascript',
perl: ['perl', 'perl6'],
prolog: 'prolog'
Expand Down
2 changes: 1 addition & 1 deletion src/build/supportedExtensions.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable max-len */
var languages = require('./languages');
var languages = require('./languages').languages;
exports.extensions = {
supported: [
{ icon: 'actionscript', extensions: ['as'] },
Expand Down
150 changes: 149 additions & 1 deletion tests/iconGenerator.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ describe('generating icons', function () {
expect(iconGenerator.getPathToDirName(toDirName, fromDirPath)).toEqual(pathTo);
});

it('ensures each supported extension has an associated icon file', function () {
it('ensures each supported file extension has an associated icon file', function () {
var suffix = '@2x';
var iconDirPath = iconGenerator.getPathToDirName('icons', '.');

Expand All @@ -44,6 +44,154 @@ describe('generating icons', function () {
});
});

it('ensures each supported folder has an associated opened icon file', function () {
var suffix = '@2x';
var iconDirPath = iconGenerator.getPathToDirName('icons', '.');

folders.supported.forEach(function (folder) {
var iconFileExtension = folder.svg ? '.svg' : '.png';
var iconOpenFilePath = iconDirPath + 'folder_type_' +
folder.icon + '_opened' + suffix + iconFileExtension;

expect(fs.existsSync(iconOpenFilePath)).toBeTruthy();
});
});

it('ensures each supported file extension has a definition', function () {
var fileDefinitions = iconGenerator.buildJsonStructure().files.defs;

files.supported.forEach(function (file) {
var definition = '_f_' + file.icon;
expect(fileDefinitions[definition]).toBeDefined();
});
});

it('ensures each supported file extension has an icon path', function () {
var fileDefinitions = iconGenerator.buildJsonStructure().files.defs;

files.supported.forEach(function (file) {
var definition = '_f_' + file.icon;
expect(fileDefinitions[definition].iconPath).toBeDefined();
});
});

it('ensures each supported folder has a definition', function () {
var folderDefinitions = iconGenerator.buildJsonStructure().folders.defs;

folders.supported.forEach(function (folder) {
var definition = '_fd_' + folder.icon;
expect(folderDefinitions[definition]).toBeDefined();
});
});

it('ensures each supported folder has an open definition', function () {
var folderDefinitions = iconGenerator.buildJsonStructure().folders.defs;

folders.supported.forEach(function (folder) {
var definition = '_fd_' + folder.icon + '_open';
expect(folderDefinitions[definition]).toBeDefined();
});
});

it('ensures each supported folder has an icon path', function () {
var folderDefinitions = iconGenerator.buildJsonStructure().folders.defs;

folders.supported.forEach(function (folder) {
var definition = '_fd_' + folder.icon;
expect(folderDefinitions[definition].iconPath).toBeDefined();
});
});

it('ensures each supported folder has an open icon path', function () {
var folderDefinitions = iconGenerator.buildJsonStructure().folders.defs;

folders.supported.forEach(function (folder) {
var definition = '_fd_' + folder.icon + '_open';
expect(folderDefinitions[definition].iconPath).toBeDefined();
});
});

it('ensures each supported folder has a folder name referencing its definiton',
function () {
var folderNames = iconGenerator.buildJsonStructure().folders.names.folderNames;

folders.supported.forEach(function (folder) {
var definition = '_fd_' + folder.icon;
folder.extensions.forEach(function (extension) {
var extensionName = (folder.dot ? '.' : '') + extension;
expect(folderNames[extensionName]).toEqual(definition);
});
});
});

it('ensures each supported folder has a folder name expanded referencing its definiton',
function () {
var folderNamesExpanded = iconGenerator.buildJsonStructure()
.folders.names.folderNamesExpanded;

folders.supported.forEach(function (folder) {
var definition = '_fd_' + folder.icon + '_open';
folder.extensions.forEach(function (extension) {
var extensionName = (folder.dot ? '.' : '') + extension;
expect(folderNamesExpanded[extensionName]).toEqual(definition);
});
});
});

it('ensures each supported file extension that is not a filename ' +
'has a file extension referencing its definiton',
function () {
var fileExtensions = iconGenerator.buildJsonStructure().files.names.fileExtensions;

files.supported
.filter(function (file) { return !file.filename && !file.languages; })
.forEach(function (file) {
var definition = '_f_' + file.icon;
file.extensions.forEach(function (extension) {
var extensionName = iconGenerator.removeFirstDot(extension);
expect(fileExtensions[extensionName]).toEqual(definition);
});
});
});

it('ensures each supported file extension that is a filename ' +
'has a file name referencing its definiton',
function () {
var fileNames = iconGenerator.buildJsonStructure().files.names.fileNames;

files.supported
.filter(function (file) { return file.filename && !file.languages; })
.forEach(function (file) {
var definition = '_f_' + file.icon;
file.extensions.forEach(function (extension) {
expect(fileNames[extension]).toEqual(definition);
});
});
});

it('ensures each supported file extension that is supported by language ids ' +
'has a language id referencing its definiton',
function () {
var languageIds = iconGenerator.buildJsonStructure().files.names.languageIds;

files.supported
.filter(function (file) { return file.languages; })
.forEach(function (file) {
var definition = '_f_' + file.icon;
var assertLanguage = function (language) {
expect(languageIds[language]).toEqual(definition);
};

file.languages.forEach(function (langIds) {
if (Array.isArray(langIds)) {
langIds.forEach(function (id) { assertLanguage(id); });
} else {
assertLanguage(langIds);
}
});
});
});

/*
This can be unskipped once 'toMatchObject' method has been released by facebook.
See: https://github.com/facebook/jest/issues/2195
Expand Down

0 comments on commit 438435f

Please sign in to comment.