/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable require-jsdoc */ import {IFrameworkResponse} from "sdk-sanity-generator/dist/interfaces"; const prettier = require('prettier'); function createTestFile(txs: IFrameworkResponse[]){ let file = `cloud->cloudName('demo'); `; file += `/** * Class TransformationSanityTest */\n`; file += `final class TransformationSanityTest extends TestCase {\n`; file += txs.map((txResult, index) => { let realCode = txResult.codeSnippet; realCode = realCode.replace("new ImageTag('sample')", "new Image('sample')"); realCode = realCode.replace("new VideoTag('sample')", "new Video('sample')"); let test = ` public function testTransformation${index}($tr='${txResult.transformation}') {\n`; const qualifiers = txResult.transformation.replace(/\//g, ',').split(',').filter(n => n); const qualifiersStr = JSON.stringify(qualifiers).replace(/"/g,"'"); test += ` $qualifiers = ${qualifiersStr};`; test += `\n\n`; test += ` $tAsset = ${realCode}`; test += `\n\n`; test += ` foreach ($qualifiers as $qualifier) {\n`; test += ` self::assertContains( $qualifier, (string)$tAsset ); }` test += '\n }\n'; // Close it test try { return prettier.format(test, {parser: 'babel'}); } catch (e) { return test; } }).join('\n'); file += `\n}\n`; try { return prettier.format(file, {parser: 'babel'}); } catch (e) { return file; } } module.exports = createTestFile;