diff options
| -rw-r--r-- | app/controllers/api/v1/netex_imports_controller.rb | 32 | ||||
| -rw-r--r-- | app/views/api/v1/netex_imports/create.json.rabl | 4 | ||||
| -rw-r--r-- | spec/requests/api/v1/netex_import_spec.rb | 14 |
3 files changed, 27 insertions, 23 deletions
diff --git a/app/controllers/api/v1/netex_imports_controller.rb b/app/controllers/api/v1/netex_imports_controller.rb index e9b8242bd..b4d3caf16 100644 --- a/app/controllers/api/v1/netex_imports_controller.rb +++ b/app/controllers/api/v1/netex_imports_controller.rb @@ -4,27 +4,29 @@ module Api def create respond_to do | format | - format.json do - workbench = Workbench.where(id: netex_import_params['workbench_id']).first - if workbench - @referential = Referential.new(name: netex_import_params['name'], organisation_id: workbench.organisation_id, workbench_id: workbench.id) - @import = NetexImport.new(netex_import_params) - if @import.valid? && @referential.valid? - @import.save! - @referential.save! - else - render json: {errors: @import.errors.to_h.merge( @referential.errors.to_h )}, status: 406 - end - else - render json: {errors: {'workbench_id' => 'missing'}}, status: 406 - end - end + format.json(&method(:create_models)) end end private + def create_models + require 'pry' + binding.pry + workbench = Workbench.where(id: netex_import_params['workbench_id']).first + return render json: {errors: {'workbench_id' => 'missing'}}, status: 406 unless workbench + + @referential = Referential.new(name: netex_import_params['name'], organisation_id: workbench.organisation_id, workbench_id: workbench.id) + @netex_import = NetexImport.new(netex_import_params.merge(referential_id: @referential.id)) + if @netex_import.valid? && @referential.valid? + @netex_import.save! + @referential.save! + else + render json: {errors: @netex_import.errors.to_h.merge( @referential.errors.to_h )}, status: 406 + end + end + def netex_import_params params .require('netex_import') diff --git a/app/views/api/v1/netex_imports/create.json.rabl b/app/views/api/v1/netex_imports/create.json.rabl index 1361cdb80..f37703349 100644 --- a/app/views/api/v1/netex_imports/create.json.rabl +++ b/app/views/api/v1/netex_imports/create.json.rabl @@ -1,3 +1,3 @@ -object @import -attributes :id, :type +object @netex_import +attributes :id, :workbench_id, :referential_id diff --git a/spec/requests/api/v1/netex_import_spec.rb b/spec/requests/api/v1/netex_import_spec.rb index da42f8e19..e9b051043 100644 --- a/spec/requests/api/v1/netex_import_spec.rb +++ b/spec/requests/api/v1/netex_import_spec.rb @@ -30,10 +30,14 @@ RSpec.describe "NetexImport", type: :request do context 'with correct credentials and correct request' do let( :authorization ){ authorization_token_header( get_api_key.token ) } - it 'succeeds' do + it 'succeeds', :wip do post_request.(netex_import: legal_attributes) expect( response ).to be_success - expect( json_response_body ).to eq({'id' => NetexImport.last.id, 'type' => 'NetexImport'}) + expect( json_response_body ).to eq( + 'id' => NetexImport.last.id, + 'referential_id' => Referential.last.id, + 'workbench_id' => workbench.id + ) end it 'creates a NetexImport object in the DB' do @@ -50,18 +54,16 @@ RSpec.describe "NetexImport", type: :request do end end + context 'with incorrect credentials and correct request' do let( :authorization ){ authorization_token_header( "#{referential.id}-incorrect_token") } - it 'does not succeed' do + it 'does not create any DB object and does not succeed' do legal_attributes # force object creation for correct to change behavior expect{ post_request.(netex_import: legal_attributes) }.not_to change{Referential.count} expect( response.status ).to eq(401) end - it 'does not create an Import object' do - expect{ post_request.(netex_import: legal_attributes) }.not_to change{Import.count} - end end context 'with correct credentials and incorrect request' do |
