| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- import {expect} from 'chai';
- import {modelNameToModelKey} from './model-name-to-model-key.js';
- describe('modelNameToModelKey', function () {
- it('should return a simple lowercase string as is', function () {
- expect(modelNameToModelKey('user')).to.be.eq('user');
- });
- it('should convert to lowercase and remove hyphens and underscores', function () {
- const modelNames = [
- 'userProfileDetails',
- 'UserProfileDetails',
- 'user-profile-details',
- 'user_profile_details',
- 'User-Profile-Details',
- 'User_Profile_Details',
- 'USER-PROFILE-DETAILS',
- 'USER_PROFILE_DETAILS',
- 'USERPROFILEDETAILS',
- 'userprofiledetails',
- ];
- modelNames.forEach(v =>
- expect(modelNameToModelKey(v)).to.be.eq('userprofiledetails'),
- );
- });
- it('should handle a mixed string with uppercase, hyphens and underscores', function () {
- const modelName = 'User_Profile-Details';
- const expected = 'userprofiledetails';
- expect(modelNameToModelKey(modelName)).to.be.eq(expected);
- });
- it('should not remove numbers from the string', function () {
- const modelName = 'Type1-Model_2';
- const expected = 'type1model2';
- expect(modelNameToModelKey(modelName)).to.be.eq(expected);
- });
- it('should remove the "model" word from a model name', function () {
- const modelNames = [
- 'userProfileDetailsModel',
- 'UserProfileDetailsModel',
- 'user-profile-details-model',
- 'user_profile_details_model',
- 'User-Profile-Details-Model',
- 'User_Profile_Details_Model',
- 'USER-PROFILE-DETAILS-MODEL',
- 'USER_PROFILE_DETAILS_MODEL',
- ];
- modelNames.forEach(v =>
- expect(modelNameToModelKey(v)).to.be.eq('userprofiledetails'),
- );
- });
- it('should not remove the "model" suffix as a part of last word in a model name', function () {
- const exceptions = ['SUPERMODEL', 'supermodel'];
- exceptions.forEach(v =>
- expect(modelNameToModelKey(v)).to.be.eq('supermodel'),
- );
- });
- it('should throw an error for an empty string', function () {
- const throwable = () => modelNameToModelKey('');
- expect(throwable).to.throw(
- 'The model name should be a non-empty String ' +
- 'without spaces, but "" was given.',
- );
- });
- it('should throw an error for a string with spaces', function () {
- const throwable = () => modelNameToModelKey('user profile');
- expect(throwable).to.throw(
- 'The model name should be a non-empty String ' +
- 'without spaces, but "user profile" was given.',
- );
- });
- it('should throw an error for null', function () {
- const throwable = () => modelNameToModelKey(null);
- expect(throwable).to.throw(
- 'The model name should be a non-empty String ' +
- 'without spaces, but null was given.',
- );
- });
- it('should throw an error for undefined', function () {
- const throwable = () => modelNameToModelKey(undefined);
- expect(throwable).to.throw(
- 'The model name should be a non-empty String ' +
- 'without spaces, but undefined was given.',
- );
- });
- it('should throw an error for a number', function () {
- const throwable = () => modelNameToModelKey(123);
- expect(throwable).to.throw(
- 'The model name should be a non-empty String ' +
- 'without spaces, but 123 was given.',
- );
- });
- it('should throw an error for an object', function () {
- const throwable = () => modelNameToModelKey({name: 'test'});
- expect(throwable).to.throw(
- 'The model name should be a non-empty String ' +
- 'without spaces, but Object was given.',
- );
- });
- it('should throw an error for an array', function () {
- const throwable = () => modelNameToModelKey(['test']);
- expect(throwable).to.throw(
- 'The model name should be a non-empty String ' +
- 'without spaces, but Array was given.',
- );
- });
- });
|