Browse Source

Transloadit: test for dynamic params

Renée Kooi 7 năm trước cách đây
mục cha
commit
dde92f80a6
1 tập tin đã thay đổi với 90 bổ sung0 xóa
  1. 90 0
      test/unit/Transloadit.spec.js

+ 90 - 0
test/unit/Transloadit.spec.js

@@ -59,3 +59,93 @@ test('Transloadit: Validates response from getAssemblyOptions()', (t) => {
     })
   }, t.fail)
 })
+
+test('Transloadit: Uses different assemblies for different params', (t) => {
+  t.plan(5)
+
+  const uppy = new Core({ autoProceed: false })
+
+  uppy.use(Transloadit, {
+    getAssemblyOptions: (file) => ({
+      params: {
+        auth: { key: 'fake key' },
+        steps: {
+          fake_step: { data: file.name }
+        }
+      }
+    })
+  })
+
+  const tl = uppy.getPlugin('Transloadit')
+  const files = ['a.png', 'b.png', 'c.png', 'd.png']
+  let i = 0
+  tl.client.createAssembly = (opts) => {
+    t.equal(opts.params.steps.fake_step.data, files[i], `assembly for file ${files[i]}`)
+    i++
+    // Short-circuit upload
+    return Promise.reject('short-circuit')
+  }
+
+  const data = Buffer.alloc(10)
+  data.size = data.byteLength
+
+  Promise.all([
+    uppy.addFile({ name: 'a.png', data }),
+    uppy.addFile({ name: 'b.png', data }),
+    uppy.addFile({ name: 'c.png', data }),
+    uppy.addFile({ name: 'd.png', data })
+  ]).then(() => {
+    uppy.upload().then(t.fail, () => {
+      t.equal(i, 4, 'created 4 assemblies')
+      t.end()
+    })
+  }, t.fail)
+})
+
+test('Transloadit: Should merge files with same parameters into one assembly', (t) => {
+  t.plan(3)
+
+  const uppy = new Core({ autoProceed: false })
+
+  uppy.use(Transloadit, {
+    getAssemblyOptions: (file) => ({
+      params: {
+        auth: { key: 'fake key' },
+        steps: {
+          fake_step: { data: file.size }
+        }
+      }
+    })
+  })
+
+  const tl = uppy.getPlugin('Transloadit')
+  const assemblies = [
+    { data: 10, files: ['a.png', 'b.png', 'c.png'] },
+    { data: 20, files: ['d.png'] }
+  ]
+  let i = 0
+  tl.client.createAssembly = (opts) => {
+    const assembly = assemblies[i]
+    t.equal(opts.params.steps.fake_step.data, assembly.data, `assembly for files ${assembly.files.join(',')}`)
+    i++
+    // Short-circuit upload
+    return Promise.reject('short-circuit')
+  }
+
+  const data = Buffer.alloc(10)
+  data.size = data.byteLength
+  const data2 = Buffer.alloc(20)
+  data2.size = data2.byteLength
+
+  Promise.all([
+    uppy.addFile({ name: 'a.png', data }),
+    uppy.addFile({ name: 'b.png', data }),
+    uppy.addFile({ name: 'c.png', data }),
+    uppy.addFile({ name: 'd.png', data: data2 })
+  ]).then(() => {
+    uppy.upload().then(t.fail, () => {
+      t.equal(i, 2, 'created two assemblies')
+      t.end()
+    })
+  }, t.fail)
+})