to-title-case-transformer.spec.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import {expect} from 'chai';
  2. import {format} from '@e22m4u/js-format';
  3. import {toTitleCaseTransformer} from './to-title-case-transformer.js';
  4. describe('toTitleCaseTransformer', function () {
  5. it('returns undefined and null values as is', function () {
  6. const res1 = toTitleCaseTransformer(undefined, undefined, {});
  7. const res2 = toTitleCaseTransformer(null, undefined, {});
  8. expect(res1).to.be.undefined;
  9. expect(res2).to.be.null;
  10. });
  11. it('converts the given string to title case', function () {
  12. const res1 = toTitleCaseTransformer('TEST', undefined, {});
  13. const res2 = toTitleCaseTransformer('test', undefined, {});
  14. expect(res1).to.be.eq('Test');
  15. expect(res2).to.be.eq('Test');
  16. });
  17. it('throws an error if the given value is not a string', function () {
  18. const throwable = v => () =>
  19. toTitleCaseTransformer(v, undefined, {
  20. transformerName: 'toTitleCase',
  21. });
  22. const error = v =>
  23. format(
  24. 'The property transformer "toTitleCase" requires a String value, but %s given.',
  25. v,
  26. );
  27. expect(throwable(10)).to.throw(error('10'));
  28. expect(throwable(0)).to.throw(error('0'));
  29. expect(throwable(true)).to.throw(error('true'));
  30. expect(throwable(false)).to.throw(error('false'));
  31. expect(throwable({})).to.throw(error('Object'));
  32. expect(throwable([])).to.throw(error('Array'));
  33. throwable('str')();
  34. throwable('')();
  35. throwable(undefined)();
  36. throwable(null)();
  37. });
  38. });