Skip to content

Commit

Permalink
Merge e93604f into e6bf56f
Browse files Browse the repository at this point in the history
  • Loading branch information
kelfish committed May 24, 2017
2 parents e6bf56f + e93604f commit 2a91b38
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 1 deletion.
9 changes: 9 additions & 0 deletions index.js
@@ -1,6 +1,7 @@
var camelCase = require('camel-case');
var snakeCase = require('snake-case');
var paramCase = require('param-case');
var pascalCase = require('pascal-case');

var changeKeys = function changeKeys(transformer, obj) {
var objectKeys;
Expand Down Expand Up @@ -56,4 +57,12 @@ changeCaseObject.param = changeCaseObject.paramCase = function paramCaseObject(o
return changeKeys(paramCase, obj);
};

changeCaseObject.pascal = changeCaseObject.pascalCase = function pascalCaseObject(obj) {
if (typeof obj === 'string') {
return pascalCase(obj);
}

return changeKeys(pascalCase, obj);
};

module.exports = changeCaseObject;
4 changes: 3 additions & 1 deletion package.json
Expand Up @@ -20,7 +20,8 @@
"case",
"change",
"snake",
"param"
"param",
"pascal"
],
"author": "Johannes Stein",
"license": "MIT",
Expand All @@ -31,6 +32,7 @@
"dependencies": {
"camel-case": "^1.2.0",
"param-case": "^1.1.1",
"pascal-case": "^2.0.1",
"snake-case": "^1.1.1"
},
"devDependencies": {
Expand Down
99 changes: 99 additions & 0 deletions test/index.js
Expand Up @@ -293,4 +293,103 @@ describe('change-case-object', function () {
expect(changeCaseObject.snakeCase(Infinity)).to.equal(Infinity);
expect(changeCaseObject.snakeCase(NaN)).to.a('number');
});

it('pascalCase', function () {
var initialObj = {
'hello_world': 'test',
};

var fixtureObj = {
'HelloWorld': 'test',
};

expect(changeCaseObject.pascalCase(initialObj)).to.deep.equal(fixtureObj);
});

it('pascalCase (special characters)', function () {
var initialObj = {
'hello_world': 'n#mä!%ads$§a',
};

var fixtureObj = {
'HelloWorld': 'n#mä!%ads$§a',
};
expect(changeCaseObject.pascalCase(initialObj)).to.deep.equal(fixtureObj);
});

it('pascalCase (Array of Object)', function () {
var initialArrObj = [
{ 'hello_world': 'test' },
{ is_active: true },
{ 'isActive': true },
{ 'is-active': true },
];

var fixtureArrObj = [
{ 'HelloWorld': 'test' },
{ IsActive: true },
{ IsActive: true },
{ IsActive: true },
];

expect(changeCaseObject.pascalCase(initialArrObj)).to.deep.equal(fixtureArrObj);
});

it('pascalCase (Array of string)', function () {
var initialArrStr = ['is_active', 'is_blocked'];

var fixtureArrStr = ['IsActive', 'IsBlocked'];

expect(changeCaseObject.pascalCase(initialArrStr)).to.deep.equal(fixtureArrStr);
});

it('pascalCase (Primitive - string)', function () {
var initialPrimitive = 'is_active';

var fixturePrimitive = 'IsActive';

expect(changeCaseObject.pascalCase(initialPrimitive)).to.deep.equal(fixturePrimitive);
});

it('pascalCase (Primitive - number)', function () {
var initialPrimitive = 42;

var fixturePrimitive = 42;

expect(changeCaseObject.pascalCase(initialPrimitive)).to.deep.equal(fixturePrimitive);
});

it('pascalCase (Primitive - bool)', function () {
var initialPrimitive = true;

var fixturePrimitive = true;

expect(changeCaseObject.pascalCase(initialPrimitive)).to.deep.equal(fixturePrimitive);
});

it('pascalCase (deep)', function () {
var initialObj = {
'hello_world': {
'hello_there': 'name',
'my_name': 'someone',
},
};

var fixtureObj = {
'HelloWorld': {
'HelloThere': 'name',
'MyName': 'someone',
},
};

expect(changeCaseObject.pascalCase(initialObj)).to.deep.equal(fixtureObj);
});

it('pascalCase (edge cases)', function () {
expect(changeCaseObject.pascalCase(null)).to.equal(null);
expect(changeCaseObject.pascalCase({})).to.a('object');
expect(changeCaseObject.pascalCase([])).to.a('array');
expect(changeCaseObject.pascalCase(Infinity)).to.equal(Infinity);
expect(changeCaseObject.pascalCase(NaN)).to.a('number');
});
});

0 comments on commit 2a91b38

Please sign in to comment.