From c57ab7544181c5fd62f1c93a3f5285809d95d497 Mon Sep 17 00:00:00 2001 From: Ifedapo Olarewaju Date: Sun, 20 May 2018 11:55:29 +0100 Subject: [PATCH] prevent duplicate assembly steps fixes #27 --- CHANGELOG.md | 4 ++++ lib/transloadit/assembly.rb | 3 +++ test/unit/test_transloadit.rb | 4 ++-- test/unit/transloadit/test_assembly.rb | 9 +++++++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9622c14..c76d8f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +### 3.0.0 / ????-??-?? ### + +* Prevent duplicate assembly steps [#49](https://github.com/transloadit/ruby-sdk/issues/27) (@ifedapoolarewaju) + ### 2.0.1 / 2017-01-23 ### * Use the ssl enabled url as the API base url (@ifedapoolarewaju) diff --git a/lib/transloadit/assembly.rb b/lib/transloadit/assembly.rb index 9a7c4bf..d21c604 100644 --- a/lib/transloadit/assembly.rb +++ b/lib/transloadit/assembly.rb @@ -144,6 +144,9 @@ def _wrap_steps_in_hash(steps) when Hash then steps when Transloadit::Step then steps.to_hash else + if steps.uniq(&:name) != steps + raise ArgumentError, "There are different Assembly steps using the same name" + end steps.inject({}) {|h, s| h.update s } end end diff --git a/test/unit/test_transloadit.rb b/test/unit/test_transloadit.rb index b3189c0..543d0bc 100644 --- a/test/unit/test_transloadit.rb +++ b/test/unit/test_transloadit.rb @@ -75,8 +75,8 @@ it 'must create assemblies with multiple steps' do steps = [ - @transloadit.step(nil, nil), - @transloadit.step(nil, nil), + @transloadit.step('step1', nil), + @transloadit.step('step2', nil), ] assembly = @transloadit.assembly :steps => steps diff --git a/test/unit/transloadit/test_assembly.rb b/test/unit/transloadit/test_assembly.rb index efb6787..07aa9e0 100644 --- a/test/unit/transloadit/test_assembly.rb +++ b/test/unit/transloadit/test_assembly.rb @@ -168,6 +168,15 @@ @assembly.to_hash[:steps].keys.must_include @encode.name @assembly.to_hash[:steps].keys.must_include @thumbs.name end + + it 'must not allow duplicate steps' do + thumbs = @transloadit.step('thumbs', '/video/thumbs') + thumbs_duplicate = @transloadit.step('thumbs', '/video/encode') + options = { :steps => [ thumbs, thumbs_duplicate ] } + assert_raises ArgumentError do + response = @assembly.create! open('lib/transloadit/version.rb'), options + end + end end describe 'using assembly API methods' do