import { mount } from '@vue/test-utils'; import json from 'test_fixtures/blob/notebook/basic.json'; import Output from '~/notebook/cells/output/index.vue'; import MarkdownOutput from '~/notebook/cells/output/markdown.vue'; import { relativeRawPath, markdownCellContent } from '../../mock_data'; describe('Output component', () => { let wrapper; const createComponent = (output) => { wrapper = mount(Output, { provide: { relativeRawPath }, propsData: { outputs: [].concat(output), count: 1, }, }); }; afterEach(() => { wrapper.destroy(); }); describe('text output', () => { beforeEach(() => { const textType = json.cells[2]; createComponent(textType.outputs[0]); }); it('renders as plain text', () => { expect(wrapper.find('pre').exists()).toBe(true); }); it('renders prompt', () => { expect(wrapper.find('.prompt span').exists()).toBe(true); }); }); describe('image output', () => { beforeEach(() => { const imageType = json.cells[3]; createComponent(imageType.outputs[0]); }); it('renders as an image', () => { expect(wrapper.find('img').exists()).toBe(true); }); }); describe('html output', () => { it('renders raw HTML', () => { const htmlType = json.cells[4]; createComponent(htmlType.outputs[0]); const iframe = wrapper.find('iframe'); expect(iframe.exists()).toBe(true); expect(iframe.element.getAttribute('sandbox')).toBe(''); expect(iframe.element.getAttribute('srcdoc')).toBe('
test
'); expect(iframe.element.getAttribute('scrolling')).toBe('auto'); }); it('renders multiple raw HTML outputs', () => { const htmlType = json.cells[4]; createComponent([htmlType.outputs[0], htmlType.outputs[0]]); expect(wrapper.findAll('iframe')).toHaveLength(2); }); }); describe('LaTeX output', () => { it('renders LaTeX', () => { const output = { data: { 'text/latex': ['$$F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx$$'], 'text/plain': ['