{"version":3,"file":"mock.mjs","sources":["../../../../components/upload/tests/mock.ts"],"sourcesContent":["import { nextTick } from 'vue'\nimport { vi } from 'vitest'\n\nimport type { DOMWrapper } from '@vue/test-utils'\nimport type { UploadSourceFile } from '../symbol'\n\nconst getMockFile = (element: HTMLInputElement, files: File[]) => {\n  vi.spyOn(element, 'files', 'get').mockReturnValue(files as unknown as FileList)\n}\n\nexport const getXhr = (type: 'success' | 'error' | 'abort') => {\n  return class XMLHttpRequest {\n    status = 0\n    withCredentials = false\n    responseText = '{\"success\": true}'\n    response = 'success'\n\n    upload = {\n      onprogress(event: { loaded: number, total: number }) {\n        return event\n      },\n    }\n\n    open() {\n      // start mock xhr\n    }\n\n    setRequestHeader() {\n      // set mock xhr header\n    }\n\n    send() {\n      if (type === 'success') {\n        // send mock xhr\n        this.status = 200\n      } else if (type === 'abort') {\n        this.onabort()\n        this.abort()\n      } else if (type === 'error') {\n        this.status = 199\n        this.onerror()\n      }\n\n      this.onload()\n      this.upload.onprogress({\n        loaded: 50,\n        total: 100,\n      })\n    }\n\n    onload() {\n      // mock xhr onload\n    }\n\n    onabort() {\n      // mock xhr onabort\n    }\n\n    abort() {\n      // mock xhr abort\n    }\n\n    onerror() {\n      // mock xhr onerror\n    }\n  }\n}\n\nexport const triggerUploadFiles = async (input: DOMWrapper<HTMLInputElement>, fileList: any[]) => {\n  getMockFile(input.element, fileList)\n  await input.trigger('change')\n  await nextTick()\n}\n\nexport class FormData {\n  append() {\n    // mock FormData append\n  }\n}\n\nexport class FileReader {\n  result = ''\n\n  readAsDataURL(source: UploadSourceFile) {\n    this.result = `data:image/svg+xml;base64,${source.name}`\n    nextTick(() => {\n      this.onload()\n    })\n  }\n\n  onload() {\n    // mock FileReader onload\n  }\n}\n"],"names":["getMockFile","element","files","vi","getXhr","type","__publicField","event","triggerUploadFiles","input","fileList","nextTick","FormData","FileReader","source"],"mappings":";;;;;;AAMA,MAAMA,IAAc,CAACC,GAA2BC,MAAkB;AAChE,EAAAC,EAAG,MAAMF,GAAS,SAAS,KAAK,EAAE,gBAAgBC,CAA4B;AAChF,GAEaE,IAAS,CAACC,MACd,MAAqB;AAAA,EAArB;AACL,IAAAC,EAAA,gBAAS;AACT,IAAAA,EAAA,yBAAkB;AAClB,IAAAA,EAAA,sBAAe;AACf,IAAAA,EAAA,kBAAW;AAEX,IAAAA,EAAA,gBAAS;AAAA,MACP,WAAWC,GAA0C;AAC5C,eAAAA;AAAA,MAAA;AAAA,IAEX;AAAA;AAAA,EAEA,OAAO;AAAA,EAAA;AAAA,EAIP,mBAAmB;AAAA,EAAA;AAAA,EAInB,OAAO;AACL,IAAIF,MAAS,YAEX,KAAK,SAAS,MACLA,MAAS,WAClB,KAAK,QAAQ,GACb,KAAK,MAAM,KACFA,MAAS,YAClB,KAAK,SAAS,KACd,KAAK,QAAQ,IAGf,KAAK,OAAO,GACZ,KAAK,OAAO,WAAW;AAAA,MACrB,QAAQ;AAAA,MACR,OAAO;AAAA,IAAA,CACR;AAAA,EAAA;AAAA,EAGH,SAAS;AAAA,EAAA;AAAA,EAIT,UAAU;AAAA,EAAA;AAAA,EAIV,QAAQ;AAAA,EAAA;AAAA,EAIR,UAAU;AAAA,EAAA;AAGZ,GAGWG,IAAqB,OAAOC,GAAqCC,MAAoB;AACpF,EAAAV,EAAAS,EAAM,SAASC,CAAQ,GAC7B,MAAAD,EAAM,QAAQ,QAAQ,GAC5B,MAAME,EAAS;AACjB;AAEO,MAAMC,EAAS;AAAA,EACpB,SAAS;AAAA,EAAA;AAGX;AAEO,MAAMC,EAAW;AAAA,EAAjB;AACL,IAAAP,EAAA,gBAAS;AAAA;AAAA,EAET,cAAcQ,GAA0B;AACjC,SAAA,SAAS,6BAA6BA,EAAO,IAAI,IACtDH,EAAS,MAAM;AACb,WAAK,OAAO;AAAA,IAAA,CACb;AAAA,EAAA;AAAA,EAGH,SAAS;AAAA,EAAA;AAGX;"}