mattwr18 fa02a4dd33 Write cypress tests for ImageUploader
- have I missed any important features? too many tests?
2020-02-12 17:53:38 +01:00

29 lines
870 B
JavaScript

import { createWriteStream } from 'fs'
import path from 'path'
import slug from 'slug'
import uuid from 'uuid/v4'
const localFileUpload = async ({ createReadStream, uniqueFilename }) => {
await new Promise((resolve, reject) =>
createReadStream()
.pipe(createWriteStream(`public${uniqueFilename}`))
.on('finish', resolve)
.on('error', reject),
)
return uniqueFilename
}
export default async function fileUpload(params, { file, url }, uploadCallback = localFileUpload) {
const upload = params[file]
if (upload) {
const { createReadStream, filename } = await upload
const { name, ext } = path.parse(filename)
const uniqueFilename = `/uploads/${uuid()}-${slug(name)}${ext}`
const location = await uploadCallback({ createReadStream, uniqueFilename })
delete params[file]
params[url] = location
}
return params
}