@nsmp/js-api
Version:
Types for jsApi
100 lines (80 loc) • 2.75 kB
text/typescript
import {deepMergeJsApi, getAppBaseUrl} from './index';
import {IJsApi, PartialJsApi} from '../types';
import {objectCard} from '../constants';
describe('Функция deepMergeJsApi', () => {
/**
* Определяем функции отдельно, чтобы после объединения тестовых jsApi,
* они ссылались на одни и те же функции
*/
function cancel () {}
function getCurrentLocale () {
return 'ru';
}
function getType () {
return objectCard;
}
function getValues () {
return Promise.resolve({});
}
function isAddForm () {
return false;
}
function isEditForm () {
return false;
}
function isModal () {
return false;
}
const firstJsApi: IJsApi = {
forms: {
cancel,
getType,
// @ts-ignore
getValues
},
isAddForm,
isEditForm
};
const secondJsApi: PartialJsApi = {
forms: {
isModal
},
getCurrentLocale
};
const fullJsApi: PartialJsApi = {
forms: {
cancel,
getType,
getValues,
isModal
},
getCurrentLocale,
isAddForm,
isEditForm
};
it('возвращает глубокое объединение двух объектов jsApi', () => {
expect(deepMergeJsApi(firstJsApi, secondJsApi)).toEqual(fullJsApi);
});
});
describe('Функция getAppBaseUrl', () => {
const alertSpy = jest.spyOn(window, 'alert').mockImplementation(() => {});
it('вызывает alert и возвращает пустую строку, если ссылка на приложение не назначена', () => {
const appBaseUrl = getAppBaseUrl();
expect(alertSpy).toHaveBeenCalledWith('Ссылка на приложение не передана или имеет неверный формат');
expect(appBaseUrl).toBe('');
});
it('вызывает alert и возвращает пустую строку, если ссылка на приложение имеет неверный формат', () => {
process.env.APP_URL = 'not link';
const appBaseUrl = getAppBaseUrl();
expect(alertSpy).toHaveBeenCalledWith('Ссылка на приложение не передана или имеет неверный формат');
expect(appBaseUrl).toBe('');
});
it('возвращает ссылку на приложение, если передана ссылка с слэшем в конце', () => {
process.env.APP_URL = 'https://domain.ru/';
expect(getAppBaseUrl()).toBe('https://domain.ru/sd/');
});
it('возвращает ссылку на приложение, если передана ссылка без слэша в конце', () => {
process.env.APP_URL = 'https://domain.ru';
expect(getAppBaseUrl()).toBe('https://domain.ru/sd/');
});
});