Files
lodash/test/pad-methods.spec.js
2023-09-16 22:59:56 -07:00

49 lines
1.9 KiB
JavaScript

import lodashStable from 'lodash';
import { _ } from './utils';
import pad from '../src/pad';
describe('pad methods', () => {
lodashStable.each(['pad', 'padStart', 'padEnd'], (methodName) => {
const func = _[methodName];
const isPad = methodName === 'pad';
const isStart = methodName === 'padStart';
const string = 'abc';
it(`\`_.${methodName}\` should not pad if string is >= \`length\``, () => {
expect(func(string, 2)).toBe(string);
expect(func(string, 3)).toBe(string);
});
it(`\`_.${methodName}\` should treat negative \`length\` as \`0\``, () => {
lodashStable.each([0, -2], (length) => {
expect(func(string, length)).toBe(string);
});
});
it(`\`_.${methodName}\` should coerce \`length\` to a number`, () => {
lodashStable.each(['', '4'], (length) => {
const actual = length ? (isStart ? ' abc' : 'abc ') : string;
expect(func(string, length)).toBe(actual);
});
});
it(`\`_.${methodName}\` should treat nullish values as empty strings`, () => {
lodashStable.each([undefined, '_-'], (chars) => {
const expected = chars ? (isPad ? '__' : chars) : ' ';
expect(func(null, 2, chars)).toBe(expected);
expect(func(undefined, 2, chars)).toBe(expected);
expect(func('', 2, chars)).toBe(expected);
});
});
it(`\`_.${methodName}\` should return \`string\` when \`chars\` coerces to an empty string`, () => {
const values = ['', Object('')];
const expected = lodashStable.map(values, lodashStable.constant(string));
const actual = lodashStable.map(values, (value) => pad(string, 6, value));
expect(actual).toEqual(expected);
});
});
});