aboutsummaryrefslogtreecommitdiffstats
path: root/spec/workers
diff options
context:
space:
mode:
Diffstat (limited to 'spec/workers')
-rw-r--r--spec/workers/workbench_import_worker_spec.rb62
1 files changed, 34 insertions, 28 deletions
diff --git a/spec/workers/workbench_import_worker_spec.rb b/spec/workers/workbench_import_worker_spec.rb
index d227c7610..68e429b60 100644
--- a/spec/workers/workbench_import_worker_spec.rb
+++ b/spec/workers/workbench_import_worker_spec.rb
@@ -2,54 +2,60 @@ RSpec.describe WorkbenchImportWorker, type: [:worker, :request] do
let( :worker ) { described_class.new }
let( :import ){ build_stubbed :import, token_download: download_token, file: File.open(zip_file) }
+
let( :workbench ){ import.workbench }
let( :referential ){ import.referential }
+ let( :api_key ){ build_stubbed :api_key, referential: referential, token: "#{referential.id}-#{SecureRandom.hex}" }
+ let( :params ){ {referential_id: referential.id, workbench_id: workbench.id} }
# http://www.example.com/workbenches/:workbench_id/imports/:id/download
- let( :url ){ "#{File.join(host, path)}?token=#{download_token}" }
let( :host ){ Rails.configuration.front_end_host }
let( :path ){ download_workbench_import_path(workbench, import) }
- let( :result ){ import.file.read }
+ let( :downloaded_zip ){ double("downloaded zip") }
let( :download_token ){ SecureRandom.urlsafe_base64 }
+ let( :upload_path ) { '/api/v1/netex_imports.json' }
+
+ let( :entry_group_streams ) do
+ 2.times.map{ |i| double( "entry group stream #{i}" ) }
+ end
+ let( :entry_groups ) do
+ 2.times.map do | i |
+ {"entry_group_name#{i}" => entry_group_streams[i] }
+ end
+ end
+
+ let( :zip_service ){ double("zip service") }
+
before do
# That should be `build_stubbed's` job, no?
allow(Import).to receive(:find).with(import.id).and_return(import)
+ allow(Api::V1::ApiKey).to receive(:from).and_return(api_key)
+ allow(ZipService).to receive(:new).with(downloaded_zip).and_return zip_service
+ expect(zip_service).to receive(:entry_group_streams).and_return(entry_groups)
end
- context 'multireferential zipfile' do
+ context 'multireferential zipfile' do
let( :zip_file ){ File.join(fixture_path, 'multiref.zip') }
it 'downloads a zip file' do
- default_headers = {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}
- stub_request(:get, url)
- .with(headers: default_headers)
- .to_return(body: result)
-
- worker.perform import.id
-
- require 'pry'
- binding.pry
- expect( File.read(worker.downloaded) ).to eq( result )
- expect( worker ).not_to be_single_entry
- end
- end
-
- context 'unireferential zipfile' do
- let( :zip_file ){ File.join(fixture_path, 'uniref.zip') }
-
- it 'downloads a zip file' do
- default_headers = {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}
- stub_request(:get, url)
- .with(headers: default_headers)
- .to_return(body: result)
-
+ expect(HTTPService).to receive(:get_resource)
+ .with(host: host, path: path, params: {token: download_token})
+ .and_return( downloaded_zip )
+
+ entry_groups.each do | entry_group_name, entry_group_stream |
+ expect( HTTPService ).to receive(:post_resource)
+ .with(host: host,
+ path: upload_path,
+ resource_name: 'netex_import',
+ token: api_key.token,
+ params: params,
+ upload: {file: [entry_group_stream, 'application/zip', entry_group_name]})
+ end
worker.perform import.id
- expect( File.read(worker.downloaded) ).to eq( result )
- expect( worker ).to be_single_entry
end
end