Merge pull request #1764 from transloadit/allowMultipleUploads-false-and-cancel

Made sure we can upload new files if we cancel last file (allowMultipleUploads: false)
This commit is contained in:
Evgenia Karunus 2019-08-13 18:08:33 +05:00 committed by GitHub
commit 21db40bb22
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 71 additions and 18 deletions

View file

@ -553,7 +553,12 @@ class Uppy {
this.setState({
currentUploads: updatedUploads,
files: updatedFiles
files: updatedFiles,
...(
// If this is the last file we just removed - allow new uploads!
Object.keys(updatedFiles).length === 0 &&
{ allowNewUpload: true }
)
})
removeUploads.forEach((uploadID) => {
@ -653,7 +658,6 @@ class Uppy {
})
this.setState({
allowNewUpload: true,
totalProgress: 0,
error: null
})

View file

@ -664,27 +664,76 @@ describe('src/Core', () => {
expect(core.getFiles().length).toEqual(0)
})
it('allows no new files after upload when allowMultipleUploads: false', async () => {
const core = new Core({ allowMultipleUploads: false })
core.addFile({
source: 'jest',
name: 'foo.jpg',
type: 'image/jpeg',
data: new File([sampleImage], { type: 'image/jpeg' })
})
await core.upload()
expect(() => {
describe('with allowMultipleUploads: false', () => {
it('allows no new files after upload', async () => {
const core = new Core({ allowMultipleUploads: false })
core.addFile({
source: 'jest',
name: '123.foo',
name: 'foo.jpg',
type: 'image/jpeg',
data: new File([sampleImage], { type: 'image/jpeg' })
})
}).toThrow(
/Cannot add new files: already uploading\./
)
await core.upload()
expect(() => {
core.addFile({
source: 'jest',
name: '123.foo',
type: 'image/jpeg',
data: new File([sampleImage], { type: 'image/jpeg' })
})
}).toThrow(
/Cannot add new files: already uploading\./
)
})
it('does not allow new files after the removeFile() if some file is still present', async () => {
const core = new Core({ allowMultipleUploads: false })
// adding 2 files
const fileId1 = core.addFile({
source: 'jest',
name: '1.jpg',
type: 'image/jpeg',
data: new File([sampleImage], { type: 'image/jpeg' })
})
core.addFile({
source: 'jest',
name: '2.jpg',
type: 'image/jpeg',
data: new File([sampleImage], { type: 'image/jpeg' })
})
// removing 1 file
core.removeFile(fileId1)
await expect(core.upload()).resolves.toBeDefined()
})
it('allows new files after the last removeFile()', async () => {
const core = new Core({ allowMultipleUploads: false })
// adding 2 files
const fileId1 = core.addFile({
source: 'jest',
name: '1.jpg',
type: 'image/jpeg',
data: new File([sampleImage], { type: 'image/jpeg' })
})
const fileId2 = core.addFile({
source: 'jest',
name: '2.jpg',
type: 'image/jpeg',
data: new File([sampleImage], { type: 'image/jpeg' })
})
// removing 2 files
core.removeFile(fileId1)
core.removeFile(fileId2)
await expect(core.upload()).resolves.toBeDefined()
})
})
it('does not dedupe different files', async () => {