{"version":3,"file":"mock.mjs","sources":["../../../../components/upload/tests/mock.ts"],"sourcesContent":["import { nextTick } from 'vue'\r\nimport { vi } from 'vitest'\r\n\r\nimport type { DOMWrapper } from '@vue/test-utils'\r\nimport type { UploadSourceFile } from '../symbol'\r\n\r\nconst getMockFile = (element: HTMLInputElement, files: File[]) => {\r\n  vi.spyOn(element, 'files', 'get').mockReturnValue(files as unknown as FileList)\r\n}\r\n\r\nexport const getXhr = (type: 'success' | 'error' | 'abort') => {\r\n  return class XMLHttpRequest {\r\n    status = 0\r\n    withCredentials = false\r\n    responseText = '{\"success\": true}'\r\n    response = 'success'\r\n\r\n    upload = {\r\n      onprogress(event: { loaded: number, total: number }) {\r\n        return event\r\n      },\r\n    }\r\n\r\n    open() {\r\n      // start mock xhr\r\n    }\r\n\r\n    setRequestHeader() {\r\n      // set mock xhr header\r\n    }\r\n\r\n    send() {\r\n      if (type === 'success') {\r\n        // send mock xhr\r\n        this.status = 200\r\n      } else if (type === 'abort') {\r\n        this.onabort()\r\n        this.abort()\r\n      } else if (type === 'error') {\r\n        this.status = 199\r\n        this.onerror()\r\n      }\r\n\r\n      this.onload()\r\n      this.upload.onprogress({\r\n        loaded: 50,\r\n        total: 100,\r\n      })\r\n    }\r\n\r\n    onload() {\r\n      // mock xhr onload\r\n    }\r\n\r\n    onabort() {\r\n      // mock xhr onabort\r\n    }\r\n\r\n    abort() {\r\n      // mock xhr abort\r\n    }\r\n\r\n    onerror() {\r\n      // mock xhr onerror\r\n    }\r\n  }\r\n}\r\n\r\nexport const triggerUploadFiles = async (input: DOMWrapper<HTMLInputElement>, fileList: any[]) => {\r\n  getMockFile(input.element, fileList)\r\n  await input.trigger('change')\r\n  await nextTick()\r\n}\r\n\r\nexport class FormData {\r\n  append() {\r\n    // mock FormData append\r\n  }\r\n}\r\n\r\nexport class FileReader {\r\n  result = ''\r\n\r\n  readAsDataURL(source: UploadSourceFile) {\r\n    this.result = `data:image/svg+xml;base64,${source.name}`\r\n    nextTick(() => {\r\n      this.onload()\r\n    })\r\n  }\r\n\r\n  onload() {\r\n    // mock FileReader onload\r\n  }\r\n}\r\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;"}