vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 3.06 kB
Source Map (JSON)
{"version":3,"file":"mock.cjs","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":"sqBAMMA,EAAc,CAACC,EAA2BC,IAAkB,CAChEC,EAAA,EAAG,MAAMF,EAAS,QAAS,KAAK,EAAE,gBAAgBC,CAA4B,CAChF,EAEaE,EAAUC,GACd,KAAqB,CAArB,cACLC,EAAA,cAAS,GACTA,EAAA,uBAAkB,IAClBA,EAAA,oBAAe,qBACfA,EAAA,gBAAW,WAEXA,EAAA,cAAS,CACP,WAAWC,EAA0C,CAC5C,OAAAA,CAAA,CAEX,GAEA,MAAO,CAAA,CAIP,kBAAmB,CAAA,CAInB,MAAO,CACDF,IAAS,UAEX,KAAK,OAAS,IACLA,IAAS,SAClB,KAAK,QAAQ,EACb,KAAK,MAAM,GACFA,IAAS,UAClB,KAAK,OAAS,IACd,KAAK,QAAQ,GAGf,KAAK,OAAO,EACZ,KAAK,OAAO,WAAW,CACrB,OAAQ,GACR,MAAO,GAAA,CACR,CAAA,CAGH,QAAS,CAAA,CAIT,SAAU,CAAA,CAIV,OAAQ,CAAA,CAIR,SAAU,CAAA,CAGZ,EAGWG,EAAqB,MAAOC,EAAqCC,IAAoB,CACpFV,EAAAS,EAAM,QAASC,CAAQ,EAC7B,MAAAD,EAAM,QAAQ,QAAQ,EAC5B,MAAME,WAAS,CACjB,EAEO,MAAMC,CAAS,CACpB,QAAS,CAAA,CAGX,CAEO,MAAMC,CAAW,CAAjB,cACLP,EAAA,cAAS,IAET,cAAcQ,EAA0B,CACjC,KAAA,OAAS,6BAA6BA,EAAO,IAAI,GACtDH,EAAAA,SAAS,IAAM,CACb,KAAK,OAAO,CAAA,CACb,CAAA,CAGH,QAAS,CAAA,CAGX"}