ashish-sdk
Version:
ThoughtSpot Embed SDK
88 lines (79 loc) • 2.44 kB
text/typescript
/**
* @jest-environment node
*/
import {
getQueryParamString,
getFilterQuery,
getCssDimension,
getEncodedQueryParamsString,
appendToUrlHash,
} from './utils';
import { RuntimeFilterOp } from './types';
describe('unit test for utils', () => {
test('getQueryParamString', () => {
expect(
getQueryParamString({
foo: 'bar',
baz: '42',
}),
).toBe('foo=bar&baz=42');
expect(getQueryParamString({})).toBe(null);
// should not add undefined params
expect(
getQueryParamString({
foo: undefined,
bar: 'baz',
}),
).toBe('bar=baz');
});
test('getFilterQuery', () => {
expect(getFilterQuery([])).toBe(null);
expect(
getFilterQuery([
{
columnName: 'foo',
operator: RuntimeFilterOp.NE,
values: ['bar'],
},
]),
).toBe('col1=foo&op1=NE&val1=bar');
const filters = [
{
columnName: 'foo',
operator: RuntimeFilterOp.EQ,
values: [42],
},
{
columnName: 'bar',
operator: RuntimeFilterOp.BW_INC,
values: [1, 10],
},
{
columnName: 'baz',
operator: RuntimeFilterOp.CONTAINS,
values: ['abc'],
},
];
expect(getFilterQuery(filters)).toBe(
'col1=foo&op1=EQ&val1=42&col2=bar&op2=BW_INC&val2=1&val2=10&col3=baz&op3=CONTAINS&val3=abc',
);
});
test('getCssDimension', () => {
expect(getCssDimension(100)).toBe('100px');
expect(getCssDimension('100%')).toBe('100%');
expect(getCssDimension('100px')).toBe('100px');
expect(getCssDimension(null)).toBe(null);
});
test('appendToUrlHash', () => {
expect(appendToUrlHash('http://myhost:3000', 'hashFrag')).toBe(
'http://myhost:3000#hashFrag',
);
expect(appendToUrlHash('http://xyz.com/#foo', 'bar')).toBe(
'http://xyz.com/#foobar',
);
});
test('getEncodedQueryParamsString', () => {
expect(getEncodedQueryParamsString('')).toBe('');
expect(getEncodedQueryParamsString('test')).toBe('dGVzdA');
});
});