import indent from '../../src/transforms/indent'; import getParser from '../../src/parser/index'; import getStringifier from '../../src/stringifier/index'; test('push', () => { const source = ` /** * Description may go * over multiple lines followed by @tags * * @my-tag {my.type} my-name description line 1 description line 2 * description line 3 */`; const expected = ` /** * Description may go * over multiple lines followed by @tags * * @my-tag {my.type} my-name description line 1 description line 2 * description line 3 */`; const parsed = getParser()(source); const out = getStringifier()(indent(4)(parsed[0])); expect(out).toBe(expected.slice(1)); }); test('pull', () => { const source = ` /** * Description may go * over multiple lines followed by @tags * * @my-tag {my.type} my-name description line 1 description line 2 * description line 3 */`; const expected = ` /** * Description may go * over multiple lines followed by @tags * * @my-tag {my.type} my-name description line 1 description line 2 * description line 3 */`; const parsed = getParser()(source); const out = getStringifier()(indent(2)(parsed[0])); expect(out).toBe(expected.slice(1)); }); test('force pull', () => { const source = ` /** * Description may go * over multiple lines followed by @tags * * @my-tag {my.type} my-name description line 1 description line 2 * description line 3 */`; const expected = ` /** * Description may go * over multiple lines followed by @tags * * @my-tag {my.type} my-name description line 1 description line 2 * description line 3 */`; const parsed = getParser()(source); const indented = indent(0)(parsed[0]); const out = getStringifier()(indented); expect(out).toBe(expected.slice(1)); }); test('spec source referencing', () => { const parsed = getParser()(`/** @tag {type} name Description */`); const block = indent(0)(parsed[0]); expect(block.tags[0].source[0] === block.source[0]).toBe(true); }); test('block source clonning', () => { const parsed = getParser()(`/** @tag {type} name Description */`); const block = indent(0)(parsed[0]); parsed[0].source[0].tokens.description = 'test'; expect(block.source[0].tokens.description).toBe('Description '); });