import TestDTO from './test-dto.js' /** * */ class TestSuiteDTO { /** * * @param {any} json * @returns {TestSuiteDTO} */ static fromJSON (json) { const suite = new TestSuiteDTO(json.name, json.configuration, json.yaml, json.id) if (json.tests) { suite.tests = json.tests.map(t => new TestDTO(t)) } return suite } /** * @param {string} name * @param {string} configurationFile * @param {string} yamlFile * @returns {TestSuiteDTO} */ static fromFiles (name, configurationFile, yamlFile) { const fs = require('fs') if (!fs.existsSync(configurationFile)) { throw new Error('Configuration file not found: ' + configurationFile) } const configurationContents = fs.readFileSync(configurationFile, 'utf-8') if (!fs.existsSync(yamlFile)) { throw new Error('Test file not found: ' + yamlFile) } const yamlContents = fs.readFileSync(yamlFile, 'utf-8') const configuration = JSON.parse(configurationContents) return new TestSuiteDTO(name, configuration, yamlContents) } /** * @param {string} name * @param {any} configuration * @param {string} yaml * @param {string | undefined} id */ constructor (name, configuration, yaml, id = undefined) { this.name = name this.configuration = configuration this.yaml = yaml this.id = id /** @type {TestDTO[] | undefined} */ this.tests = undefined } } export default TestSuiteDTO