de/frontend/src/views/system/datasource/ApiTestModel.js
Dovahkinn 4fb548ada2
前端项目运行时的部分警告处理 (#2759)
* fix: 执行 eslint 命令, 修复代码

* fix(frontend): justify-content 不支持的值 start, end 改为 flex-start, flex-end

* Update format-utils.js

去掉注释

Co-authored-by: 王嘉豪 <42510293+ziyujiahao@users.noreply.github.com>
2022-08-02 13:22:28 +08:00

165 lines
3.6 KiB
JavaScript

export class BaseConfig {
set(options, notUndefined) {
options = this.initOptions(options)
for (const name in options) {
if (options.hasOwnProperty(name)) {
if (!(this[name] instanceof Array)) {
if (notUndefined === true) {
this[name] = options[name] === undefined ? this[name] : options[name]
} else {
this[name] = options[name]
}
}
}
}
}
sets(types, options) {
options = this.initOptions(options)
if (types) {
for (const name in types) {
if (types.hasOwnProperty(name) && options.hasOwnProperty(name)) {
options[name].forEach(o => {
this[name].push(new types[name](o))
})
}
}
}
}
initOptions(options) {
return options || {}
}
isValid() {
return true
}
}
export class KeyValue extends BaseConfig {
constructor(options) {
options = options || {}
options.enable = options.enable === undefined ? true : options.enable
super()
this.name = undefined
this.value = undefined
this.type = undefined
this.files = undefined
this.enable = undefined
this.uuid = undefined
this.time = undefined
this.contentType = undefined
this.set(options)
}
isValid() {
return (!!this.name || !!this.value) && this.type !== 'file'
}
isFile() {
return (!!this.name || !!this.value) && this.type === 'file'
}
}
export class Body extends BaseConfig {
constructor(options) {
super()
this.type = 'KeyValue'
this.raw = undefined
this.kvs = []
this.binary = []
this.set(options)
this.sets({ kvs: KeyValue }, { binary: KeyValue }, options)
}
isValid() {
if (this.isKV()) {
return this.kvs.some(kv => {
return kv.isValid()
})
} else {
return !!this.raw
}
}
isKV() {
return [BODY_TYPE.FORM_DATA, BODY_TYPE.WWW_FORM, BODY_TYPE.BINARY].indexOf(this.type) > 0
}
}
export const createComponent = function(name) {
const component = MODELS[name]
if (component) {
return new component()
} else {
return new UnsupportedComponent()
}
}
export const BODY_TYPE = {
KV: 'KeyValue',
FORM_DATA: 'Form_Data',
RAW: 'Raw',
WWW_FORM: 'WWW_FORM',
XML: 'XML',
JSON: 'JSON'
}
export class Scenario extends BaseConfig {
constructor(options = {}) {
super()
this.id = undefined
this.name = undefined
this.url = undefined
this.variables = []
this.headers = []
this.requests = []
this.environmentId = undefined
this.dubboConfig = undefined
this.environment = undefined
this.enableCookieShare = false
this.enable = true
this.databaseConfigs = []
this.tcpConfig = undefined
this.set(options)
this.sets({
variables: KeyValue,
headers: KeyValue,
requests: RequestFactory,
databaseConfigs: DatabaseConfig
}, options)
}
initOptions(options = {}) {
options.id = options.id || uuid()
options.requests = options.requests || [new RequestFactory()]
options.databaseConfigs = options.databaseConfigs || []
options.dubboConfig = new DubboConfig(options.dubboConfig)
options.tcpConfig = new TCPConfig(options.tcpConfig)
return options
}
clone() {
const clone = new Scenario(this)
clone.id = uuid()
return clone
}
isValid() {
if (this.enable) {
for (let i = 0; i < this.requests.length; i++) {
const validator = this.requests[i].isValid(this.environmentId, this.environment)
if (!validator.isValid) {
return validator
}
}
}
return { isValid: true }
}
isReference() {
return this.id.indexOf('#') !== -1
}
}