UNPKG

@sigi/ssr

Version:

Server side rendering support for sigi framework

58 lines 3.1 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { renderToString } from 'react-dom/server'; import { StateToPersist } from '../state-to-persist'; describe('StateToPersist specs', () => { function createStateToPersist(data, actionsToRetry = {}) { return new StateToPersist(data, actionsToRetry); } const renderDocumentJSX = (child = null) => (_jsxs("html", { children: [_jsx("head", { children: _jsx("link", { rel: "stylesheet", href: "https://sigi.how/style.css" }) }), _jsxs("body", { children: [_jsx("div", { id: "app", children: _jsx("img", { src: "https://sigi.how/image.jpeg", alt: "" }) }), child] })] })); it('empty data should return empty string', () => { const state = createStateToPersist(); expect(state.extractToScriptString()).toBe(''); }); it('should be able to extractScriptString without tag', () => { const state = createStateToPersist({ bar: 'baz' }); expect(state.extractToScriptString(false)).toMatchSnapshot(); }); it('empty data should return original string', () => { const state = createStateToPersist(); const originalString = renderToString(renderDocumentJSX()); expect(state.renderToDocument(originalString)).toBe(originalString); }); it('should render to document', () => { const state = createStateToPersist({ foo: 1 }); expect(state.renderToDocument(renderToString(renderDocumentJSX()))).toMatchSnapshot(); }); it('should return original string if contains non </body> tag', () => { const state = createStateToPersist({ foo: 1 }); const jsx = (_jsx("div", { children: _jsx("span", { children: "1" }) })); expect(state.renderToDocument(renderToString(jsx))).toBe(renderToString(jsx)); }); it('should prevent xss', () => { const state = createStateToPersist({ xss: '</script><script>alert(1);</script>', }); expect(state.renderToDocument(renderToString(renderDocumentJSX()))).toMatchSnapshot(); }); it('should return null in renderToJSX if data is null/undefined', () => { const state = createStateToPersist(); expect(state.renderToJSX()).toBeNull(); }); it('should be able to renderToJSX', () => { const state = createStateToPersist({ foo: 1 }); expect(renderToString(renderDocumentJSX(state.renderToJSX()))).toMatchSnapshot(); }); it('should be able extract actionsToRetry', () => { const state = createStateToPersist({ foo: 1 }, { home: ['initAppContext'] }); expect(renderToString(renderDocumentJSX(state.renderToJSX()))).toMatchSnapshot(); }); it('empty data should return empty string', () => { const state = createStateToPersist(); expect(state.extractToJSONScriptString()).toBe(''); }); it('should be able to extractToJSONScriptString', () => { const state = createStateToPersist({ foo: 'bar' }); expect(state.extractToJSONScriptString()).toMatchSnapshot(); }); }); //# sourceMappingURL=state-to-persist.spec.js.map