import { describe, it, expect } from 'vitest'
import { VueToDslConverter } from '../../src/converter'
import fs from 'fs'
import path from 'path'
const fullDir = __dirname
const inputDir = path.join(fullDir, 'input')
const appDir = path.join(inputDir, 'appdemo01')
const outputDir = path.join(fullDir, 'output')
function writeOutput(name, schema) {
fs.mkdirSync(outputDir, { recursive: true })
const file = path.join(outputDir, `${name}`)
fs.writeFileSync(file, JSON.stringify(schema, null, 2), 'utf-8')
return file
}
describe('Full - convert app directory', () => {
it('should convert input/appdemo01 into a merged schema.json', async () => {
const converter = new VueToDslConverter({ computed_flag: true })
const schema = await converter.convertAppDirectory(appDir)
expect(schema).toBeDefined()
expect(schema.pageSchema && Array.isArray(schema.pageSchema)).toBe(true)
expect(schema.i18n && schema.i18n.en_US && schema.i18n.zh_CN).toBeDefined()
expect(schema.dataSource && Array.isArray(schema.dataSource.list)).toBe(true)
expect(Array.isArray(schema.globalState)).toBe(true)
writeOutput('schema.json', schema)
})
it('should convert appdemo01.zip buffer into a merged schema.json', async () => {
const converter = new VueToDslConverter({ computed_flag: true })
const zipPath = path.join(inputDir, 'appdemo01.zip')
const zipBuf = fs.readFileSync(zipPath)
const schema = await converter.convertAppFromZip(zipBuf)
expect(schema).toBeDefined()
expect(schema.pageSchema && Array.isArray(schema.pageSchema)).toBe(true)
expect(schema.i18n && schema.i18n.en_US && schema.i18n.zh_CN).toBeDefined()
expect(schema.dataSource && Array.isArray(schema.dataSource.list)).toBe(true)
expect(Array.isArray(schema.globalState)).toBe(true)
writeOutput('schema.from-zip.json', schema)
})
})