const $ = require('../index'); const config = require('./config'); const jc1 = require('./code/simple1'); const jc2 = require('./code/simple2'); const hc1 = require('./code/simple1.html'); test('$.generate: simple js code', () => { expect(()=>{ $('var a = 1;').generate(); }).not.toThrow(); }) test('$.generate: this[0] is null', () => { expect(()=>{ const G = $('var a = 1;'); G[0] = null G.generate(); }).not.toThrow(); }) test('$.generate:simple js code 1', () => { const str = $('var a = 1;').generate(); expect(str).toBe('var a = 1;'); }) test('$.generate:simple js code 2', () => { const str =$('function a() {}').generate(); expect(str).toBe('function a() {}'); }) test('$.generate: append result object should not throw', () => { const CODE = ` function a(){ var a = 1; } `; const code = $(CODE).append($('var a = 1;').node).generate() expect(code.indexOf('var a = 1;') > -1).toBeTruthy(); }) test('$.generate: simple html code', () => { expect(()=>{ $('
',config.html).generate(); }).not.toThrow(); }) test('$.generate: simple html code 1 result should be ok', () => { const str = $('
test
',config.html).generate(); expect(str).toBe('
test
'); }) test('$.generate: simple1 html code result should be ok', () => { const str = $(hc1,config.html).generate(); expect(str.length > 1).toBeTruthy(); }) test('$.generate: simple1 html code result should be ok', () => { const res = $(` import a from 'a';console.log('get A');var b = console.log();console.log.bind();var c = console.log;console.log = func; `) .replace(`var $_$ = console.log()`, `var $_$ = void 0;`) .replace(`var $_$ = console.log`, `var $_$ = function(){};`) .find(`console.log()`) .remove() .generate({ isPretty: true }); expect(res == `import a from "a"; var b = void 0; console.log.bind(); var c = function() {}; console.log = func;`).toBeTruthy(); }) // todo magix attr // test('$.generate: simple html code 2 {{ test', () => { // const code = `{{= body_stateText(this,crowd) }}`; // const str = $(code, config.html).generate(); // expect(str).toBe('{{= body_stateText(this,crowd) }}'); // }) test('$.generate: simple1 html code result should be ok', () => { const res = $(` `, { parseOptions: { language: 'html' } } ) .generate(); expect(!!res.match(`/>`)).toBeTruthy(); }) test('$.generate: tag generate should be ok', () => { const str = $(``, { parseOptions: { language: 'vue' } }).find('') .generate(); expect(str.match('A')).toBeTruthy(); }) test('$.generate: html generate should be ok', () => { const str = $(``, { parseOptions: { language: 'html' } }) .generate(); expect(str.indexOf(`{{a + 'b/c.png'}}`) > -1).toBeTruthy(); }) test('$.generate: UpperCase tag generate should be ok', () => { const str = $(``, { parseOptions: { language: 'html' } }) .generate(); expect(str.indexOf(`Image`) > -1).toBeTruthy(); }) test('$.generate: selfclose tag generate should be ok', () => { const str = $(`
`, { parseOptions: { language: 'html' } }) .generate(); expect(str.indexOf(`
`) > -1 && str.indexOf(`
`) > -1).toBeTruthy(); }) test('$.generate: selfclose tag generate should be ok', () => { const str = $(` `, { parseOptions: { language: 'html' } }) .generate(); expect(str.indexOf(``) > -1 && str.indexOf(`/>`) > -1).toBeTruthy(); }) test('$.generate: selfclose tag generate should be ok', () => { const str = $(``, { parseOptions: { language: 'html' } }) .generate(); expect(str.indexOf(``) > -1).toBeTruthy(); }) test('$.generate: selfclose tag generate should be ok', () => { const str = $(``, { parseOptions: { language: 'html' } }) .find('<$_$ $_$1=$_$2>') .each((item) => { const attrs = item.attr('content.attributes') attrs.forEach((attr, index) => { if (attr.key && attr.key.content && attr.key.content.startsWith(':')) { attr.key.content = attr.key.content.slice('1') attr.value.content = `{${attr.value.content}}` delete attr.startWrapper delete attr.endWrapper } }) }) .generate(); expect(str.indexOf(`columns={columns}`) > -1).toBeTruthy(); }) test('$.generate: selfclose tag generate should be ok', () => { const str = $(``, { parseOptions: { language: 'html' } }) .find('<$_$ $_$1=$_$2>') .each((item) => { const attrs = item.attr('content.attributes') attrs.forEach((attr, index) => { if (attr.key && attr.key.content && attr.key.content.startsWith(':')) { attr.key.content = attr.key.content.slice('1') attr.startWrapper.content = '{' attr.endWrapper.content = '}' } }) }) .generate(); expect(str.indexOf(`columns={columns}`) > -1).toBeTruthy(); }) // test('$.generate: import generate should be ok', () => { // const res = $(`const baseUrl = import.meta.env.VITE_APP_WEB_API_URL;`) // .generate(); // expect(res.indexOf(`import`) > -1).toBeTruthy(); // todo // })