import { seedTokens, rewireSource, rewireSpecs } from '../../src/util'; test('source to spec', () => { const block = { description: '', tags: [ { tag: 'my-tag', name: '', type: '', optional: false, description: '', problems: [], source: [ { number: 2, source: '...changed in spec...', tokens: seedTokens({ name: '...changed in spec...' }), }, ], }, ], source: [ { number: 1, source: 'source line 1', tokens: seedTokens(), }, { number: 2, source: 'source line 2', tokens: seedTokens({ name: 'source' }), }, ], problems: [], }; // source is unsynced expect(block.source[1] === block.tags[0].source[0]).toBe(false); rewireSource(block); // source is referenced expect(block.source[1] === block.tags[0].source[0]).toBe(true); // non-tag line stays unchanged expect(block.source[0].source).toEqual('source line 1'); // tag-holding source line stays unchanged expect(block.source[1].source).toEqual('source line 2'); expect(block.source[1].tokens.name).toEqual('source'); // tag source inherits block source expect(block.tags[0].source[0].source).toEqual('source line 2'); expect(block.tags[0].source[0].tokens.name).toEqual('source'); }); test('spec to source', () => { const block = { description: '', tags: [ { tag: 'my-tag', name: '', type: '', optional: false, description: '', problems: [], source: [ { number: 2, source: '...changed in spec...', tokens: seedTokens({ name: '...changed in spec...' }), }, ], }, ], source: [ { number: 1, source: 'source line 1', tokens: seedTokens(), }, { number: 2, source: 'source line 2', tokens: seedTokens({ name: 'source' }), }, ], problems: [], }; // source is unsynced expect(block.source[1] === block.tags[0].source[0]).toBe(false); rewireSpecs(block); // source is referenced expect(block.source[1] === block.tags[0].source[0]).toBe(true); // non-tag line stays unchanged expect(block.source[0].source).toEqual('source line 1'); // tag-holding source line inherits spec source expect(block.source[1].source).toEqual('...changed in spec...'); expect(block.source[1].tokens.name).toEqual('...changed in spec...'); // tag source inherits block source expect(block.tags[0].source[0].source).toEqual('...changed in spec...'); expect(block.tags[0].source[0].tokens.name).toEqual('...changed in spec...'); });