webamp/js/__tests__/Marquee-test.jsx
2016-07-26 16:59:43 -07:00

98 lines
2.9 KiB
JavaScript

jest.unmock('../utils');
import {
getBalanceText,
getVolumeText,
getPositionText,
getMediaText,
getDoubleSizeModeText,
wrapForMarquee
} from '../Marquee.jsx';
describe('getBalanceText', () => {
it('treats negative numbers as left', () => {
const actual = getBalanceText(-25);
const expected = 'Balance: 25% Left';
expect(actual).toEqual(expected);
});
it('treats positive numbers as right', () => {
const actual = getBalanceText(25);
const expected = 'Balance: 25% Right';
expect(actual).toEqual(expected);
});
it('has a special case for center', () => {
const actual = getBalanceText(0);
const expected = 'Balance: Center';
expect(actual).toEqual(expected);
});
});
describe('getVolumeText', () => {
it('expresses volume as percent', () => {
const actual = getVolumeText(50);
const expected = 'Volume: 50%';
expect(actual).toEqual(expected);
});
});
describe('getPositionText', () => {
it('formats a position', () => {
const duration = 86;
const seekToPercent = 85;
const actual = getPositionText(duration, seekToPercent);
const expected = 'Seek to: 01:13/01:26 (85%)';
expect(actual).toEqual(expected);
});
});
describe('getMediaText', () => {
it('formats a name and duration', () => {
const name = 'My Great Song';
const duration = 86;
const actual = getMediaText(name, duration);
const expected = 'My Great Song (01:26) *** ';
expect(actual).toEqual(expected);
});
});
describe('wrapForMarquee', () => {
const long = 'This is a long string. Longer than 30 characters!';
it('truncates to 30 characters', () => {
const actual = wrapForMarquee(long, 0);
const expected = 'This is a long string. Longer ';
expect(actual).toEqual(expected);
});
it('offsets by the number of steps', () => {
const actual = wrapForMarquee(long, 8);
const expected = 'a long string. Longer than 30 ';
expect(actual).toEqual(expected);
});
it('wraps around when step > text length', () => {
const actual = wrapForMarquee(long, 51);
const expected = 'his is a long string. Longer t';
expect(actual).toEqual(expected);
});
it('wraps text when it gets to the end', () => {
const actual = wrapForMarquee(long, 30);
const expected = 'than 30 characters! This is a ';
expect(actual).toEqual(expected);
});
it('does not step through short strings', () => {
const actual = wrapForMarquee('Short string', 30);
const expected = 'Short string';
expect(actual).toEqual(expected);
});
});
describe('getDoubleSizeModeText', () => {
it('prompts to enable when disabled', () => {
const actual = getDoubleSizeModeText(true);
const expected = 'Disable doublesize mode';
expect(actual).toEqual(expected);
});
it('prompts to disable when enabled', () => {
const actual = getDoubleSizeModeText(false);
const expected = 'Enable doublesize mode';
expect(actual).toEqual(expected);
});
});