From 041db13c003af14dce148bed48934a8c001acbfb Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Tue, 17 May 2016 01:24:50 +0100 Subject: [PATCH 1/8] :white_check_mark: re arrange helper tests closes #322 --- package.json | 2 +- tests/helpers.js | 1356 ---------------------- tests/helpers/addUnique.js | 75 ++ tests/helpers/attemptTraversal.js | 78 ++ tests/helpers/collectSuffixExtensions.js | 123 ++ tests/helpers/hasEOL.js | 27 + tests/helpers/helpers.js | 18 + tests/helpers/isCamelCase.js | 51 + tests/helpers/isEmptyLine.js | 43 + tests/helpers/isEqual.js | 113 ++ tests/helpers/isHyphenatedBEM.js | 91 ++ tests/helpers/isHyphenatedLowerCase.js | 75 ++ tests/helpers/isLowerCase.js | 43 + tests/helpers/isNestable.js | 35 + tests/helpers/isNumber.js | 44 + tests/helpers/isPartialStringMatch.js | 59 + tests/helpers/isPascalCase.js | 51 + tests/helpers/isSnakeCase.js | 59 + tests/helpers/isStrictBEM.js | 115 ++ tests/helpers/isUnique.js | 74 ++ tests/helpers/isUpperCase.js | 44 + tests/helpers/isValidHex.js | 115 ++ tests/helpers/loadConfigFile.js | 20 + tests/helpers/propertySearch.js | 51 + tests/helpers/sortDetects.js | 66 ++ tests/helpers/stripLastSpace.js | 43 + tests/helpers/stripPrefix.js | 51 + tests/helpers/stripQuotes.js | 27 + 28 files changed, 1592 insertions(+), 1357 deletions(-) delete mode 100644 tests/helpers.js create mode 100644 tests/helpers/addUnique.js create mode 100644 tests/helpers/attemptTraversal.js create mode 100644 tests/helpers/collectSuffixExtensions.js create mode 100644 tests/helpers/hasEOL.js create mode 100644 tests/helpers/helpers.js create mode 100644 tests/helpers/isCamelCase.js create mode 100644 tests/helpers/isEmptyLine.js create mode 100644 tests/helpers/isEqual.js create mode 100644 tests/helpers/isHyphenatedBEM.js create mode 100644 tests/helpers/isHyphenatedLowerCase.js create mode 100644 tests/helpers/isLowerCase.js create mode 100644 tests/helpers/isNestable.js create mode 100644 tests/helpers/isNumber.js create mode 100644 tests/helpers/isPartialStringMatch.js create mode 100644 tests/helpers/isPascalCase.js create mode 100644 tests/helpers/isSnakeCase.js create mode 100644 tests/helpers/isStrictBEM.js create mode 100644 tests/helpers/isUnique.js create mode 100644 tests/helpers/isUpperCase.js create mode 100644 tests/helpers/isValidHex.js create mode 100644 tests/helpers/loadConfigFile.js create mode 100644 tests/helpers/propertySearch.js create mode 100644 tests/helpers/sortDetects.js create mode 100644 tests/helpers/stripLastSpace.js create mode 100644 tests/helpers/stripPrefix.js create mode 100644 tests/helpers/stripQuotes.js diff --git a/package.json b/package.json index 13fa005e..60789db6 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "preversion": "npm test", "pretest": "eslint .", - "test": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec -t 3000 tests tests/rules", + "test": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec -t 3000 tests tests/rules tests/helpers", "coveralls": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js" }, "bin": { diff --git a/tests/helpers.js b/tests/helpers.js deleted file mode 100644 index 744699dd..00000000 --- a/tests/helpers.js +++ /dev/null @@ -1,1356 +0,0 @@ -'use strict'; - -var assert = require('assert'), - helpers = require('../lib/helpers'), - gonzales = require('gonzales-pe-sl'); - -var haystack = [ - { - prop: 'a', - propb: 'b' - }, - { - prop: 'c', - propb: 'd' - } -]; - -var classBlock = - { - type: 'class', - content: - [ - { - type: 'ident', - content: 'foo', - syntax: 'scss', - start: { line: 5, column: 2 }, - end: { line: 5, column: 4 }, - indexHasChanged: [ 0 ] - } - ], - syntax: 'scss', - start: { line: 5, column: 1 }, - end: { line: 5, column: 4 }, - indexHasChanged: [ 0 ] - }, - - otherClassBlock = - { - type: 'class', - content: - [ - { - type: 'ident', - content: 'test', - syntax: 'scss', - start: { line: 9, column: 2 }, - end: { line: 9, column: 5 }, - indexHasChanged: [ 0 ] - } - ], - syntax: 'scss', - start: { line: 9, column: 1 }, - end: { line: 9, column: 5 }, - indexHasChanged: [ 0 ] - }; - -var detectTestA = { - line: 1, - column: 1 - }, - - detectTestB = { - line: 2, - column: 2 - }, - - detectTestC = { - line: 1, - column: 2 - }; - - -describe('helpers', function () { - - ////////////////////////////// - // Helpers is loaded - ////////////////////////////// - - it('helpers should not be undefined', function (done) { - - var loaded = typeof (helpers) === 'object' ? true : false; - - assert.equal(true, loaded); - done(); - }); - - ////////////////////////////// - // propertySearch - ////////////////////////////// - - it('propertySearch should not find a property', function (done) { - - var needle = 'e', - property = 'prop', - result = helpers.propertySearch(haystack, needle, property); - - assert.equal(-1, result); - done(); - }); - - it('propertySearch should find a property', function (done) { - - var needle = 'a', - property = 'prop', - result = helpers.propertySearch(haystack, needle, property); - - assert.equal(0, result); - done(); - }); - - it('propertySearch should find a deeper property', function (done) { - - var needle = 'd', - property = 'propb', - result = helpers.propertySearch(haystack, needle, property); - - assert.equal(1, result); - done(); - }); - - ////////////////////////////// - // isEqual - ////////////////////////////// - - it('isEqual should return true', function (done) { - - var testBlock = - { - type: 'class', - content: - [ - { - type: 'ident', - content: 'foo', - syntax: 'scss', - start: { line: 5, column: 2 }, - end: { line: 5, column: 4 }, - indexHasChanged: [ 0 ] - } - ], - syntax: 'scss', - start: { line: 5, column: 1 }, - end: { line: 5, column: 4 }, - indexHasChanged: [ 0 ] - }, - result = helpers.isEqual(classBlock, testBlock); - - assert.equal(true, result); - done(); - }); - - it('isEqual should return false - [objA.type !== objB.type]', function (done) { - - var testBlock = { - type: 'block', - start: {line: 5}, - end: {line: 5}, - content: [1] - }, - result = helpers.isEqual(classBlock, testBlock); - - assert.equal(false, result); - done(); - }); - - it('isEqual should return false - [objA.start.line !== objB.start.line]', function (done) { - - var testBlock = { - type: 'class', - start: {line: 7}, - end: {line: 5}, - content: [1] - }, - result = helpers.isEqual(classBlock, testBlock); - - assert.equal(false, result); - done(); - }); - - it('isEqual should return false - [objA.end.line !== objB.end.line]', function (done) { - - var testBlock = { - type: 'class', - start: {line: 5}, - end: {line: 7}, - content: [1] - }, - result = helpers.isEqual(classBlock, testBlock); - - assert.equal(false, result); - done(); - }); - - it('isEqual should return false - [objA.content.length !== objB.content.length]', function (done) { - - var testBlock = { - type: 'class', - start: {line: 5}, - end: {line: 5}, - content: [1, 2, 3, 4] - }, - result = helpers.isEqual(classBlock, testBlock); - - assert.equal(false, result); - done(); - }); - - ////////////////////////////// - // isUnique - ////////////////////////////// - - it('isUnique should return false - [objA === objB]', function (done) { - - - var ledger = []; - ledger.push(classBlock); - - var result = helpers.isUnique(ledger, classBlock); - - assert.equal(false, result); - done(); - }); - - it('isUnique should return true - [objA !== objB]', function (done) { - - - var ledger = []; - ledger.push(classBlock); - - var result = helpers.isUnique(ledger, otherClassBlock); - - assert.equal(false, result); - done(); - }); - - ////////////////////////////// - // addUnique - ////////////////////////////// - - it('addUnique should return a modified results array - [objA !== objB]', function (done) { - - var ledger = []; - ledger.push(classBlock); - - var result = helpers.addUnique(ledger, otherClassBlock); - - ledger.push(otherClassBlock); - - assert.equal(ledger, result); - done(); - }); - - it('addUnique should return an unmodified results array - [objA === objB]', function (done) { - - var ledger = []; - ledger.push(classBlock); - - var result = helpers.addUnique(ledger, classBlock); - - assert.equal(ledger, result); - done(); - }); - - ////////////////////////////// - // sortDetects - ////////////////////////////// - - it('sortDetects should return -1 - [a.line < b.line]', function (done) { - - var result = helpers.sortDetects(detectTestA, detectTestB); - - assert.equal(-1, result); - done(); - }); - - it('sortDetects should return 1 - [a.line > b.line]', function (done) { - - var result = helpers.sortDetects(detectTestB, detectTestA); - - assert.equal(1, result); - done(); - }); - - it('sortDetects should return 0 - [a === b]', function (done) { - - var result = helpers.sortDetects(detectTestA, detectTestA); - - assert.equal(0, result); - done(); - }); - - it('sortDetects should return -1 - [a.column < b.column]', function (done) { - - var result = helpers.sortDetects(detectTestA, detectTestC); - - assert.equal(-1, result); - done(); - }); - - it('sortDetects should return 1 - [a.column > b.column]', function (done) { - - var result = helpers.sortDetects(detectTestC, detectTestA); - - assert.equal(1, result); - done(); - }); - - ////////////////////////////// - // isNumber - ////////////////////////////// - - it('isNumber - [10 - true]', function (done) { - - var result = helpers.isNumber(10); - - assert.equal(true, result); - done(); - }); - - it('isNumber - [\'10\' - true]', function (done) { - - var result = helpers.isNumber('10'); - - assert.equal(true, result); - done(); - }); - - it('isNumber - [\'ten\' - false]', function (done) { - - var result = helpers.isNumber('ten'); - - assert.equal(false, result); - done(); - }); - - it('isNumber - [\'ff00ff\' - false]', function (done) { - - var result = helpers.isNumber('ff00ff'); - - assert.equal(false, result); - done(); - }); - - ////////////////////////////// - // isUpperCase - ////////////////////////////// - - it('isUpperCase - [\'TEST\' - true]', function (done) { - - var result = helpers.isUpperCase('TEST'); - - assert.equal(true, result); - done(); - }); - - it('isUpperCase - [\'test\' - false]', function (done) { - - var result = helpers.isUpperCase('test'); - - assert.equal(false, result); - done(); - }); - - it('isUpperCase - [abcDEF - false]', function (done) { - - var result = helpers.isUpperCase('abcDEF'); - - assert.equal(false, result); - done(); - }); - - it('isUpperCase - [\'123\' - false]', function (done) { - - var result = helpers.isUpperCase('123'); - - assert.equal(false, result); - done(); - }); - - ////////////////////////////// - // isLowerCase - ////////////////////////////// - - it('isLowerCase - [\'TEST\' - false]', function (done) { - - var result = helpers.isLowerCase('TEST'); - - assert.equal(false, result); - done(); - }); - - it('isLowerCase - [\'test\' - true]', function (done) { - - var result = helpers.isLowerCase('test'); - - assert.equal(true, result); - done(); - }); - - it('isLowerCase - [abcDEF - false]', function (done) { - - var result = helpers.isLowerCase('abcDEF'); - - assert.equal(false, result); - done(); - }); - - it('isLowerCase - [\'123\' - false]', function (done) { - - var result = helpers.isLowerCase('123'); - - assert.equal(false, result); - done(); - }); - - ////////////////////////////// - // isCamelCase - ////////////////////////////// - - it('isCamelCase - [\'TEST\' - false]', function (done) { - - var result = helpers.isCamelCase('TEST'); - - assert.equal(false, result); - done(); - }); - - it('isCamelCase - [\'test\' - true]', function (done) { - - var result = helpers.isCamelCase('test'); - - assert.equal(true, result); - done(); - }); - - it('isCamelCase - [abcDEF - true]', function (done) { - - var result = helpers.isCamelCase('abcDEF'); - - assert.equal(true, result); - done(); - }); - - it('isCamelCase - [\'123\' - false]', function (done) { - - var result = helpers.isCamelCase('123'); - - assert.equal(false, result); - done(); - }); - - it('isCamelCase - [\'aBcDeF\' - true]', function (done) { - - var result = helpers.isCamelCase('aBcDeF'); - - assert.equal(true, result); - done(); - }); - - ////////////////////////////// - // isPascalCase - ////////////////////////////// - - it('isPascalCase - [\'TEST\' - true]', function (done) { - - var result = helpers.isPascalCase('TEST'); - - assert.equal(true, result); - done(); - }); - - it('isPascalCase - [\'test\' - false]', function (done) { - - var result = helpers.isPascalCase('test'); - - assert.equal(false, result); - done(); - }); - - it('isPascalCase - [AbcDEF - true]', function (done) { - - var result = helpers.isPascalCase('AbcDEF'); - - assert.equal(true, result); - done(); - }); - - it('isPascalCase - [\'123\' - false]', function (done) { - - var result = helpers.isPascalCase('123'); - - assert.equal(false, result); - done(); - }); - - it('isPascalCase - [\'ABcDeF\' - true]', function (done) { - - var result = helpers.isPascalCase('ABcDeF'); - - assert.equal(true, result); - done(); - }); - - ////////////////////////////// - // isHyphenatedLowercase - ////////////////////////////// - - it('isHyphenatedLowercase - [\'abc-def\' - true]', function (done) { - - var result = helpers.isHyphenatedLowercase('abc-def'); - - assert.equal(true, result); - done(); - }); - - it('isHyphenatedLowercase - [\'TEST\' - false]', function (done) { - - var result = helpers.isHyphenatedLowercase('TEST'); - - assert.equal(false, result); - done(); - }); - - it('isHyphenatedLowercase - [\'test\' - true]', function (done) { - - var result = helpers.isHyphenatedLowercase('test'); - - assert.equal(true, result); - done(); - }); - - it('isHyphenatedLowercase - [abcDEF - false]', function (done) { - - var result = helpers.isHyphenatedLowercase('abcDEF'); - - assert.equal(false, result); - done(); - }); - - it('isHyphenatedLowercase - [\'123\' - true]', function (done) { - - var result = helpers.isHyphenatedLowercase('123'); - - assert.equal(true, result); - done(); - }); - - it('isHyphenatedLowercase - [\'aBcDeF\' - false]', function (done) { - - var result = helpers.isHyphenatedLowercase('aBcDeF'); - - assert.equal(false, result); - done(); - }); - - it('isHyphenatedLowercase - [\'abc-\\31\\32\\33\' - false]', function (done) { - - var result = helpers.isHyphenatedLowercase('abc-\\31\\32\\33'); - - assert.equal(false, result); - done(); - }); - - it('isHyphenatedLowercase - [\'abc-\\+\\*\' - false]', function (done) { - - var result = helpers.isHyphenatedLowercase('abc-\\+\\*'); - - assert.equal(false, result); - done(); - }); - - ////////////////////////////// - // isSnakeCase - ////////////////////////////// - - it('isSnakeCase - [\'TEST\' - false]', function (done) { - - var result = helpers.isSnakeCase('TEST'); - - assert.equal(false, result); - done(); - }); - - it('isSnakeCase - [\'test\' - true]', function (done) { - - var result = helpers.isSnakeCase('test'); - - assert.equal(true, result); - done(); - }); - - it('isSnakeCase - [abcDEF - false]', function (done) { - - var result = helpers.isSnakeCase('abcDEF'); - - assert.equal(false, result); - done(); - }); - - it('isSnakeCase - [\'123\' - true]', function (done) { - - var result = helpers.isSnakeCase('123'); - - assert.equal(true, result); - done(); - }); - - it('isSnakeCase - [\'ab_cd_ef\' - true]', function (done) { - - var result = helpers.isSnakeCase('ab_cd_ef'); - - assert.equal(true, result); - done(); - }); - - it('isSnakeCase - [\'ab_cd-ef\' - false]', function (done) { - - var result = helpers.isSnakeCase('ab_cd-ef'); - - assert.equal(false, result); - done(); - }); - - ////////////////////////////// - // isHyphenatedBEM - ////////////////////////////// - - it('isHyphenatedBEM - [\'TEST\' - false]', function (done) { - - var result = helpers.isHyphenatedBEM('TEST'); - - assert.equal(false, result); - done(); - }); - - it('isHyphenatedBEM - [\'test\' - true]', function (done) { - - var result = helpers.isHyphenatedBEM('test'); - - assert.equal(true, result); - done(); - }); - - it('isHyphenatedBEM - [abcDEF - false]', function (done) { - - var result = helpers.isHyphenatedBEM('abcDEF'); - - assert.equal(false, result); - done(); - }); - - it('isHyphenatedBEM - [\'abc---def\' - false]', function (done) { - - var result = helpers.isHyphenatedBEM('abc---def'); - - assert.equal(false, result); - done(); - }); - - it('isHyphenatedBEM - [\'abc___def\' - false]', function (done) { - - var result = helpers.isHyphenatedBEM('abc___def'); - - assert.equal(false, result); - done(); - }); - - it('isHyphenatedBEM - [\'ab__cd__ef\' - true]', function (done) { - - var result = helpers.isHyphenatedBEM('ab__cd__ef'); - - assert.equal(true, result); - done(); - }); - - it('isHyphenatedBEM - [\'ab__cd--ef\' - true]', function (done) { - - var result = helpers.isHyphenatedBEM('ab__cd--ef'); - - assert.equal(true, result); - done(); - }); - - it('isHyphenatedBEM - [\'abc_def\' - false]', function (done) { - - var result = helpers.isHyphenatedBEM('abc_def'); - - assert.equal(false, result); - done(); - }); - - it('isHyphenatedBEM - [\'abc-def\' - true]', function (done) { - - var result = helpers.isHyphenatedBEM('abc-def'); - - assert.equal(true, result); - done(); - }); - - it('isHyphenatedBEM - [\'ab-cd__ef\' - true]', function (done) { - - var result = helpers.isHyphenatedBEM('ab-cd__ef'); - - assert.equal(true, result); - done(); - }); - - ////////////////////////////// - // isStrictBEM - ////////////////////////////// - - it('isStrictBEM - [\'TEST\' - false]', function (done) { - - var result = helpers.isStrictBEM('TEST'); - - assert.equal(false, result); - done(); - }); - - it('isStrictBEM - [\'test\' - true]', function (done) { - - var result = helpers.isStrictBEM('test'); - - assert.equal(true, result); - done(); - }); - - it('isStrictBEM - [abcDEF - false]', function (done) { - - var result = helpers.isStrictBEM('abcDEF'); - - assert.equal(false, result); - done(); - }); - - it('isStrictBEM - [\'abc---def\' - false]', function (done) { - - var result = helpers.isStrictBEM('abc---def'); - - assert.equal(false, result); - done(); - }); - - it('isStrictBEM - [\'abc___def\' - false]', function (done) { - - var result = helpers.isStrictBEM('abc___def'); - - assert.equal(false, result); - done(); - }); - - it('isStrictBEM - [\'ab__cd__ef\' - false]', function (done) { - - var result = helpers.isStrictBEM('ab__cd__ef'); - - assert.equal(false, result); - done(); - }); - - it('isStrictBEM - [\'ab__cd--ef\' - false]', function (done) { - - var result = helpers.isStrictBEM('ab__cd--ef'); - - assert.equal(false, result); - done(); - }); - - it('isStrictBEM - [\'ab__cd_ef_gh\' - true]', function (done) { - - var result = helpers.isStrictBEM('ab__cd_ef_gh'); - - assert.equal(true, result); - done(); - }); - - it('isStrictBEM - [\'ab-cd-ef__gh-ij-kl_mn-op-qr_st-uv-wx\' - true]', function (done) { - - var result = helpers.isStrictBEM('ab-cd-ef__gh-ij-kl_mn-op-qr_st-uv-wx'); - - assert.equal(true, result); - done(); - }); - - it('isStrictBEM - [\'ab__cd_ef_gh_ij\' - false]', function (done) { - - var result = helpers.isStrictBEM('ab__cd_ef_gh_ij'); - - assert.equal(false, result); - done(); - }); - - it('isStrictBEM - [\'abc_def\' - false]', function (done) { - - var result = helpers.isStrictBEM('abc_def'); - - assert.equal(false, result); - done(); - }); - - it('isStrictBEM - [\'abc-def\' - true]', function (done) { - - var result = helpers.isStrictBEM('abc-def'); - - assert.equal(true, result); - done(); - }); - - it('isStrictBEM - [\'ab-cd__ef\' - true]', function (done) { - - var result = helpers.isStrictBEM('ab-cd__ef'); - - assert.equal(true, result); - done(); - }); - - ////////////////////////////// - // isValidHex - ////////////////////////////// - - it('isValidHex - [\'abcdef\' - true]', function (done) { - - var result = helpers.isValidHex('abcdef'); - - assert.equal(true, result); - done(); - }); - - it('isValidHex - [\'ABCDEF\' - true]', function (done) { - - var result = helpers.isValidHex('ABCDEF'); - - assert.equal(true, result); - done(); - }); - - it('isValidHex - [\'123456\' - true]', function (done) { - - var result = helpers.isValidHex('123456'); - - assert.equal(true, result); - done(); - }); - - it('isValidHex - [\'ABC123\' - true]', function (done) { - - var result = helpers.isValidHex('ABC123'); - - assert.equal(true, result); - done(); - }); - - it('isValidHex - [\'abc123\' - true]', function (done) { - - var result = helpers.isValidHex('abc123'); - - assert.equal(true, result); - done(); - }); - - it('isValidHex - [\'fff\' - true]', function (done) { - - var result = helpers.isValidHex('fff'); - - assert.equal(true, result); - done(); - }); - - it('isValidHex - [\'123\' - true]', function (done) { - - var result = helpers.isValidHex('123'); - - assert.equal(true, result); - done(); - }); - - it('isValidHex - [\'efghij\' - false]', function (done) { - - var result = helpers.isValidHex('efghij'); - - assert.equal(false, result); - done(); - }); - - it('isValidHex - [\'thj\' - false]', function (done) { - - var result = helpers.isValidHex('thj'); - - assert.equal(false, result); - done(); - }); - - it('isValidHex - [\'ab\' - false]', function (done) { - - var result = helpers.isValidHex('ab'); - - assert.equal(false, result); - done(); - }); - - it('isValidHex - [\'12\' - false]', function (done) { - - var result = helpers.isValidHex('12'); - - assert.equal(false, result); - done(); - }); - - it('isValidHex - [\'1234567\' - false]', function (done) { - - var result = helpers.isValidHex('1234567'); - - assert.equal(false, result); - done(); - }); - - it('isValidHex - [\'abc1234\' - false]', function (done) { - - var result = helpers.isValidHex('abc1234'); - - assert.equal(false, result); - done(); - }); - - ////////////////////////////// - // loadConfigFile - ////////////////////////////// - - it('loadConfigFile', function (done) { - - var result = helpers.loadConfigFile('../../tests/testFile.txt'), - expect = 'This is a test file that test\'s the loadConfigFile helper function.'; - - assert.equal(expect, result); - done(); - }); - - ////////////////////////////// - // hasEOL - ////////////////////////////// - - it('hasEOL - [\'\\n\' - true]', function (done) { - - var result = helpers.hasEOL('\n'); - - assert.equal(true, result); - done(); - }); - - it('hasEOL - [\'\\r\\n\' - true]', function (done) { - - var result = helpers.hasEOL('\r\n'); - - assert.equal(true, result); - done(); - }); - - ////////////////////////////// - // isEmptyLine - ////////////////////////////// - - it('isEmptyLine - [\'\\n\\n\' - true]', function (done) { - - var result = helpers.isEmptyLine('\n\n'); - - assert.equal(true, result); - done(); - }); - - it('isEmptyLine - [\'\\r\\n\\r\\n\' - true]', function (done) { - - var result = helpers.isEmptyLine('\r\n\r\n'); - - assert.equal(true, result); - done(); - }); - - it('isEmptyLine - [\'\\n \\n\' - false]', function (done) { - - var result = helpers.isEmptyLine('\n \n'); - - assert.equal(false, result); - done(); - }); - - it('isEmptyLine - [\'\\r\\nabc\\r\\n\' - false]', function (done) { - - var result = helpers.isEmptyLine('\r\nabc\r\n'); - - assert.equal(false, result); - done(); - }); - - ////////////////////////////// - // Strip quotes - ////////////////////////////// - - it('stripQuotes - [double quotes]', function (done) { - var result = helpers.stripQuotes('"This is a string"'), - expect = 'This is a string'; - - assert.equal(expect, result); - done(); - }); - - it('stripQuotes - [single quotes]', function (done) { - var result = helpers.stripQuotes('\'This is a string\''), - expect = 'This is a string'; - - assert.equal(expect, result); - done(); - }); - - ////////////////////////////// - // stripPrefix - ////////////////////////////// - - it('stripPrefix - [-webkit-transition - transition]', function (done) { - - var result = helpers.stripPrefix('-webkit-transition'); - - assert.equal('transition', result); - done(); - }); - - it('stripPrefix - [-moz-transition - transition]', function (done) { - - var result = helpers.stripPrefix('-moz-transition'); - - assert.equal('transition', result); - done(); - }); - - it('stripPrefix - [-webkit-border-color - border-color]', function (done) { - - var result = helpers.stripPrefix('-webkit-border-color'); - - assert.equal('border-color', result); - done(); - }); - - it('stripPrefix - [-moz-osx-font-smoothing - font-smoothing]', function (done) { - - var result = helpers.stripPrefix('-moz-osx-font-smoothing'); - - assert.equal('font-smoothing', result); - done(); - }); - - it('stripPrefix - [@-webkit-keyframes - @keyframes]', function (done) { - - var result = helpers.stripPrefix('@-webkit-keyframes'); - - assert.equal('@keyframes', result); - done(); - }); - - ////////////////////////////// - // stripLastSpace - ////////////////////////////// - - it('stripLastSpace - [\'selector \']', function (done) { - - var result = helpers.stripLastSpace('selector '); - - assert.equal('selector', result); - done(); - }); - - it('stripLastSpace - [\'selector test \']', function (done) { - - var result = helpers.stripLastSpace('selector test'); - - assert.equal('selector test', result); - done(); - }); - - it('stripLastSpace - [\'selector\']', function (done) { - - var result = helpers.stripLastSpace('selector'); - - assert.equal('selector', result); - done(); - }); - - it('stripLastSpace - [\'selector test\']', function (done) { - - var result = helpers.stripLastSpace('selector test'); - - assert.equal('selector test', result); - done(); - }); - - ////////////////////////////// - // isNestable - ////////////////////////////// - - it('isNestable - nest attribute in selector', function (done) { - var elements = ['selector', 'class', 'id', 'attribute'], - nestable = ['class', 'selector', 'attribute'], - previous = 'selector', - current = 'attribute'; - - var result = helpers.isNestable(current, previous, elements, nestable); - - assert.equal(true, result); - done(); - }); - - it('isNestable - nest id in class', function (done) { - var elements = ['selector', 'class', 'id', 'attribute'], - nestable = ['class', 'selector', 'attribute'], - previous = 'class', - current = 'id'; - - var result = helpers.isNestable(current, previous, elements, nestable); - - assert.equal(false, result); - done(); - }); - - ////////////////////////////// - // attemptTraversal - ////////////////////////////// - it('attemptTraversal - SCSS - collect all nodes', function () { - var stylesheet = gonzales.parse(['', - '.a {', - ' .b {', - ' color: red;', - ' }', - ' .c {', - ' color: blue;', - ' }', - ' .d {', - ' color: green;', - ' }', - '}'].join('\n'), { syntax: 'scss' }); - - assert.deepEqual( - helpers.attemptTraversal(stylesheet, ['ruleset', 'block', 'ruleset', 'block', 'declaration', 'property', 'ident']) - .map(function (node) { - return node.content; - }), - ['color', 'color', 'color'] - ); - }); - - it('attemptTraversal - SCSS - empty array when traversal fails', function () { - var stylesheet = gonzales.parse(['', - '.a {', - ' color: red;', - '}'].join('\n'), { syntax: 'scss' }); - - assert.equal( - helpers.attemptTraversal(stylesheet, ['ruleset', 'block', 'ruleset', 'block']).length, - 0 - ); - }); - - it('attemptTraversal - Sass - collect all nodes', function () { - var stylesheet = gonzales.parse(['', - '.a', - ' .b', - ' color: red', - ' .c', - ' color: blue', - ' .d', - ' color: green', - ''].join('\n'), { syntax: 'sass' }); - - assert.deepEqual( - helpers.attemptTraversal(stylesheet, ['ruleset', 'block', 'ruleset', 'block', 'declaration', 'property', 'ident']) - .map(function (node) { - return node.content; - }), - ['color', 'color', 'color'] - ); - }); - - it('attemptTraversal - Sass - empty array when traversal fails', function () { - var stylesheet = gonzales.parse(['', - '.a', - ' color: red', - ''].join('\n'), { syntax: 'sass' }); - - assert.equal( - helpers.attemptTraversal(stylesheet, ['ruleset', 'block', 'ruleset', 'block']).length, - 0 - ); - }); - - ////////////////////////////// - // collectSuffixExtensions - ////////////////////////////// - it('collectSuffixExtensions - SCSS - no extensions', function () { - var ruleset = gonzales.parse(['', - '.a {', - ' .b {', - ' .c {', - ' width: 2px;', - ' }', - ' }', - '}'].join('\n'), { syntax: 'scss' }) - .first('ruleset'); - - assert.deepEqual( - helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { - return node.content; - }), - ['a'] - ); - }); - - it('collectSuffixExtensions - SCSS - BEM example', function () { - var ruleset = gonzales.parse(['', - '.block {', - ' &__element {', - ' &--modifier {', - ' width: 2px;', - ' }', - ' }', - '}'].join('\n'), { syntax: 'scss' }) - .first('ruleset'); - - assert.deepEqual( - helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { - return node.content; - }), - ['block', 'block__element', 'block__element--modifier'] - ); - }); - - it('collectSuffixExtensions - SCSS - many parents and children', function () { - var ruleset = gonzales.parse(['', - '.a,', - '.b {', - ' &c,', - ' &d {', - ' &e,', - ' &f {', - ' width: 2px;', - ' }', - ' }', - '}'].join('\n'), { syntax: 'scss' }) - .first('ruleset'); - - assert.deepEqual( - helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { - return node.content; - }), - ['a', 'b', 'ac', 'bc', 'ad', 'bd', 'ace', 'bce', 'ade', 'bde', 'acf', 'bcf', 'adf', 'bdf'] - ); - }); - - it('collectSuffixExtensions - Sass - no extensions', function () { - var ruleset = gonzales.parse(['', - '.a', - ' .b', - ' .c', - ' width: 2px', - ''].join('\n'), { syntax: 'sass' }) - .first('ruleset'); - - assert.deepEqual( - helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { - return node.content; - }), - ['a'] - ); - }); - - it('collectSuffixExtensions - Sass - BEM example', function () { - var ruleset = gonzales.parse(['', - '.block', - ' &__element', - ' &--modifier', - ' width: 2px', - ''].join('\n'), { syntax: 'sass' }) - .first('ruleset'); - - assert.deepEqual( - helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { - return node.content; - }), - ['block', 'block__element', 'block__element--modifier'] - ); - }); - - it('collectSuffixExtensions - Sass - many parents and children', function () { - var ruleset = gonzales.parse(['', - '.a, .b', - ' &c, &d', - ' &e, &f', - ' width: 2px', - ''].join('\n'), { syntax: 'sass' }) - .first('ruleset'); - - assert.deepEqual( - helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { - return node.content; - }), - ['a', 'b', 'ac', 'bc', 'ad', 'bd', 'ace', 'bce', 'ade', 'bde', 'acf', 'bcf', 'adf', 'bdf'] - ); - }); - - ////////////////////////////// - // isPartialStringMatch - ////////////////////////////// - it('isPartialStringMatch - [needle: \'foo\', haystack: [\'foo\'] - true]', function () { - var result = helpers.isPartialStringMatch('foo', ['foo']); - - assert.equal(true, result); - }); - - it('isPartialStringMatch - [needle: \'bar\', haystack: [\'foo\'] - false]', function () { - var result = helpers.isPartialStringMatch('bar', ['foo']); - - assert.equal(false, result); - }); - - it('isPartialStringMatch - [needle: \'foo\', haystack: [\'foo-bar\'] - true]', function () { - var result = helpers.isPartialStringMatch('foo', ['foo-bar']); - - assert.equal(true, result); - }); - - it('isPartialStringMatch - [needle: \'bar\', haystack: [\'foo-bar\'] - true]', function () { - var result = helpers.isPartialStringMatch('bar', ['foo-bar']); - - assert.equal(true, result); - }); - - it('isPartialStringMatch - [needle: \'baz\', haystack: [\'foo\', \'bar\'] - false]', function () { - var result = helpers.isPartialStringMatch('baz', ['foo', 'bar']); - - assert.equal(false, result); - }); - - it('isPartialStringMatch - [needle: \'baz\', haystack: [\'foo\', \'bar\', \'baz\'] - true]', function () { - var result = helpers.isPartialStringMatch('baz', ['foo', 'bar', 'baz']); - - assert.equal(true, result); - }); - - it('isPartialStringMatch - [needle: \'foo-bar\', haystack: [\'foo\', \'bar\'] - false]', function () { - var result = helpers.isPartialStringMatch('foo-bar', ['foo', 'bar']); - - assert.equal(false, result); - }); - - it('isPartialStringMatch - [needle: \'foo-bar\', haystack: [\'baz\', \'qux\', \'foo\', \'bar\'] - false]', function () { - var result = helpers.isPartialStringMatch('foo-bar', ['baz', 'qux', 'foo', 'bar']); - - assert.equal(false, result); - }); -}); diff --git a/tests/helpers/addUnique.js b/tests/helpers/addUnique.js new file mode 100644 index 00000000..6d0712df --- /dev/null +++ b/tests/helpers/addUnique.js @@ -0,0 +1,75 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +var classBlock = + { + type: 'class', + content: + [ + { + type: 'ident', + content: 'foo', + syntax: 'scss', + start: { line: 5, column: 2 }, + end: { line: 5, column: 4 }, + indexHasChanged: [ 0 ] + } + ], + syntax: 'scss', + start: { line: 5, column: 1 }, + end: { line: 5, column: 4 }, + indexHasChanged: [ 0 ] + }, + + otherClassBlock = + { + type: 'class', + content: + [ + { + type: 'ident', + content: 'test', + syntax: 'scss', + start: { line: 9, column: 2 }, + end: { line: 9, column: 5 }, + indexHasChanged: [ 0 ] + } + ], + syntax: 'scss', + start: { line: 9, column: 1 }, + end: { line: 9, column: 5 }, + indexHasChanged: [ 0 ] + }; + +describe('helpers - addUnique', function () { + + ////////////////////////////// + // addUnique + ////////////////////////////// + + it('addUnique should return a modified results array - [objA !== objB]', function (done) { + + var ledger = []; + ledger.push(classBlock); + + var result = helpers.addUnique(ledger, otherClassBlock); + + ledger.push(otherClassBlock); + + assert.equal(ledger, result); + done(); + }); + + it('addUnique should return an unmodified results array - [objA === objB]', function (done) { + + var ledger = []; + ledger.push(classBlock); + + var result = helpers.addUnique(ledger, classBlock); + + assert.equal(ledger, result); + done(); + }); +}); diff --git a/tests/helpers/attemptTraversal.js b/tests/helpers/attemptTraversal.js new file mode 100644 index 00000000..57444825 --- /dev/null +++ b/tests/helpers/attemptTraversal.js @@ -0,0 +1,78 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'), + gonzales = require('gonzales-pe-sl'); + +describe('helpers - attemptTraversal', function () { + + ////////////////////////////// + // attemptTraversal + ////////////////////////////// + it('attemptTraversal - SCSS - collect all nodes', function () { + var stylesheet = gonzales.parse(['', + '.a {', + ' .b {', + ' color: red;', + ' }', + ' .c {', + ' color: blue;', + ' }', + ' .d {', + ' color: green;', + ' }', + '}'].join('\n'), { syntax: 'scss' }); + + assert.deepEqual( + helpers.attemptTraversal(stylesheet, ['ruleset', 'block', 'ruleset', 'block', 'declaration', 'property', 'ident']) + .map(function (node) { + return node.content; + }), + ['color', 'color', 'color'] + ); + }); + + it('attemptTraversal - SCSS - empty array when traversal fails', function () { + var stylesheet = gonzales.parse(['', + '.a {', + ' color: red;', + '}'].join('\n'), { syntax: 'scss' }); + + assert.equal( + helpers.attemptTraversal(stylesheet, ['ruleset', 'block', 'ruleset', 'block']).length, + 0 + ); + }); + + it('attemptTraversal - Sass - collect all nodes', function () { + var stylesheet = gonzales.parse(['', + '.a', + ' .b', + ' color: red', + ' .c', + ' color: blue', + ' .d', + ' color: green', + ''].join('\n'), { syntax: 'sass' }); + + assert.deepEqual( + helpers.attemptTraversal(stylesheet, ['ruleset', 'block', 'ruleset', 'block', 'declaration', 'property', 'ident']) + .map(function (node) { + return node.content; + }), + ['color', 'color', 'color'] + ); + }); + + it('attemptTraversal - Sass - empty array when traversal fails', function () { + var stylesheet = gonzales.parse(['', + '.a', + ' color: red', + ''].join('\n'), { syntax: 'sass' }); + + assert.equal( + helpers.attemptTraversal(stylesheet, ['ruleset', 'block', 'ruleset', 'block']).length, + 0 + ); + }); +}); diff --git a/tests/helpers/collectSuffixExtensions.js b/tests/helpers/collectSuffixExtensions.js new file mode 100644 index 00000000..2b19266c --- /dev/null +++ b/tests/helpers/collectSuffixExtensions.js @@ -0,0 +1,123 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'), + gonzales = require('gonzales-pe-sl'); + +describe('helpers - collectSuffixExtensions', function () { + + ////////////////////////////// + // collectSuffixExtensions + ////////////////////////////// + + it('collectSuffixExtensions - SCSS - no extensions', function () { + var ruleset = gonzales.parse(['', + '.a {', + ' .b {', + ' .c {', + ' width: 2px;', + ' }', + ' }', + '}'].join('\n'), { syntax: 'scss' }) + .first('ruleset'); + + assert.deepEqual( + helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { + return node.content; + }), + ['a'] + ); + }); + + it('collectSuffixExtensions - SCSS - BEM example', function () { + var ruleset = gonzales.parse(['', + '.block {', + ' &__element {', + ' &--modifier {', + ' width: 2px;', + ' }', + ' }', + '}'].join('\n'), { syntax: 'scss' }) + .first('ruleset'); + + assert.deepEqual( + helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { + return node.content; + }), + ['block', 'block__element', 'block__element--modifier'] + ); + }); + + it('collectSuffixExtensions - SCSS - many parents and children', function () { + var ruleset = gonzales.parse(['', + '.a,', + '.b {', + ' &c,', + ' &d {', + ' &e,', + ' &f {', + ' width: 2px;', + ' }', + ' }', + '}'].join('\n'), { syntax: 'scss' }) + .first('ruleset'); + + assert.deepEqual( + helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { + return node.content; + }), + ['a', 'b', 'ac', 'bc', 'ad', 'bd', 'ace', 'bce', 'ade', 'bde', 'acf', 'bcf', 'adf', 'bdf'] + ); + }); + + it('collectSuffixExtensions - Sass - no extensions', function () { + var ruleset = gonzales.parse(['', + '.a', + ' .b', + ' .c', + ' width: 2px', + ''].join('\n'), { syntax: 'sass' }) + .first('ruleset'); + + assert.deepEqual( + helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { + return node.content; + }), + ['a'] + ); + }); + + it('collectSuffixExtensions - Sass - BEM example', function () { + var ruleset = gonzales.parse(['', + '.block', + ' &__element', + ' &--modifier', + ' width: 2px', + ''].join('\n'), { syntax: 'sass' }) + .first('ruleset'); + + assert.deepEqual( + helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { + return node.content; + }), + ['block', 'block__element', 'block__element--modifier'] + ); + }); + + it('collectSuffixExtensions - Sass - many parents and children', function () { + var ruleset = gonzales.parse(['', + '.a, .b', + ' &c, &d', + ' &e, &f', + ' width: 2px', + ''].join('\n'), { syntax: 'sass' }) + .first('ruleset'); + + assert.deepEqual( + helpers.collectSuffixExtensions(ruleset, 'class').map(function (node) { + return node.content; + }), + ['a', 'b', 'ac', 'bc', 'ad', 'bd', 'ace', 'bce', 'ade', 'bde', 'acf', 'bcf', 'adf', 'bdf'] + ); + }); +}); diff --git a/tests/helpers/hasEOL.js b/tests/helpers/hasEOL.js new file mode 100644 index 00000000..4490a9fc --- /dev/null +++ b/tests/helpers/hasEOL.js @@ -0,0 +1,27 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - hasEOL', function () { + + ////////////////////////////// + // hasEOL + ////////////////////////////// + + it('hasEOL - [\'\\n\' - true]', function (done) { + + var result = helpers.hasEOL('\n'); + + assert.equal(true, result); + done(); + }); + + it('hasEOL - [\'\\r\\n\' - true]', function (done) { + + var result = helpers.hasEOL('\r\n'); + + assert.equal(true, result); + done(); + }); +}); diff --git a/tests/helpers/helpers.js b/tests/helpers/helpers.js new file mode 100644 index 00000000..674a70b5 --- /dev/null +++ b/tests/helpers/helpers.js @@ -0,0 +1,18 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers', function () { + ////////////////////////////// + // Helpers is loaded + ////////////////////////////// + + it('helpers should not be undefined', function (done) { + + var loaded = typeof (helpers) === 'object' ? true : false; + + assert.equal(true, loaded); + done(); + }); +}); diff --git a/tests/helpers/isCamelCase.js b/tests/helpers/isCamelCase.js new file mode 100644 index 00000000..ec68785b --- /dev/null +++ b/tests/helpers/isCamelCase.js @@ -0,0 +1,51 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isCamelCase', function () { + + ////////////////////////////// + // isCamelCase + ////////////////////////////// + + it('isCamelCase - [\'TEST\' - false]', function (done) { + + var result = helpers.isCamelCase('TEST'); + + assert.equal(false, result); + done(); + }); + + it('isCamelCase - [\'test\' - true]', function (done) { + + var result = helpers.isCamelCase('test'); + + assert.equal(true, result); + done(); + }); + + it('isCamelCase - [abcDEF - true]', function (done) { + + var result = helpers.isCamelCase('abcDEF'); + + assert.equal(true, result); + done(); + }); + + it('isCamelCase - [\'123\' - false]', function (done) { + + var result = helpers.isCamelCase('123'); + + assert.equal(false, result); + done(); + }); + + it('isCamelCase - [\'aBcDeF\' - true]', function (done) { + + var result = helpers.isCamelCase('aBcDeF'); + + assert.equal(true, result); + done(); + }); +}); diff --git a/tests/helpers/isEmptyLine.js b/tests/helpers/isEmptyLine.js new file mode 100644 index 00000000..0bf8edc8 --- /dev/null +++ b/tests/helpers/isEmptyLine.js @@ -0,0 +1,43 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isEmptyLine', function () { + + ////////////////////////////// + // isEmptyLine + ////////////////////////////// + + it('isEmptyLine - [\'\\n\\n\' - true]', function (done) { + + var result = helpers.isEmptyLine('\n\n'); + + assert.equal(true, result); + done(); + }); + + it('isEmptyLine - [\'\\r\\n\\r\\n\' - true]', function (done) { + + var result = helpers.isEmptyLine('\r\n\r\n'); + + assert.equal(true, result); + done(); + }); + + it('isEmptyLine - [\'\\n \\n\' - false]', function (done) { + + var result = helpers.isEmptyLine('\n \n'); + + assert.equal(false, result); + done(); + }); + + it('isEmptyLine - [\'\\r\\nabc\\r\\n\' - false]', function (done) { + + var result = helpers.isEmptyLine('\r\nabc\r\n'); + + assert.equal(false, result); + done(); + }); +}); diff --git a/tests/helpers/isEqual.js b/tests/helpers/isEqual.js new file mode 100644 index 00000000..a3970d16 --- /dev/null +++ b/tests/helpers/isEqual.js @@ -0,0 +1,113 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +var classBlock = + { + type: 'class', + content: + [ + { + type: 'ident', + content: 'foo', + syntax: 'scss', + start: { line: 5, column: 2 }, + end: { line: 5, column: 4 }, + indexHasChanged: [ 0 ] + } + ], + syntax: 'scss', + start: { line: 5, column: 1 }, + end: { line: 5, column: 4 }, + indexHasChanged: [ 0 ] + }; + +describe('helpers - isEqual', function () { + ////////////////////////////// + // isEqual + ////////////////////////////// + + it('isEqual should return true', function (done) { + + var testBlock = + { + type: 'class', + content: + [ + { + type: 'ident', + content: 'foo', + syntax: 'scss', + start: { line: 5, column: 2 }, + end: { line: 5, column: 4 }, + indexHasChanged: [ 0 ] + } + ], + syntax: 'scss', + start: { line: 5, column: 1 }, + end: { line: 5, column: 4 }, + indexHasChanged: [ 0 ] + }, + result = helpers.isEqual(classBlock, testBlock); + + assert.equal(true, result); + done(); + }); + + it('isEqual should return false - [objA.type !== objB.type]', function (done) { + + var testBlock = { + type: 'block', + start: {line: 5}, + end: {line: 5}, + content: [1] + }, + result = helpers.isEqual(classBlock, testBlock); + + assert.equal(false, result); + done(); + }); + + it('isEqual should return false - [objA.start.line !== objB.start.line]', function (done) { + + var testBlock = { + type: 'class', + start: {line: 7}, + end: {line: 5}, + content: [1] + }, + result = helpers.isEqual(classBlock, testBlock); + + assert.equal(false, result); + done(); + }); + + it('isEqual should return false - [objA.end.line !== objB.end.line]', function (done) { + + var testBlock = { + type: 'class', + start: {line: 5}, + end: {line: 7}, + content: [1] + }, + result = helpers.isEqual(classBlock, testBlock); + + assert.equal(false, result); + done(); + }); + + it('isEqual should return false - [objA.content.length !== objB.content.length]', function (done) { + + var testBlock = { + type: 'class', + start: {line: 5}, + end: {line: 5}, + content: [1, 2, 3, 4] + }, + result = helpers.isEqual(classBlock, testBlock); + + assert.equal(false, result); + done(); + }); +}); diff --git a/tests/helpers/isHyphenatedBEM.js b/tests/helpers/isHyphenatedBEM.js new file mode 100644 index 00000000..87fc060b --- /dev/null +++ b/tests/helpers/isHyphenatedBEM.js @@ -0,0 +1,91 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isHyphenatedBEM', function () { + + ////////////////////////////// + // isHyphenatedBEM + ////////////////////////////// + + it('isHyphenatedBEM - [\'TEST\' - false]', function (done) { + + var result = helpers.isHyphenatedBEM('TEST'); + + assert.equal(false, result); + done(); + }); + + it('isHyphenatedBEM - [\'test\' - true]', function (done) { + + var result = helpers.isHyphenatedBEM('test'); + + assert.equal(true, result); + done(); + }); + + it('isHyphenatedBEM - [abcDEF - false]', function (done) { + + var result = helpers.isHyphenatedBEM('abcDEF'); + + assert.equal(false, result); + done(); + }); + + it('isHyphenatedBEM - [\'abc---def\' - false]', function (done) { + + var result = helpers.isHyphenatedBEM('abc---def'); + + assert.equal(false, result); + done(); + }); + + it('isHyphenatedBEM - [\'abc___def\' - false]', function (done) { + + var result = helpers.isHyphenatedBEM('abc___def'); + + assert.equal(false, result); + done(); + }); + + it('isHyphenatedBEM - [\'ab__cd__ef\' - true]', function (done) { + + var result = helpers.isHyphenatedBEM('ab__cd__ef'); + + assert.equal(true, result); + done(); + }); + + it('isHyphenatedBEM - [\'ab__cd--ef\' - true]', function (done) { + + var result = helpers.isHyphenatedBEM('ab__cd--ef'); + + assert.equal(true, result); + done(); + }); + + it('isHyphenatedBEM - [\'abc_def\' - false]', function (done) { + + var result = helpers.isHyphenatedBEM('abc_def'); + + assert.equal(false, result); + done(); + }); + + it('isHyphenatedBEM - [\'abc-def\' - true]', function (done) { + + var result = helpers.isHyphenatedBEM('abc-def'); + + assert.equal(true, result); + done(); + }); + + it('isHyphenatedBEM - [\'ab-cd__ef\' - true]', function (done) { + + var result = helpers.isHyphenatedBEM('ab-cd__ef'); + + assert.equal(true, result); + done(); + }); +}); diff --git a/tests/helpers/isHyphenatedLowerCase.js b/tests/helpers/isHyphenatedLowerCase.js new file mode 100644 index 00000000..6f979667 --- /dev/null +++ b/tests/helpers/isHyphenatedLowerCase.js @@ -0,0 +1,75 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isHyphenatedLowerCase', function () { + + ////////////////////////////// + // isHyphenatedLowercase + ////////////////////////////// + + it('isHyphenatedLowercase - [\'abc-def\' - true]', function (done) { + + var result = helpers.isHyphenatedLowercase('abc-def'); + + assert.equal(true, result); + done(); + }); + + it('isHyphenatedLowercase - [\'TEST\' - false]', function (done) { + + var result = helpers.isHyphenatedLowercase('TEST'); + + assert.equal(false, result); + done(); + }); + + it('isHyphenatedLowercase - [\'test\' - true]', function (done) { + + var result = helpers.isHyphenatedLowercase('test'); + + assert.equal(true, result); + done(); + }); + + it('isHyphenatedLowercase - [abcDEF - false]', function (done) { + + var result = helpers.isHyphenatedLowercase('abcDEF'); + + assert.equal(false, result); + done(); + }); + + it('isHyphenatedLowercase - [\'123\' - true]', function (done) { + + var result = helpers.isHyphenatedLowercase('123'); + + assert.equal(true, result); + done(); + }); + + it('isHyphenatedLowercase - [\'aBcDeF\' - false]', function (done) { + + var result = helpers.isHyphenatedLowercase('aBcDeF'); + + assert.equal(false, result); + done(); + }); + + it('isHyphenatedLowercase - [\'abc-\\31\\32\\33\' - false]', function (done) { + + var result = helpers.isHyphenatedLowercase('abc-\\31\\32\\33'); + + assert.equal(false, result); + done(); + }); + + it('isHyphenatedLowercase - [\'abc-\\+\\*\' - false]', function (done) { + + var result = helpers.isHyphenatedLowercase('abc-\\+\\*'); + + assert.equal(false, result); + done(); + }); +}); diff --git a/tests/helpers/isLowerCase.js b/tests/helpers/isLowerCase.js new file mode 100644 index 00000000..ae55041f --- /dev/null +++ b/tests/helpers/isLowerCase.js @@ -0,0 +1,43 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isLowerCase', function () { + + ////////////////////////////// + // isLowerCase + ////////////////////////////// + + it('isLowerCase - [\'TEST\' - false]', function (done) { + + var result = helpers.isLowerCase('TEST'); + + assert.equal(false, result); + done(); + }); + + it('isLowerCase - [\'test\' - true]', function (done) { + + var result = helpers.isLowerCase('test'); + + assert.equal(true, result); + done(); + }); + + it('isLowerCase - [abcDEF - false]', function (done) { + + var result = helpers.isLowerCase('abcDEF'); + + assert.equal(false, result); + done(); + }); + + it('isLowerCase - [\'123\' - false]', function (done) { + + var result = helpers.isLowerCase('123'); + + assert.equal(false, result); + done(); + }); +}); diff --git a/tests/helpers/isNestable.js b/tests/helpers/isNestable.js new file mode 100644 index 00000000..5474bd72 --- /dev/null +++ b/tests/helpers/isNestable.js @@ -0,0 +1,35 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isNestable', function () { + + ////////////////////////////// + // isNestable + ////////////////////////////// + + it('isNestable - nest attribute in selector', function (done) { + var elements = ['selector', 'class', 'id', 'attribute'], + nestable = ['class', 'selector', 'attribute'], + previous = 'selector', + current = 'attribute'; + + var result = helpers.isNestable(current, previous, elements, nestable); + + assert.equal(true, result); + done(); + }); + + it('isNestable - nest id in class', function (done) { + var elements = ['selector', 'class', 'id', 'attribute'], + nestable = ['class', 'selector', 'attribute'], + previous = 'class', + current = 'id'; + + var result = helpers.isNestable(current, previous, elements, nestable); + + assert.equal(false, result); + done(); + }); +}); diff --git a/tests/helpers/isNumber.js b/tests/helpers/isNumber.js new file mode 100644 index 00000000..dc56ad31 --- /dev/null +++ b/tests/helpers/isNumber.js @@ -0,0 +1,44 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isNumber', function () { + + ////////////////////////////// + // isNumber + ////////////////////////////// + + it('isNumber - [10 - true]', function (done) { + + var result = helpers.isNumber(10); + + assert.equal(true, result); + done(); + }); + + it('isNumber - [\'10\' - true]', function (done) { + + var result = helpers.isNumber('10'); + + assert.equal(true, result); + done(); + }); + + it('isNumber - [\'ten\' - false]', function (done) { + + var result = helpers.isNumber('ten'); + + assert.equal(false, result); + done(); + }); + + it('isNumber - [\'ff00ff\' - false]', function (done) { + + var result = helpers.isNumber('ff00ff'); + + assert.equal(false, result); + done(); + }); + +}); diff --git a/tests/helpers/isPartialStringMatch.js b/tests/helpers/isPartialStringMatch.js new file mode 100644 index 00000000..b4167e8d --- /dev/null +++ b/tests/helpers/isPartialStringMatch.js @@ -0,0 +1,59 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isPartialStringMatch', function () { + + ////////////////////////////// + // isPartialStringMatch + ////////////////////////////// + + it('isPartialStringMatch - [needle: \'foo\', haystack: [\'foo\'] - true]', function () { + var result = helpers.isPartialStringMatch('foo', ['foo']); + + assert.equal(true, result); + }); + + it('isPartialStringMatch - [needle: \'bar\', haystack: [\'foo\'] - false]', function () { + var result = helpers.isPartialStringMatch('bar', ['foo']); + + assert.equal(false, result); + }); + + it('isPartialStringMatch - [needle: \'foo\', haystack: [\'foo-bar\'] - true]', function () { + var result = helpers.isPartialStringMatch('foo', ['foo-bar']); + + assert.equal(true, result); + }); + + it('isPartialStringMatch - [needle: \'bar\', haystack: [\'foo-bar\'] - true]', function () { + var result = helpers.isPartialStringMatch('bar', ['foo-bar']); + + assert.equal(true, result); + }); + + it('isPartialStringMatch - [needle: \'baz\', haystack: [\'foo\', \'bar\'] - false]', function () { + var result = helpers.isPartialStringMatch('baz', ['foo', 'bar']); + + assert.equal(false, result); + }); + + it('isPartialStringMatch - [needle: \'baz\', haystack: [\'foo\', \'bar\', \'baz\'] - true]', function () { + var result = helpers.isPartialStringMatch('baz', ['foo', 'bar', 'baz']); + + assert.equal(true, result); + }); + + it('isPartialStringMatch - [needle: \'foo-bar\', haystack: [\'foo\', \'bar\'] - false]', function () { + var result = helpers.isPartialStringMatch('foo-bar', ['foo', 'bar']); + + assert.equal(false, result); + }); + + it('isPartialStringMatch - [needle: \'foo-bar\', haystack: [\'baz\', \'qux\', \'foo\', \'bar\'] - false]', function () { + var result = helpers.isPartialStringMatch('foo-bar', ['baz', 'qux', 'foo', 'bar']); + + assert.equal(false, result); + }); +}); diff --git a/tests/helpers/isPascalCase.js b/tests/helpers/isPascalCase.js new file mode 100644 index 00000000..111848ab --- /dev/null +++ b/tests/helpers/isPascalCase.js @@ -0,0 +1,51 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isPascalCase', function () { + + ////////////////////////////// + // isPascalCase + ////////////////////////////// + + it('isPascalCase - [\'TEST\' - true]', function (done) { + + var result = helpers.isPascalCase('TEST'); + + assert.equal(true, result); + done(); + }); + + it('isPascalCase - [\'test\' - false]', function (done) { + + var result = helpers.isPascalCase('test'); + + assert.equal(false, result); + done(); + }); + + it('isPascalCase - [AbcDEF - true]', function (done) { + + var result = helpers.isPascalCase('AbcDEF'); + + assert.equal(true, result); + done(); + }); + + it('isPascalCase - [\'123\' - false]', function (done) { + + var result = helpers.isPascalCase('123'); + + assert.equal(false, result); + done(); + }); + + it('isPascalCase - [\'ABcDeF\' - true]', function (done) { + + var result = helpers.isPascalCase('ABcDeF'); + + assert.equal(true, result); + done(); + }); +}); diff --git a/tests/helpers/isSnakeCase.js b/tests/helpers/isSnakeCase.js new file mode 100644 index 00000000..285da4e4 --- /dev/null +++ b/tests/helpers/isSnakeCase.js @@ -0,0 +1,59 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isSnakeCase', function () { + + ////////////////////////////// + // isSnakeCase + ////////////////////////////// + + it('isSnakeCase - [\'TEST\' - false]', function (done) { + + var result = helpers.isSnakeCase('TEST'); + + assert.equal(false, result); + done(); + }); + + it('isSnakeCase - [\'test\' - true]', function (done) { + + var result = helpers.isSnakeCase('test'); + + assert.equal(true, result); + done(); + }); + + it('isSnakeCase - [abcDEF - false]', function (done) { + + var result = helpers.isSnakeCase('abcDEF'); + + assert.equal(false, result); + done(); + }); + + it('isSnakeCase - [\'123\' - true]', function (done) { + + var result = helpers.isSnakeCase('123'); + + assert.equal(true, result); + done(); + }); + + it('isSnakeCase - [\'ab_cd_ef\' - true]', function (done) { + + var result = helpers.isSnakeCase('ab_cd_ef'); + + assert.equal(true, result); + done(); + }); + + it('isSnakeCase - [\'ab_cd-ef\' - false]', function (done) { + + var result = helpers.isSnakeCase('ab_cd-ef'); + + assert.equal(false, result); + done(); + }); +}); diff --git a/tests/helpers/isStrictBEM.js b/tests/helpers/isStrictBEM.js new file mode 100644 index 00000000..6c474519 --- /dev/null +++ b/tests/helpers/isStrictBEM.js @@ -0,0 +1,115 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isStrictBEM', function () { + + ////////////////////////////// + // isStrictBEM + ////////////////////////////// + + it('isStrictBEM - [\'TEST\' - false]', function (done) { + + var result = helpers.isStrictBEM('TEST'); + + assert.equal(false, result); + done(); + }); + + it('isStrictBEM - [\'test\' - true]', function (done) { + + var result = helpers.isStrictBEM('test'); + + assert.equal(true, result); + done(); + }); + + it('isStrictBEM - [abcDEF - false]', function (done) { + + var result = helpers.isStrictBEM('abcDEF'); + + assert.equal(false, result); + done(); + }); + + it('isStrictBEM - [\'abc---def\' - false]', function (done) { + + var result = helpers.isStrictBEM('abc---def'); + + assert.equal(false, result); + done(); + }); + + it('isStrictBEM - [\'abc___def\' - false]', function (done) { + + var result = helpers.isStrictBEM('abc___def'); + + assert.equal(false, result); + done(); + }); + + it('isStrictBEM - [\'ab__cd__ef\' - false]', function (done) { + + var result = helpers.isStrictBEM('ab__cd__ef'); + + assert.equal(false, result); + done(); + }); + + it('isStrictBEM - [\'ab__cd--ef\' - false]', function (done) { + + var result = helpers.isStrictBEM('ab__cd--ef'); + + assert.equal(false, result); + done(); + }); + + it('isStrictBEM - [\'ab__cd_ef_gh\' - true]', function (done) { + + var result = helpers.isStrictBEM('ab__cd_ef_gh'); + + assert.equal(true, result); + done(); + }); + + it('isStrictBEM - [\'ab-cd-ef__gh-ij-kl_mn-op-qr_st-uv-wx\' - true]', function (done) { + + var result = helpers.isStrictBEM('ab-cd-ef__gh-ij-kl_mn-op-qr_st-uv-wx'); + + assert.equal(true, result); + done(); + }); + + it('isStrictBEM - [\'ab__cd_ef_gh_ij\' - false]', function (done) { + + var result = helpers.isStrictBEM('ab__cd_ef_gh_ij'); + + assert.equal(false, result); + done(); + }); + + it('isStrictBEM - [\'abc_def\' - false]', function (done) { + + var result = helpers.isStrictBEM('abc_def'); + + assert.equal(false, result); + done(); + }); + + it('isStrictBEM - [\'abc-def\' - true]', function (done) { + + var result = helpers.isStrictBEM('abc-def'); + + assert.equal(true, result); + done(); + }); + + it('isStrictBEM - [\'ab-cd__ef\' - true]', function (done) { + + var result = helpers.isStrictBEM('ab-cd__ef'); + + assert.equal(true, result); + done(); + }); +}); diff --git a/tests/helpers/isUnique.js b/tests/helpers/isUnique.js new file mode 100644 index 00000000..413cdd9e --- /dev/null +++ b/tests/helpers/isUnique.js @@ -0,0 +1,74 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +var classBlock = + { + type: 'class', + content: + [ + { + type: 'ident', + content: 'foo', + syntax: 'scss', + start: { line: 5, column: 2 }, + end: { line: 5, column: 4 }, + indexHasChanged: [ 0 ] + } + ], + syntax: 'scss', + start: { line: 5, column: 1 }, + end: { line: 5, column: 4 }, + indexHasChanged: [ 0 ] + }, + + otherClassBlock = + { + type: 'class', + content: + [ + { + type: 'ident', + content: 'test', + syntax: 'scss', + start: { line: 9, column: 2 }, + end: { line: 9, column: 5 }, + indexHasChanged: [ 0 ] + } + ], + syntax: 'scss', + start: { line: 9, column: 1 }, + end: { line: 9, column: 5 }, + indexHasChanged: [ 0 ] + }; + +describe('helpers - isUnique', function () { + ////////////////////////////// + // isUnique + ////////////////////////////// + + it('isUnique should return false - [objA === objB]', function (done) { + + + var ledger = []; + ledger.push(classBlock); + + var result = helpers.isUnique(ledger, classBlock); + + assert.equal(false, result); + done(); + }); + + it('isUnique should return true - [objA !== objB]', function (done) { + + + var ledger = []; + ledger.push(classBlock); + + var result = helpers.isUnique(ledger, otherClassBlock); + + assert.equal(false, result); + done(); + }); +}); diff --git a/tests/helpers/isUpperCase.js b/tests/helpers/isUpperCase.js new file mode 100644 index 00000000..0c06f74f --- /dev/null +++ b/tests/helpers/isUpperCase.js @@ -0,0 +1,44 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isUpperCase', function () { + + ////////////////////////////// + // isUpperCase + ////////////////////////////// + + it('isUpperCase - [\'TEST\' - true]', function (done) { + + var result = helpers.isUpperCase('TEST'); + + assert.equal(true, result); + done(); + }); + + it('isUpperCase - [\'test\' - false]', function (done) { + + var result = helpers.isUpperCase('test'); + + assert.equal(false, result); + done(); + }); + + it('isUpperCase - [abcDEF - false]', function (done) { + + var result = helpers.isUpperCase('abcDEF'); + + assert.equal(false, result); + done(); + }); + + it('isUpperCase - [\'123\' - false]', function (done) { + + var result = helpers.isUpperCase('123'); + + assert.equal(false, result); + done(); + }); + +}); diff --git a/tests/helpers/isValidHex.js b/tests/helpers/isValidHex.js new file mode 100644 index 00000000..4cb8a643 --- /dev/null +++ b/tests/helpers/isValidHex.js @@ -0,0 +1,115 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - isValidHex', function () { + + ////////////////////////////// + // isValidHex + ////////////////////////////// + + it('isValidHex - [\'abcdef\' - true]', function (done) { + + var result = helpers.isValidHex('abcdef'); + + assert.equal(true, result); + done(); + }); + + it('isValidHex - [\'ABCDEF\' - true]', function (done) { + + var result = helpers.isValidHex('ABCDEF'); + + assert.equal(true, result); + done(); + }); + + it('isValidHex - [\'123456\' - true]', function (done) { + + var result = helpers.isValidHex('123456'); + + assert.equal(true, result); + done(); + }); + + it('isValidHex - [\'ABC123\' - true]', function (done) { + + var result = helpers.isValidHex('ABC123'); + + assert.equal(true, result); + done(); + }); + + it('isValidHex - [\'abc123\' - true]', function (done) { + + var result = helpers.isValidHex('abc123'); + + assert.equal(true, result); + done(); + }); + + it('isValidHex - [\'fff\' - true]', function (done) { + + var result = helpers.isValidHex('fff'); + + assert.equal(true, result); + done(); + }); + + it('isValidHex - [\'123\' - true]', function (done) { + + var result = helpers.isValidHex('123'); + + assert.equal(true, result); + done(); + }); + + it('isValidHex - [\'efghij\' - false]', function (done) { + + var result = helpers.isValidHex('efghij'); + + assert.equal(false, result); + done(); + }); + + it('isValidHex - [\'thj\' - false]', function (done) { + + var result = helpers.isValidHex('thj'); + + assert.equal(false, result); + done(); + }); + + it('isValidHex - [\'ab\' - false]', function (done) { + + var result = helpers.isValidHex('ab'); + + assert.equal(false, result); + done(); + }); + + it('isValidHex - [\'12\' - false]', function (done) { + + var result = helpers.isValidHex('12'); + + assert.equal(false, result); + done(); + }); + + it('isValidHex - [\'1234567\' - false]', function (done) { + + var result = helpers.isValidHex('1234567'); + + assert.equal(false, result); + done(); + }); + + it('isValidHex - [\'abc1234\' - false]', function (done) { + + var result = helpers.isValidHex('abc1234'); + + assert.equal(false, result); + done(); + }); +}); diff --git a/tests/helpers/loadConfigFile.js b/tests/helpers/loadConfigFile.js new file mode 100644 index 00000000..8936427e --- /dev/null +++ b/tests/helpers/loadConfigFile.js @@ -0,0 +1,20 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - loadConfigFile', function () { + + ////////////////////////////// + // loadConfigFile + ////////////////////////////// + + it('loadConfigFile', function (done) { + + var result = helpers.loadConfigFile('../../tests/testFile.txt'), + expect = 'This is a test file that test\'s the loadConfigFile helper function.'; + + assert.equal(expect, result); + done(); + }); +}); diff --git a/tests/helpers/propertySearch.js b/tests/helpers/propertySearch.js new file mode 100644 index 00000000..7c310e96 --- /dev/null +++ b/tests/helpers/propertySearch.js @@ -0,0 +1,51 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +var haystack = [ + { + prop: 'a', + propb: 'b' + }, + { + prop: 'c', + propb: 'd' + } +]; + +describe('helpers - propertySearch', function () { + ////////////////////////////// + // propertySearch + ////////////////////////////// + + it('propertySearch should not find a property', function (done) { + + var needle = 'e', + property = 'prop', + result = helpers.propertySearch(haystack, needle, property); + + assert.equal(-1, result); + done(); + }); + + it('propertySearch should find a property', function (done) { + + var needle = 'a', + property = 'prop', + result = helpers.propertySearch(haystack, needle, property); + + assert.equal(0, result); + done(); + }); + + it('propertySearch should find a deeper property', function (done) { + + var needle = 'd', + property = 'propb', + result = helpers.propertySearch(haystack, needle, property); + + assert.equal(1, result); + done(); + }); +}); diff --git a/tests/helpers/sortDetects.js b/tests/helpers/sortDetects.js new file mode 100644 index 00000000..3f3e4936 --- /dev/null +++ b/tests/helpers/sortDetects.js @@ -0,0 +1,66 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +var detectTestA = { + line: 1, + column: 1 + }, + + detectTestB = { + line: 2, + column: 2 + }, + + detectTestC = { + line: 1, + column: 2 + }; + +describe('helpers - sortDetects', function () { + + ////////////////////////////// + // sortDetects + ////////////////////////////// + + it('sortDetects should return -1 - [a.line < b.line]', function (done) { + + var result = helpers.sortDetects(detectTestA, detectTestB); + + assert.equal(-1, result); + done(); + }); + + it('sortDetects should return 1 - [a.line > b.line]', function (done) { + + var result = helpers.sortDetects(detectTestB, detectTestA); + + assert.equal(1, result); + done(); + }); + + it('sortDetects should return 0 - [a === b]', function (done) { + + var result = helpers.sortDetects(detectTestA, detectTestA); + + assert.equal(0, result); + done(); + }); + + it('sortDetects should return -1 - [a.column < b.column]', function (done) { + + var result = helpers.sortDetects(detectTestA, detectTestC); + + assert.equal(-1, result); + done(); + }); + + it('sortDetects should return 1 - [a.column > b.column]', function (done) { + + var result = helpers.sortDetects(detectTestC, detectTestA); + + assert.equal(1, result); + done(); + }); +}); diff --git a/tests/helpers/stripLastSpace.js b/tests/helpers/stripLastSpace.js new file mode 100644 index 00000000..748d0594 --- /dev/null +++ b/tests/helpers/stripLastSpace.js @@ -0,0 +1,43 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - stripLastSpace', function () { + + ////////////////////////////// + // stripLastSpace + ////////////////////////////// + + it('stripLastSpace - [\'selector \']', function (done) { + + var result = helpers.stripLastSpace('selector '); + + assert.equal('selector', result); + done(); + }); + + it('stripLastSpace - [\'selector test \']', function (done) { + + var result = helpers.stripLastSpace('selector test'); + + assert.equal('selector test', result); + done(); + }); + + it('stripLastSpace - [\'selector\']', function (done) { + + var result = helpers.stripLastSpace('selector'); + + assert.equal('selector', result); + done(); + }); + + it('stripLastSpace - [\'selector test\']', function (done) { + + var result = helpers.stripLastSpace('selector test'); + + assert.equal('selector test', result); + done(); + }); +}); diff --git a/tests/helpers/stripPrefix.js b/tests/helpers/stripPrefix.js new file mode 100644 index 00000000..ab13afdb --- /dev/null +++ b/tests/helpers/stripPrefix.js @@ -0,0 +1,51 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - stripPrefix', function () { + + ////////////////////////////// + // stripPrefix + ////////////////////////////// + + it('stripPrefix - [-webkit-transition - transition]', function (done) { + + var result = helpers.stripPrefix('-webkit-transition'); + + assert.equal('transition', result); + done(); + }); + + it('stripPrefix - [-moz-transition - transition]', function (done) { + + var result = helpers.stripPrefix('-moz-transition'); + + assert.equal('transition', result); + done(); + }); + + it('stripPrefix - [-webkit-border-color - border-color]', function (done) { + + var result = helpers.stripPrefix('-webkit-border-color'); + + assert.equal('border-color', result); + done(); + }); + + it('stripPrefix - [-moz-osx-font-smoothing - font-smoothing]', function (done) { + + var result = helpers.stripPrefix('-moz-osx-font-smoothing'); + + assert.equal('font-smoothing', result); + done(); + }); + + it('stripPrefix - [@-webkit-keyframes - @keyframes]', function (done) { + + var result = helpers.stripPrefix('@-webkit-keyframes'); + + assert.equal('@keyframes', result); + done(); + }); +}); diff --git a/tests/helpers/stripQuotes.js b/tests/helpers/stripQuotes.js new file mode 100644 index 00000000..3350a885 --- /dev/null +++ b/tests/helpers/stripQuotes.js @@ -0,0 +1,27 @@ +'use strict'; + +var assert = require('assert'), + helpers = require('../../lib/helpers'); + +describe('helpers - stripQuotes', function () { + + ////////////////////////////// + // Strip quotes + ////////////////////////////// + + it('stripQuotes - [double quotes]', function (done) { + var result = helpers.stripQuotes('"This is a string"'), + expect = 'This is a string'; + + assert.equal(expect, result); + done(); + }); + + it('stripQuotes - [single quotes]', function (done) { + var result = helpers.stripQuotes('\'This is a string\''), + expect = 'This is a string'; + + assert.equal(expect, result); + done(); + }); +}); From c89d159bd89ae9c55df97bc3c39b4b9dc36380f7 Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Tue, 17 May 2016 23:33:37 +0100 Subject: [PATCH 2/8] :bug: Prevent sass-lint trying to lint directories --- index.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/index.js b/index.js index aaeba07a..decbc923 100644 --- a/index.js +++ b/index.js @@ -190,11 +190,11 @@ sassLint.lintFiles = function (files, options, configPath) { ignores = this.getConfig(options, configPath).files.ignore || ''; if (files.indexOf(', ') !== -1) { files.split(', ').forEach(function (pattern) { - includes = includes.concat(glob.sync(pattern, {ignore: ignores})); + includes = includes.concat(glob.sync(pattern, {ignore: ignores, nodir: true})); }); } else { - includes = glob.sync(files, {ignore: ignores}); + includes = glob.sync(files, {ignore: ignores, nodir: true}); } } // If not passed in then we look in the config file @@ -202,19 +202,17 @@ sassLint.lintFiles = function (files, options, configPath) { files = this.getConfig(options, configPath).files; // A glob pattern of files can be just a string if (typeof files === 'string') { - includes = glob.sync(files); + includes = glob.sync(files, {nodir: true}); } // Look into the include property of files and check if there's an array of files else if (files.include && files.include instanceof Array) { files.include.forEach(function (pattern) { - includes = includes.concat(glob.sync(pattern, {ignore: files.ignore})); + includes = includes.concat(glob.sync(pattern, {ignore: files.ignore, nodir: true})); }); } // Or there is only one pattern in the include property of files else { - includes = glob.sync(files.include, { - 'ignore': files.ignore - }); + includes = glob.sync(files.include, {ignore: files.ignore, nodir: true}); } } From b332f363e2e8a73d76edc9fa32041f9160bad962 Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Tue, 17 May 2016 23:50:21 +0100 Subject: [PATCH 3/8] :white_check_mark: Test to check non directory reading --- tests/dir-test/test.scss/test.scss | 3 +++ tests/main.js | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 tests/dir-test/test.scss/test.scss diff --git a/tests/dir-test/test.scss/test.scss b/tests/dir-test/test.scss/test.scss new file mode 100644 index 00000000..e2658abe --- /dev/null +++ b/tests/dir-test/test.scss/test.scss @@ -0,0 +1,3 @@ +#foo { + content: ''; +} diff --git a/tests/main.js b/tests/main.js index 792b1c16..aaf3858e 100644 --- a/tests/main.js +++ b/tests/main.js @@ -134,6 +134,23 @@ describe('sass lint', function () { }); }); + // ============================================================================== + // Not try to read directories + // ============================================================================== + it('should not try to blindly read and lint a directory', function (done) { + lintFiles('tests/dir-test/**/*.scss', {options: { + 'merge-default-rules': false + }, + rules: { + 'no-ids': 1 + }}, '', function (data) { + assert.equal(1, data[0].warningCount); + assert.equal(0, data[0].errorCount); + assert.equal(1, data[0].messages.length); + done(); + }); + }); + // ============================================================================== // Parse Errors should return as lint errors // ============================================================================== From 24c9a5904d0aef2dbc5cabeb4010c1c41b50d0b6 Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Tue, 17 May 2016 23:54:50 +0100 Subject: [PATCH 4/8] :white_check_mark: Add no directory read test --- tests/cli.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/cli.js b/tests/cli.js index 63663797..78ee4f1c 100644 --- a/tests/cli.js +++ b/tests/cli.js @@ -33,6 +33,21 @@ describe('cli', function () { }); }); + it('should not try to read and lint a directory', function (done) { + var command = 'sass-lint "tests/dir-test/**/*.scss" --no-exit --verbose'; + + exec(command, function (err, stdout) { + if (err) { + return done(err); + } + + assert(stdout.indexOf('.scss') !== -1); + assert(stdout.indexOf('.sass') === -1); + + return done(); + }); + }); + it('Should accept multiple input paths', function (done) { var command = 'sass-lint "tests/cli/cli-error.scss, tests/cli/cli-error.sass" --no-exit --verbose'; From 63b427eaba20c01041ad8e9f424e9ad24412d31d Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Wed, 18 May 2016 09:43:29 +0100 Subject: [PATCH 5/8] :white_check_mark: Add sinon to test method calls --- package.json | 3 ++- tests/dir-test/{test.scss => dir.scss}/test.scss | 0 tests/main.js | 10 +++++++++- 3 files changed, 11 insertions(+), 2 deletions(-) rename tests/dir-test/{test.scss => dir.scss}/test.scss (100%) diff --git a/package.json b/package.json index 13fa005e..b5829f75 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "coveralls": "^2.11.4", "deep-equal": "^1.0.1", "istanbul": "^0.4.0", - "mocha": "^2.2.5" + "mocha": "^2.2.5", + "sinon": "^1.17.4" } } diff --git a/tests/dir-test/test.scss/test.scss b/tests/dir-test/dir.scss/test.scss similarity index 100% rename from tests/dir-test/test.scss/test.scss rename to tests/dir-test/dir.scss/test.scss diff --git a/tests/main.js b/tests/main.js index aaf3858e..9c54feb2 100644 --- a/tests/main.js +++ b/tests/main.js @@ -3,7 +3,8 @@ var assert = require('assert'), equal = require('deep-equal'), lint = require('../index'), - fs = require('fs'); + fs = require('fs'), + sinon = require('sinon'); var lintFile = function lintFile (file, options, cb) { cb = cb || options; @@ -138,6 +139,7 @@ describe('sass lint', function () { // Not try to read directories // ============================================================================== it('should not try to blindly read and lint a directory', function (done) { + var fileSpy = sinon.spy(lint, 'lintText'); lintFiles('tests/dir-test/**/*.scss', {options: { 'merge-default-rules': false }, @@ -147,6 +149,12 @@ describe('sass lint', function () { assert.equal(1, data[0].warningCount); assert.equal(0, data[0].errorCount); assert.equal(1, data[0].messages.length); + + assert(fileSpy.called); + assert(fileSpy.calledOnce); + assert(fileSpy.calledWithMatch({format: 'scss', filename: 'tests/dir-test/dir.scss/test.scss'})); + assert(fileSpy.neverCalledWithMatch({filename: 'tests/dir-test/dir.scss'})); + fileSpy.reset(); done(); }); }); From 44ad9ac264edf5c2a73a6fa7cedfa2871567f350 Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Wed, 18 May 2016 09:54:49 +0100 Subject: [PATCH 6/8] :white_check_mark: Improve directory cli test --- tests/cli.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/cli.js b/tests/cli.js index 78ee4f1c..4cc618c3 100644 --- a/tests/cli.js +++ b/tests/cli.js @@ -34,15 +34,18 @@ describe('cli', function () { }); it('should not try to read and lint a directory', function (done) { - var command = 'sass-lint "tests/dir-test/**/*.scss" --no-exit --verbose'; + var command = 'sass-lint "tests/dir-test/**/*.scss" --no-exit --verbose --format json'; exec(command, function (err, stdout) { + var result = JSON.parse(stdout); if (err) { return done(err); } assert(stdout.indexOf('.scss') !== -1); assert(stdout.indexOf('.sass') === -1); + assert.equal(result.length, 1); + assert.equal(result[0].filePath, 'tests/dir-test/dir.scss/test.scss'); return done(); }); From 0ae52a876038d3b47c29538860491fe3df9a3d42 Mon Sep 17 00:00:00 2001 From: greenkeeperio-bot Date: Mon, 23 May 2016 04:00:57 -0400 Subject: [PATCH 7/8] chore(package): update mocha to version 2.5.0 https://greenkeeper.io/ --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 13fa005e..33fd6470 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,6 @@ "coveralls": "^2.11.4", "deep-equal": "^1.0.1", "istanbul": "^0.4.0", - "mocha": "^2.2.5" + "mocha": "^2.5.0" } } From 7013e1360240bed188ca4a88182c18bbd7add0d9 Mon Sep 17 00:00:00 2001 From: Dan Purdy Date: Mon, 23 May 2016 14:03:29 +0100 Subject: [PATCH 8/8] :arrow_up: Upgrade mocha to 2.5.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 33fd6470..38c000a1 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,6 @@ "coveralls": "^2.11.4", "deep-equal": "^1.0.1", "istanbul": "^0.4.0", - "mocha": "^2.5.0" + "mocha": "^2.5.1" } }