From be62ee08f4889fc7982467d40470662e02684ac9 Mon Sep 17 00:00:00 2001
From: Teddy Wing
Date: Thu, 13 Jul 2017 18:36:04 +0200
Subject: Add `WorkbenchImport` model
A new model that represents a batched import. The zip archive attached
to this record will contain one or more datasets. A `Referential` will
be created for each dataset in the zip, and that sub-dataset will be
scheduled for a Netex import (only handling Netex imports at the
moment).
The model is currently empty but I'm committing it now so it can be used
by others on the team.
Refs #3507
---
app/models/workbench_import.rb | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 app/models/workbench_import.rb
diff --git a/app/models/workbench_import.rb b/app/models/workbench_import.rb
new file mode 100644
index 000000000..9323bd4b5
--- /dev/null
+++ b/app/models/workbench_import.rb
@@ -0,0 +1,2 @@
+class WorkbenchImport < Import
+end
--
cgit v1.2.3
From 781f3ae0b3dab188ba7bb960e46addb0995b45f2 Mon Sep 17 00:00:00 2001
From: Robert
Date: Fri, 14 Jul 2017 10:25:32 +0200
Subject: Fixes: #3555@1h
- Import#parent_id & #parent_type migration generated
- Import#belongs_to :parent, class_name: to_s specified
- Import#belongs_to :parent, class_name: to_s implemented
---
app/controllers/import_tasks_controller.rb | 1 -
app/models/import.rb | 2 ++
...0170715041954_add_parent_type_and_parent_id_to_imports.rb | 6 ++++++
db/schema.rb | 4 +++-
spec/controllers/api/v1/netex_import_controller_spec.rb | 12 ++++++++++++
spec/models/import_spec.rb | 1 +
6 files changed, 24 insertions(+), 2 deletions(-)
create mode 100644 db/migrate/20170715041954_add_parent_type_and_parent_id_to_imports.rb
create mode 100644 spec/controllers/api/v1/netex_import_controller_spec.rb
diff --git a/app/controllers/import_tasks_controller.rb b/app/controllers/import_tasks_controller.rb
index 0e3ed6445..cb377ec5a 100644
--- a/app/controllers/import_tasks_controller.rb
+++ b/app/controllers/import_tasks_controller.rb
@@ -1,4 +1,3 @@
-# coding: utf-8
class ImportTasksController < ChouetteController
defaults :resource_class => ImportTask
diff --git a/app/models/import.rb b/app/models/import.rb
index d0736ab0b..535c676b1 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -3,6 +3,8 @@ class Import < ActiveRecord::Base
belongs_to :workbench
belongs_to :referential
+ belongs_to :parent, class_name: to_s
+
extend Enumerize
enumerize :status, in: %i(new pending successful failed running aborted canceled)
diff --git a/db/migrate/20170715041954_add_parent_type_and_parent_id_to_imports.rb b/db/migrate/20170715041954_add_parent_type_and_parent_id_to_imports.rb
new file mode 100644
index 000000000..96c1c2a59
--- /dev/null
+++ b/db/migrate/20170715041954_add_parent_type_and_parent_id_to_imports.rb
@@ -0,0 +1,6 @@
+class AddParentTypeAndParentIdToImports < ActiveRecord::Migration
+ def change
+ add_column :imports, :parent_id, :bigint
+ add_column :imports, :parent_type, :string
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index e64e5c04a..b56027f48 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20170607141317) do
+ActiveRecord::Schema.define(version: 20170715041954) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -285,6 +285,8 @@ ActiveRecord::Schema.define(version: 20170607141317) do
t.datetime "ended_at"
t.string "token_download"
t.string "type", limit: 255
+ t.integer "parent_id", limit: 8
+ t.string "parent_type"
end
add_index "imports", ["referential_id"], name: "index_imports_on_referential_id", using: :btree
diff --git a/spec/controllers/api/v1/netex_import_controller_spec.rb b/spec/controllers/api/v1/netex_import_controller_spec.rb
new file mode 100644
index 000000000..b6b90f7d1
--- /dev/null
+++ b/spec/controllers/api/v1/netex_import_controller_spec.rb
@@ -0,0 +1,12 @@
+RSpec.describe Api::V1::NetexImportController, type: :controller do
+ let( :netex_import ){ build_stubbed :netex_import }
+
+ it_behaves_like "api key protected controller" do
+ let(:data){ netex_import }
+ end
+
+ describe "POST #create" do
+
+ end
+
+end
diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb
index a2855d086..34bfb0b23 100644
--- a/spec/models/import_spec.rb
+++ b/spec/models/import_spec.rb
@@ -3,6 +3,7 @@ require 'rails_helper'
RSpec.describe Import, :type => :model do
it { should belong_to(:referential) }
it { should belong_to(:workbench) }
+ it { should belong_to(:parent).class_name(described_class.to_s) }
it { should enumerize(:status).in(:new, :pending, :successful, :failed, :canceled, :running, :aborted ) }
--
cgit v1.2.3
From 0a12bcfd146fef2fe173ebe65b364d28c90969a3 Mon Sep 17 00:00:00 2001
From: Robert
Date: Mon, 17 Jul 2017 12:11:43 +0200
Subject: Refs: #3506@1.5h sketching out specs [amend me]
---
app/controllers/api/v1/imports_controller.rb | 10 +++++++
app/controllers/imports_controller.rb | 2 ++
config/environments/development.rb | 23 ++++++++-------
config/routes.rb | 37 +++++++++++++------------
spec/models/api/v1/netex_import_spec.rb | 15 ++++++++++
spec/routing/api/v1/access_links_routes_spec.rb | 9 ++++++
spec/routing/api/v1/import_routes_spec.rb | 10 +++++++
spec/routing/group_of_lines_spec.rb | 4 +--
8 files changed, 79 insertions(+), 31 deletions(-)
create mode 100644 app/controllers/api/v1/imports_controller.rb
create mode 100644 spec/models/api/v1/netex_import_spec.rb
create mode 100644 spec/routing/api/v1/access_links_routes_spec.rb
create mode 100644 spec/routing/api/v1/import_routes_spec.rb
diff --git a/app/controllers/api/v1/imports_controller.rb b/app/controllers/api/v1/imports_controller.rb
new file mode 100644
index 000000000..7dc3021d9
--- /dev/null
+++ b/app/controllers/api/v1/imports_controller.rb
@@ -0,0 +1,10 @@
+module Api
+ module V1
+ class ImportsController < ChouetteController
+
+ def create
+
+ end
+ end
+ end
+end
diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb
index 70c5c1a0d..01a46f064 100644
--- a/app/controllers/imports_controller.rb
+++ b/app/controllers/imports_controller.rb
@@ -23,6 +23,8 @@ class ImportsController < BreadcrumbController
end
def create
+ require 'pry'
+ binding.pry
create! { workbench_import_path(parent, resource) }
end
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 59cb9eefa..35f697d04 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -61,17 +61,20 @@ Rails.application.configure do
config.reflex_api_url = "https://pprod.reflex.stif.info/ws/reflex/V1/service=getData"
config.codifligne_api_url = "https://pprod.codifligne.stif.info/rest/v1/lc/getlist"
- # config.chouette_authentication_settings = {
- # type: "database"
- # }
- config.chouette_authentication_settings = {
- type: "cas",
- cas_server: "http://stif-portail-dev.af83.priv/sessions"
- }
+ if Rails.env.development? && ENV['NO_VPN']
+ config.chouette_authentication_settings = {
+ type: "database"
+ }
+ else
+ config.chouette_authentication_settings = {
+ type: "cas",
+ cas_server: "http://stif-portail-dev.af83.priv/sessions"
+ }
+ end
config.stif_portail_api =
- {
- key: "Ohphie1Voo6the5hohpi",
- url: "http://stif-portail-dev.af83.priv"
+ {
+ key: "Ohphie1Voo6the5hohpi",
+ url: "http://stif-portail-dev.af83.priv"
}
# Ext. apps links
diff --git a/config/routes.rb b/config/routes.rb
index aa6713857..0bfde2e25 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -32,25 +32,26 @@ ChouetteIhm::Application.routes.draw do
namespace :api do
namespace :v1 do
- resources :time_tables, :only => [:index, :show]
- resources :connection_links, :only => [:index, :show]
- resources :companies, :only => [:index, :show]
- resources :networks, :only => [:index, :show]
- resources :stop_areas, :only => [:index, :show]
- resources :group_of_lines, :only => [:index, :show]
- resources :access_points, :only => [:index, :show]
- resources :access_links, :only => [:index, :show]
- resources :lines, :only => [:index, :show] do
- resources :journey_patterns, :only => [:index, :show]
- resources :routes, :only => [:index, :show] do
- resources :vehicle_journeys, :only => [:index, :show]
- resources :journey_patterns, :only => [:index, :show]
- resources :stop_areas, :only => [:index, :show]
+ resources :access_links, only: [:index, :show]
+ resources :access_points, only: [:index, :show]
+ resources :connection_links, only: [:index, :show]
+ resources :companies, only: [:index, :show]
+ resources :group_of_lines, only: [:index, :show]
+ resources :imports, only: :create
+ resources :journey_patterns, only: :show
+ resources :lines, only: [:index, :show] do
+ resources :journey_patterns, only: [:index, :show]
+ resources :routes, only: [:index, :show] do
+ resources :vehicle_journeys, only: [:index, :show]
+ resources :journey_patterns, only: [:index, :show]
+ resources :stop_areas, only: [:index, :show]
end
end
- resources :routes, :only => :show
- resources :journey_patterns, :only => :show
- resources :vehicle_journeys, :only => :show
+ resources :networks, only: [:index, :show]
+ resources :routes, only: :show
+ resources :stop_areas, only: [:index, :show]
+ resources :time_tables, only: [:index, :show]
+ resources :vehicle_journeys, only: :show
end
end
@@ -180,7 +181,7 @@ ChouetteIhm::Application.routes.draw do
resources :timebands
resources :access_points do
- resources :access_links
+ resources :access_links
end
resources :stop_areas, controller: "referential_stop_areas" do
diff --git a/spec/models/api/v1/netex_import_spec.rb b/spec/models/api/v1/netex_import_spec.rb
new file mode 100644
index 000000000..f1fddc4ba
--- /dev/null
+++ b/spec/models/api/v1/netex_import_spec.rb
@@ -0,0 +1,15 @@
+RSpec.describe Api::V1::NetexImportController, type: :controller do
+
+ context 'POST create' do
+
+ let( :netex_import ){ build_stubbed(:netex_import) }
+
+ it 'creates a NetexImport record' do
+ expect_any_instance_of( ImportController ).to receive(:create).with(
+ params: netex_import.attributes
+ )
+
+ end
+ end
+
+end
diff --git a/spec/routing/api/v1/access_links_routes_spec.rb b/spec/routing/api/v1/access_links_routes_spec.rb
new file mode 100644
index 000000000..9164d3f05
--- /dev/null
+++ b/spec/routing/api/v1/access_links_routes_spec.rb
@@ -0,0 +1,9 @@
+RSpec.describe Api::V1::AccessLinksController, type: :controller do
+
+ it 'routes to index' do
+ expect( get: '/api/v1/access_links' ).to route_to(
+ controller: 'api/v1/access_links',
+ action: 'index'
+ )
+ end
+end
diff --git a/spec/routing/api/v1/import_routes_spec.rb b/spec/routing/api/v1/import_routes_spec.rb
new file mode 100644
index 000000000..7acc0e82d
--- /dev/null
+++ b/spec/routing/api/v1/import_routes_spec.rb
@@ -0,0 +1,10 @@
+RSpec.describe Api::V1::ImportsController do
+ describe "routing" do
+ it {
+ expect(post: '/api/v1/imports').to route_to(
+ controller: 'api/v1/imports',
+ action: 'create'
+ )
+ }
+ end
+end
diff --git a/spec/routing/group_of_lines_spec.rb b/spec/routing/group_of_lines_spec.rb
index 2a7262893..01ebeefe4 100644
--- a/spec/routing/group_of_lines_spec.rb
+++ b/spec/routing/group_of_lines_spec.rb
@@ -1,6 +1,4 @@
-require 'spec_helper'
-
-describe GroupOfLinesController do
+RSpec.describe GroupOfLinesController do
describe "routing" do
it "not recognize #routes" do
expect(get( "/line_referentials/1/group_of_lines/2/routes")).not_to route_to(
--
cgit v1.2.3
From ae5bc93bcf976367fb911d7fa956d50e26372c8e Mon Sep 17 00:00:00 2001
From: Teddy Wing
Date: Thu, 13 Jul 2017 18:36:04 +0200
Subject: Add `WorkbenchImport` model
A new model that represents a batched import. The zip archive attached
to this record will contain one or more datasets. A `Referential` will
be created for each dataset in the zip, and that sub-dataset will be
scheduled for a Netex import (only handling Netex imports at the
moment).
The model is currently empty but I'm committing it now so it can be used
by others on the team.
Refs #3507
---
app/models/workbench_import.rb | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 app/models/workbench_import.rb
diff --git a/app/models/workbench_import.rb b/app/models/workbench_import.rb
new file mode 100644
index 000000000..9323bd4b5
--- /dev/null
+++ b/app/models/workbench_import.rb
@@ -0,0 +1,2 @@
+class WorkbenchImport < Import
+end
--
cgit v1.2.3
From 03c2dcba29f1d6b4a8d22bd091e036fcf5600924 Mon Sep 17 00:00:00 2001
From: Robert
Date: Fri, 14 Jul 2017 10:25:32 +0200
Subject: Fixes: #3555@1h
- Import#parent_id & #parent_type migration generated
- Import#belongs_to :parent, class_name: to_s specified
- Import#belongs_to :parent, class_name: to_s implemented
---
app/controllers/import_tasks_controller.rb | 1 -
app/models/import.rb | 2 ++
...0170715041954_add_parent_type_and_parent_id_to_imports.rb | 6 ++++++
db/schema.rb | 4 +++-
spec/controllers/api/v1/netex_import_controller_spec.rb | 12 ++++++++++++
spec/models/import_spec.rb | 1 +
6 files changed, 24 insertions(+), 2 deletions(-)
create mode 100644 db/migrate/20170715041954_add_parent_type_and_parent_id_to_imports.rb
create mode 100644 spec/controllers/api/v1/netex_import_controller_spec.rb
diff --git a/app/controllers/import_tasks_controller.rb b/app/controllers/import_tasks_controller.rb
index 0e3ed6445..cb377ec5a 100644
--- a/app/controllers/import_tasks_controller.rb
+++ b/app/controllers/import_tasks_controller.rb
@@ -1,4 +1,3 @@
-# coding: utf-8
class ImportTasksController < ChouetteController
defaults :resource_class => ImportTask
diff --git a/app/models/import.rb b/app/models/import.rb
index d0736ab0b..535c676b1 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -3,6 +3,8 @@ class Import < ActiveRecord::Base
belongs_to :workbench
belongs_to :referential
+ belongs_to :parent, class_name: to_s
+
extend Enumerize
enumerize :status, in: %i(new pending successful failed running aborted canceled)
diff --git a/db/migrate/20170715041954_add_parent_type_and_parent_id_to_imports.rb b/db/migrate/20170715041954_add_parent_type_and_parent_id_to_imports.rb
new file mode 100644
index 000000000..96c1c2a59
--- /dev/null
+++ b/db/migrate/20170715041954_add_parent_type_and_parent_id_to_imports.rb
@@ -0,0 +1,6 @@
+class AddParentTypeAndParentIdToImports < ActiveRecord::Migration
+ def change
+ add_column :imports, :parent_id, :bigint
+ add_column :imports, :parent_type, :string
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index e64e5c04a..b56027f48 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20170607141317) do
+ActiveRecord::Schema.define(version: 20170715041954) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -285,6 +285,8 @@ ActiveRecord::Schema.define(version: 20170607141317) do
t.datetime "ended_at"
t.string "token_download"
t.string "type", limit: 255
+ t.integer "parent_id", limit: 8
+ t.string "parent_type"
end
add_index "imports", ["referential_id"], name: "index_imports_on_referential_id", using: :btree
diff --git a/spec/controllers/api/v1/netex_import_controller_spec.rb b/spec/controllers/api/v1/netex_import_controller_spec.rb
new file mode 100644
index 000000000..b6b90f7d1
--- /dev/null
+++ b/spec/controllers/api/v1/netex_import_controller_spec.rb
@@ -0,0 +1,12 @@
+RSpec.describe Api::V1::NetexImportController, type: :controller do
+ let( :netex_import ){ build_stubbed :netex_import }
+
+ it_behaves_like "api key protected controller" do
+ let(:data){ netex_import }
+ end
+
+ describe "POST #create" do
+
+ end
+
+end
diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb
index a2855d086..34bfb0b23 100644
--- a/spec/models/import_spec.rb
+++ b/spec/models/import_spec.rb
@@ -3,6 +3,7 @@ require 'rails_helper'
RSpec.describe Import, :type => :model do
it { should belong_to(:referential) }
it { should belong_to(:workbench) }
+ it { should belong_to(:parent).class_name(described_class.to_s) }
it { should enumerize(:status).in(:new, :pending, :successful, :failed, :canceled, :running, :aborted ) }
--
cgit v1.2.3
From 4f4d43779ed3f9e6d1752dbe00d698bcc1a04966 Mon Sep 17 00:00:00 2001
From: Robert
Date: Mon, 17 Jul 2017 12:11:43 +0200
Subject: Refs: #3506@1.5h sketching out specs [amend me]
---
app/controllers/api/v1/imports_controller.rb | 10 +++++++
app/controllers/imports_controller.rb | 2 ++
config/environments/development.rb | 23 ++++++++-------
config/routes.rb | 37 +++++++++++++------------
spec/models/api/v1/netex_import_spec.rb | 15 ++++++++++
spec/routing/api/v1/access_links_routes_spec.rb | 9 ++++++
spec/routing/api/v1/import_routes_spec.rb | 10 +++++++
spec/routing/group_of_lines_spec.rb | 4 +--
8 files changed, 79 insertions(+), 31 deletions(-)
create mode 100644 app/controllers/api/v1/imports_controller.rb
create mode 100644 spec/models/api/v1/netex_import_spec.rb
create mode 100644 spec/routing/api/v1/access_links_routes_spec.rb
create mode 100644 spec/routing/api/v1/import_routes_spec.rb
diff --git a/app/controllers/api/v1/imports_controller.rb b/app/controllers/api/v1/imports_controller.rb
new file mode 100644
index 000000000..7dc3021d9
--- /dev/null
+++ b/app/controllers/api/v1/imports_controller.rb
@@ -0,0 +1,10 @@
+module Api
+ module V1
+ class ImportsController < ChouetteController
+
+ def create
+
+ end
+ end
+ end
+end
diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb
index 70c5c1a0d..01a46f064 100644
--- a/app/controllers/imports_controller.rb
+++ b/app/controllers/imports_controller.rb
@@ -23,6 +23,8 @@ class ImportsController < BreadcrumbController
end
def create
+ require 'pry'
+ binding.pry
create! { workbench_import_path(parent, resource) }
end
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 59cb9eefa..35f697d04 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -61,17 +61,20 @@ Rails.application.configure do
config.reflex_api_url = "https://pprod.reflex.stif.info/ws/reflex/V1/service=getData"
config.codifligne_api_url = "https://pprod.codifligne.stif.info/rest/v1/lc/getlist"
- # config.chouette_authentication_settings = {
- # type: "database"
- # }
- config.chouette_authentication_settings = {
- type: "cas",
- cas_server: "http://stif-portail-dev.af83.priv/sessions"
- }
+ if Rails.env.development? && ENV['NO_VPN']
+ config.chouette_authentication_settings = {
+ type: "database"
+ }
+ else
+ config.chouette_authentication_settings = {
+ type: "cas",
+ cas_server: "http://stif-portail-dev.af83.priv/sessions"
+ }
+ end
config.stif_portail_api =
- {
- key: "Ohphie1Voo6the5hohpi",
- url: "http://stif-portail-dev.af83.priv"
+ {
+ key: "Ohphie1Voo6the5hohpi",
+ url: "http://stif-portail-dev.af83.priv"
}
# Ext. apps links
diff --git a/config/routes.rb b/config/routes.rb
index aa6713857..0bfde2e25 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -32,25 +32,26 @@ ChouetteIhm::Application.routes.draw do
namespace :api do
namespace :v1 do
- resources :time_tables, :only => [:index, :show]
- resources :connection_links, :only => [:index, :show]
- resources :companies, :only => [:index, :show]
- resources :networks, :only => [:index, :show]
- resources :stop_areas, :only => [:index, :show]
- resources :group_of_lines, :only => [:index, :show]
- resources :access_points, :only => [:index, :show]
- resources :access_links, :only => [:index, :show]
- resources :lines, :only => [:index, :show] do
- resources :journey_patterns, :only => [:index, :show]
- resources :routes, :only => [:index, :show] do
- resources :vehicle_journeys, :only => [:index, :show]
- resources :journey_patterns, :only => [:index, :show]
- resources :stop_areas, :only => [:index, :show]
+ resources :access_links, only: [:index, :show]
+ resources :access_points, only: [:index, :show]
+ resources :connection_links, only: [:index, :show]
+ resources :companies, only: [:index, :show]
+ resources :group_of_lines, only: [:index, :show]
+ resources :imports, only: :create
+ resources :journey_patterns, only: :show
+ resources :lines, only: [:index, :show] do
+ resources :journey_patterns, only: [:index, :show]
+ resources :routes, only: [:index, :show] do
+ resources :vehicle_journeys, only: [:index, :show]
+ resources :journey_patterns, only: [:index, :show]
+ resources :stop_areas, only: [:index, :show]
end
end
- resources :routes, :only => :show
- resources :journey_patterns, :only => :show
- resources :vehicle_journeys, :only => :show
+ resources :networks, only: [:index, :show]
+ resources :routes, only: :show
+ resources :stop_areas, only: [:index, :show]
+ resources :time_tables, only: [:index, :show]
+ resources :vehicle_journeys, only: :show
end
end
@@ -180,7 +181,7 @@ ChouetteIhm::Application.routes.draw do
resources :timebands
resources :access_points do
- resources :access_links
+ resources :access_links
end
resources :stop_areas, controller: "referential_stop_areas" do
diff --git a/spec/models/api/v1/netex_import_spec.rb b/spec/models/api/v1/netex_import_spec.rb
new file mode 100644
index 000000000..f1fddc4ba
--- /dev/null
+++ b/spec/models/api/v1/netex_import_spec.rb
@@ -0,0 +1,15 @@
+RSpec.describe Api::V1::NetexImportController, type: :controller do
+
+ context 'POST create' do
+
+ let( :netex_import ){ build_stubbed(:netex_import) }
+
+ it 'creates a NetexImport record' do
+ expect_any_instance_of( ImportController ).to receive(:create).with(
+ params: netex_import.attributes
+ )
+
+ end
+ end
+
+end
diff --git a/spec/routing/api/v1/access_links_routes_spec.rb b/spec/routing/api/v1/access_links_routes_spec.rb
new file mode 100644
index 000000000..9164d3f05
--- /dev/null
+++ b/spec/routing/api/v1/access_links_routes_spec.rb
@@ -0,0 +1,9 @@
+RSpec.describe Api::V1::AccessLinksController, type: :controller do
+
+ it 'routes to index' do
+ expect( get: '/api/v1/access_links' ).to route_to(
+ controller: 'api/v1/access_links',
+ action: 'index'
+ )
+ end
+end
diff --git a/spec/routing/api/v1/import_routes_spec.rb b/spec/routing/api/v1/import_routes_spec.rb
new file mode 100644
index 000000000..7acc0e82d
--- /dev/null
+++ b/spec/routing/api/v1/import_routes_spec.rb
@@ -0,0 +1,10 @@
+RSpec.describe Api::V1::ImportsController do
+ describe "routing" do
+ it {
+ expect(post: '/api/v1/imports').to route_to(
+ controller: 'api/v1/imports',
+ action: 'create'
+ )
+ }
+ end
+end
diff --git a/spec/routing/group_of_lines_spec.rb b/spec/routing/group_of_lines_spec.rb
index 2a7262893..01ebeefe4 100644
--- a/spec/routing/group_of_lines_spec.rb
+++ b/spec/routing/group_of_lines_spec.rb
@@ -1,6 +1,4 @@
-require 'spec_helper'
-
-describe GroupOfLinesController do
+RSpec.describe GroupOfLinesController do
describe "routing" do
it "not recognize #routes" do
expect(get( "/line_referentials/1/group_of_lines/2/routes")).not_to route_to(
--
cgit v1.2.3
From 0c69d141911a1f8e55c50d521691506ba7f32ac0 Mon Sep 17 00:00:00 2001
From: Robert
Date: Mon, 17 Jul 2017 15:34:33 +0200
Subject: Refs: #3506@16h Request Spec for NetexImport API and implementation
- Carrier Wave Upload with `fixture_file_upload`
- Request specs to .json
- Implementation
- API token setup
- Refuted experiments with controller specs
---
app/controllers/api/v1/netex_imports_controller.rb | 26 ++++++++
app/controllers/imports_controller.rb | 2 -
app/models/netex_import.rb | 1 +
app/views/api/v1/netex_imports/create.json.rabl | 3 +
config/routes.rb | 2 +-
spec/controllers/api/v1/lines_controller_spec.rb | 2 +-
.../api/v1/netex_import_controller_spec.rb | 12 ----
spec/factories/imports.rb | 5 ++
spec/models/api/v1/api_key_spec.rb | 2 -
spec/models/api/v1/netex_import_spec.rb | 15 -----
spec/requests/api/v1/netex_import_spec.rb | 71 ++++++++++++++++++++++
spec/routing/api/v1/import_routes_spec.rb | 10 ---
spec/support/api_key.rb | 4 ++
spec/support/json_helper.rb | 11 ++++
14 files changed, 123 insertions(+), 43 deletions(-)
create mode 100644 app/controllers/api/v1/netex_imports_controller.rb
create mode 100644 app/views/api/v1/netex_imports/create.json.rabl
delete mode 100644 spec/controllers/api/v1/netex_import_controller_spec.rb
delete mode 100644 spec/models/api/v1/netex_import_spec.rb
create mode 100644 spec/requests/api/v1/netex_import_spec.rb
delete mode 100644 spec/routing/api/v1/import_routes_spec.rb
create mode 100644 spec/support/json_helper.rb
diff --git a/app/controllers/api/v1/netex_imports_controller.rb b/app/controllers/api/v1/netex_imports_controller.rb
new file mode 100644
index 000000000..16a7cef69
--- /dev/null
+++ b/app/controllers/api/v1/netex_imports_controller.rb
@@ -0,0 +1,26 @@
+module Api
+ module V1
+ class NetexImportsController < ChouetteController
+
+ def create
+ respond_to do | format |
+ format.json do
+ @import = NetexImport.create(netex_import_params)
+ unless @import.valid?
+ render json: {errors: @import.errors}, status: 406
+ end
+ end
+ end
+ end
+
+
+ private
+
+ def netex_import_params
+ params
+ .require('netex_import')
+ .permit(:file, :name, :referential_id)
+ end
+ end
+ end
+end
diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb
index 01a46f064..70c5c1a0d 100644
--- a/app/controllers/imports_controller.rb
+++ b/app/controllers/imports_controller.rb
@@ -23,8 +23,6 @@ class ImportsController < BreadcrumbController
end
def create
- require 'pry'
- binding.pry
create! { workbench_import_path(parent, resource) }
end
diff --git a/app/models/netex_import.rb b/app/models/netex_import.rb
index de5b84537..40eaca523 100644
--- a/app/models/netex_import.rb
+++ b/app/models/netex_import.rb
@@ -1,5 +1,6 @@
require 'net/http'
class NetexImport < Import
+ mount_uploader :file, ImportUploader
after_commit :launch_java_import
def launch_java_import
diff --git a/app/views/api/v1/netex_imports/create.json.rabl b/app/views/api/v1/netex_imports/create.json.rabl
new file mode 100644
index 000000000..1361cdb80
--- /dev/null
+++ b/app/views/api/v1/netex_imports/create.json.rabl
@@ -0,0 +1,3 @@
+
+object @import
+attributes :id, :type
diff --git a/config/routes.rb b/config/routes.rb
index 0bfde2e25..686c19eff 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -37,7 +37,7 @@ ChouetteIhm::Application.routes.draw do
resources :connection_links, only: [:index, :show]
resources :companies, only: [:index, :show]
resources :group_of_lines, only: [:index, :show]
- resources :imports, only: :create
+ resources :netex_imports, only: :create
resources :journey_patterns, only: :show
resources :lines, only: [:index, :show] do
resources :journey_patterns, only: [:index, :show]
diff --git a/spec/controllers/api/v1/lines_controller_spec.rb b/spec/controllers/api/v1/lines_controller_spec.rb
index d57eed766..30c2f1a50 100644
--- a/spec/controllers/api/v1/lines_controller_spec.rb
+++ b/spec/controllers/api/v1/lines_controller_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
describe Api::V1::LinesController, :type => :controller do
let!(:line) { referential.lines.first || create(:line) }
- it_behaves_like "api key protected controller" do
+ it_behaves_like "api key protected controller", :wip do
let(:data){line}
end
describe "GET #index" do
diff --git a/spec/controllers/api/v1/netex_import_controller_spec.rb b/spec/controllers/api/v1/netex_import_controller_spec.rb
deleted file mode 100644
index b6b90f7d1..000000000
--- a/spec/controllers/api/v1/netex_import_controller_spec.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-RSpec.describe Api::V1::NetexImportController, type: :controller do
- let( :netex_import ){ build_stubbed :netex_import }
-
- it_behaves_like "api key protected controller" do
- let(:data){ netex_import }
- end
-
- describe "POST #create" do
-
- end
-
-end
diff --git a/spec/factories/imports.rb b/spec/factories/imports.rb
index fc8668606..eea1894a5 100644
--- a/spec/factories/imports.rb
+++ b/spec/factories/imports.rb
@@ -9,5 +9,10 @@ FactoryGirl.define do
status :new
started_at nil
ended_at nil
+
+ factory :netex_import do
+ type 'NetexImport'
+ file {Rails.root.join('spec', 'fixtures', 'terminated_job.json')}
+ end
end
end
diff --git a/spec/models/api/v1/api_key_spec.rb b/spec/models/api/v1/api_key_spec.rb
index eb8826c0e..8a34c9221 100644
--- a/spec/models/api/v1/api_key_spec.rb
+++ b/spec/models/api/v1/api_key_spec.rb
@@ -1,5 +1,3 @@
-require 'spec_helper'
-
describe Api::V1::ApiKey, :type => :model do
let!(:referential){create(:referential)}
subject { Api::V1::ApiKey.create( :name => "test", :referential => referential)}
diff --git a/spec/models/api/v1/netex_import_spec.rb b/spec/models/api/v1/netex_import_spec.rb
deleted file mode 100644
index f1fddc4ba..000000000
--- a/spec/models/api/v1/netex_import_spec.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-RSpec.describe Api::V1::NetexImportController, type: :controller do
-
- context 'POST create' do
-
- let( :netex_import ){ build_stubbed(:netex_import) }
-
- it 'creates a NetexImport record' do
- expect_any_instance_of( ImportController ).to receive(:create).with(
- params: netex_import.attributes
- )
-
- end
- end
-
-end
diff --git a/spec/requests/api/v1/netex_import_spec.rb b/spec/requests/api/v1/netex_import_spec.rb
new file mode 100644
index 000000000..b7a5c94ee
--- /dev/null
+++ b/spec/requests/api/v1/netex_import_spec.rb
@@ -0,0 +1,71 @@
+RSpec.describe "NetexImport", type: :request do
+
+ describe 'POST netex_imports' do
+
+ let( :referential ){ create :referential }
+
+ let( :file_path ){'spec/fixtures/neptune.zip'}
+ let( :file ){ fixture_file_upload( file_path ) }
+
+ let( :post_request ) do
+ -> do
+ post "/api/v1/netex_imports.json",
+ attributes,
+ authorization
+ end
+ end
+
+ let( :attributes ){ {
+ netex_import: {
+ name: 'hello world',
+ file: file,
+ referential_id: referential.id}
+ } }
+
+ context 'with correct credentials and correct request' do
+ let( :authorization ){ authorization_token_header( get_api_key.token ) }
+
+
+ it 'succeeds' do
+ post_request.()
+ expect( response ).to be_success
+ expect( JSON.parse(response.body) ).to eq({'id' => NetexImport.last.id, 'type' => 'NetexImport'})
+ end
+
+ it 'creates a NetexImport object in the DB' do
+ expect(&post_request).to change{NetexImport.count}.by(1)
+ end
+ end
+
+ context 'with incorrect credentials and correct request' do
+ let( :authorization ){ authorization_token_header( "#{referential.id}-incorrect_token") }
+
+ it 'succeeds not' do
+ post_request.()
+ expect( response.status ).to eq(401)
+ end
+
+ it 'does not create an Import object' do
+ expect(&post_request).not_to change{Import.count}
+ end
+ end
+
+ context 'with correct credentials and incorrect request' do
+ let( :authorization ){ authorization_token_header( get_api_key.token ) }
+ let( :attributes ){ {
+ netex_import: {
+ referential_id: referential.id}
+ } }
+
+ it 'succeeds not' do
+ post_request.()
+ expect( response.status ).to eq(406)
+ expect( json_response_body['errors']['file'] ).not_to be_empty
+ end
+
+ it 'does not create an Import object' do
+ expect(&post_request).not_to change{Import.count}
+ end
+ end
+ end
+end
diff --git a/spec/routing/api/v1/import_routes_spec.rb b/spec/routing/api/v1/import_routes_spec.rb
deleted file mode 100644
index 7acc0e82d..000000000
--- a/spec/routing/api/v1/import_routes_spec.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-RSpec.describe Api::V1::ImportsController do
- describe "routing" do
- it {
- expect(post: '/api/v1/imports').to route_to(
- controller: 'api/v1/imports',
- action: 'create'
- )
- }
- end
-end
diff --git a/spec/support/api_key.rb b/spec/support/api_key.rb
index 9353fac15..561e1f796 100644
--- a/spec/support/api_key.rb
+++ b/spec/support/api_key.rb
@@ -1,5 +1,9 @@
module ApiKeyHelper
+ def authorization_token_header(key)
+ {'Authorization' => "Token token=#{key}"}
+ end
+
def get_api_key
Api::V1::ApiKey.first_or_create( :referential_id => referential.id, :name => "test")
end
diff --git a/spec/support/json_helper.rb b/spec/support/json_helper.rb
new file mode 100644
index 000000000..a383981a0
--- /dev/null
+++ b/spec/support/json_helper.rb
@@ -0,0 +1,11 @@
+module Support
+ module JsonHelper
+ def json_response_body
+ JSON.parse(response.body)
+ end
+ end
+end
+
+RSpec.configure do | config |
+ config.include Support::JsonHelper, type: :request
+end
--
cgit v1.2.3
From d2abe2d195a8a8a3bf4539816049be60ca06e187 Mon Sep 17 00:00:00 2001
From: Robert
Date: Wed, 19 Jul 2017 09:11:01 +0200
Subject: dead code eliminated
---
app/controllers/api/v1/imports_controller.rb | 10 ----------
1 file changed, 10 deletions(-)
delete mode 100644 app/controllers/api/v1/imports_controller.rb
diff --git a/app/controllers/api/v1/imports_controller.rb b/app/controllers/api/v1/imports_controller.rb
deleted file mode 100644
index 7dc3021d9..000000000
--- a/app/controllers/api/v1/imports_controller.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-module Api
- module V1
- class ImportsController < ChouetteController
-
- def create
-
- end
- end
- end
-end
--
cgit v1.2.3
From ca4902a828a702f677637029493d9de6a7b5433b Mon Sep 17 00:00:00 2001
From: cedricnjanga
Date: Tue, 18 Jul 2017 12:32:16 +0200
Subject: Remove organisation_match for clone? in Referential policy
---
app/policies/referential_policy.rb | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/app/policies/referential_policy.rb b/app/policies/referential_policy.rb
index 9d0a92093..fdc80516c 100644
--- a/app/policies/referential_policy.rb
+++ b/app/policies/referential_policy.rb
@@ -20,7 +20,7 @@ class ReferentialPolicy < ApplicationPolicy
def clone?
- !archived? && organisation_match? && create?
+ !archived? && create?
end
def archive?
@@ -37,7 +37,3 @@ class ReferentialPolicy < ApplicationPolicy
end
end
-
-
-
-
--
cgit v1.2.3
From a01acfaee6bbc4cd3630ad3ca2d749ff471d3c61 Mon Sep 17 00:00:00 2001
From: cedricnjanga
Date: Wed, 19 Jul 2017 10:13:12 +0200
Subject: Adapt test for clone policies changes (user from different
organisation)
---
spec/decorators/referential_decorator_spec.rb | 5 +++--
spec/policies/referential_policy_spec.rb | 2 +-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/spec/decorators/referential_decorator_spec.rb b/spec/decorators/referential_decorator_spec.rb
index 5de6b7e95..16da8d30b 100644
--- a/spec/decorators/referential_decorator_spec.rb
+++ b/spec/decorators/referential_decorator_spec.rb
@@ -25,7 +25,7 @@ RSpec.describe ReferentialDecorator, type: [:helper, :decorator] do
end
end
- context 'all rights and different organisation' do
+ context 'all rights and different organisation' do
let( :user ){ build_stubbed :allmighty_user }
@@ -33,10 +33,11 @@ RSpec.describe ReferentialDecorator, type: [:helper, :decorator] do
expect_action_link_elements.to be_empty
expect_action_link_hrefs.to eq([
referential_time_tables_path(object),
+ new_referential_path(from: object),
])
end
end
- context 'all rights and same organisation' do
+ context 'all rights and same organisation' do
let( :user ){ build_stubbed :allmighty_user, organisation: referential.organisation }
diff --git a/spec/policies/referential_policy_spec.rb b/spec/policies/referential_policy_spec.rb
index 33d8e13e8..69d0eb17b 100644
--- a/spec/policies/referential_policy_spec.rb
+++ b/spec/policies/referential_policy_spec.rb
@@ -46,7 +46,7 @@ RSpec.describe ReferentialPolicy, type: :policy do
# ------------------
permissions :clone? do
- it_behaves_like 'permitted policy and same organisation', 'referentials.create', archived: true
+ it_behaves_like 'permitted policy', 'referentials.create', archived: true
end
permissions :archive? do
--
cgit v1.2.3
From 4d6dc16a98aea55f89a3ae3fe5360fa182f62fac Mon Sep 17 00:00:00 2001
From: cedricnjanga
Date: Wed, 19 Jul 2017 11:56:14 +0200
Subject: Refs #4129 Change minimumInputLength for VJ select2
---
.../vehicle_journeys/components/tools/select2s/CompanySelect2.js | 2 +-
.../vehicle_journeys/components/tools/select2s/MissionSelect2.js | 2 +-
.../vehicle_journeys/components/tools/select2s/TimetableSelect2.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/CompanySelect2.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/CompanySelect2.js
index a6b8dcfa1..d277be003 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/CompanySelect2.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/CompanySelect2.js
@@ -51,7 +51,7 @@ class BSelect4 extends React.Component{
},
cache: true
},
- minimumInputLength: 3,
+ minimumInputLength: 1,
templateResult: formatRepo
}}
/>
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js
index 89746da02..89c8fca00 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js
@@ -50,7 +50,7 @@ class BSelect4 extends React.Component{
},
cache: true
},
- minimumInputLength: 0,
+ minimumInputLength: 1,
escapeMarkup: function (markup) { return markup; },
templateResult: formatRepo
}}
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js
index dd098053e..a4df10369 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js
@@ -50,7 +50,7 @@ class BSelect4 extends React.Component{
},
cache: true
},
- minimumInputLength: 3,
+ minimumInputLength: 1,
escapeMarkup: function (markup) { return markup; },
templateResult: formatRepo
}}
--
cgit v1.2.3
From 144e75edb237e94313bb9e1fc69c47781e72bd74 Mon Sep 17 00:00:00 2001
From: cedricnjanga
Date: Wed, 19 Jul 2017 11:57:23 +0200
Subject: Refs 4131 Change Timetable#create to fetch all Calendars (new_from)
---
app/controllers/time_tables_controller.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/controllers/time_tables_controller.rb b/app/controllers/time_tables_controller.rb
index 20d500ea9..b7fb2bf9b 100644
--- a/app/controllers/time_tables_controller.rb
+++ b/app/controllers/time_tables_controller.rb
@@ -37,7 +37,7 @@ class TimeTablesController < ChouetteController
tt_params = time_table_params
if tt_params[:calendar_id]
%i(monday tuesday wednesday thursday friday saturday sunday).map { |d| tt_params[d] = true }
- calendar = current_organisation.calendars.find_by_id(tt_params[:calendar_id])
+ calendar = Calendar.find(tt_params[:calendar_id])
tt_params[:calendar_id] = nil if tt_params.has_key?(:dates_attributes) || tt_params.has_key?(:periods_attributes)
end
--
cgit v1.2.3
From cd22d9c013b6100e84d9199265482a0373834b48 Mon Sep 17 00:00:00 2001
From: jpl
Date: Wed, 19 Jul 2017 15:32:07 +0200
Subject: Refs #4128: updating autocomplete component results display
---
.../vehicle_journeys/components/tools/select2s/MissionSelect2.js | 2 +-
.../vehicle_journeys/components/tools/select2s/TimetableSelect2.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js
index 89c8fca00..c04a1d642 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/MissionSelect2.js
@@ -43,7 +43,7 @@ class BSelect4 extends React.Component{
item => _.assign(
{},
item,
- { text: '' + _.last(_.split(item.object_id, ':')) + " - " + item.published_name + "
" + item.registration_number + "" }
+ { text: "" + item.published_name + _.last(_.split(item.object_id, ':')) + "
" + item.registration_number + "" }
)
)
};
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js
index a4df10369..3e81290f5 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/select2s/TimetableSelect2.js
@@ -43,7 +43,7 @@ class BSelect4 extends React.Component{
item => _.assign(
{},
item,
- {text: '' + item.short_id + ' - ' + (item.color ? " - " : '') + item.comment + '
' + item.day_types.match(/[A-Z]?[a-z]+/g).join(', ') + ''}
+ {text: '' + (item.color ? " " : '') + item.comment + ' - ' + item.short_id + '
' + item.day_types.match(/[A-Z]?[a-z]+/g).join(', ') + ''}
)
)
};
--
cgit v1.2.3
From b1904db1a8145620f600736a9933c043a4dfcf9f Mon Sep 17 00:00:00 2001
From: Robert
Date: Wed, 19 Jul 2017 18:41:01 +0200
Subject: Refs: #3506@1h; Code Review
---
app/models/netex_import.rb | 2 +-
config/environments/development.rb | 7 +++---
spec/controllers/api/v1/lines_controller_spec.rb | 2 +-
spec/factories/imports.rb | 5 ++--
spec/requests/api/v1/netex_import_spec.rb | 31 ++++++++++++------------
5 files changed, 23 insertions(+), 24 deletions(-)
diff --git a/app/models/netex_import.rb b/app/models/netex_import.rb
index 40eaca523..4a1c6f1e5 100644
--- a/app/models/netex_import.rb
+++ b/app/models/netex_import.rb
@@ -8,7 +8,7 @@ class NetexImport < Import
begin
Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}"))
rescue Exception => e
- logger.error "IEV server error : e.message"
+ logger.error "IEV server error : #{e.message}"
logger.error e.backtrace.inspect
end
end
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 35f697d04..624382000 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -71,10 +71,9 @@ Rails.application.configure do
cas_server: "http://stif-portail-dev.af83.priv/sessions"
}
end
- config.stif_portail_api =
- {
- key: "Ohphie1Voo6the5hohpi",
- url: "http://stif-portail-dev.af83.priv"
+ config.stif_portail_api = {
+ key: "Ohphie1Voo6the5hohpi",
+ url: "http://stif-portail-dev.af83.priv"
}
# Ext. apps links
diff --git a/spec/controllers/api/v1/lines_controller_spec.rb b/spec/controllers/api/v1/lines_controller_spec.rb
index 30c2f1a50..d57eed766 100644
--- a/spec/controllers/api/v1/lines_controller_spec.rb
+++ b/spec/controllers/api/v1/lines_controller_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
describe Api::V1::LinesController, :type => :controller do
let!(:line) { referential.lines.first || create(:line) }
- it_behaves_like "api key protected controller", :wip do
+ it_behaves_like "api key protected controller" do
let(:data){line}
end
describe "GET #index" do
diff --git a/spec/factories/imports.rb b/spec/factories/imports.rb
index eea1894a5..e19fe92bb 100644
--- a/spec/factories/imports.rb
+++ b/spec/factories/imports.rb
@@ -10,9 +10,8 @@ FactoryGirl.define do
started_at nil
ended_at nil
- factory :netex_import do
- type 'NetexImport'
- file {Rails.root.join('spec', 'fixtures', 'terminated_job.json')}
+ factory :netex_import, class: NetexImport do
+ file {File.open(Rails.root.join('spec', 'fixtures', 'terminated_job.json'))}
end
end
end
diff --git a/spec/requests/api/v1/netex_import_spec.rb b/spec/requests/api/v1/netex_import_spec.rb
index b7a5c94ee..de281aa66 100644
--- a/spec/requests/api/v1/netex_import_spec.rb
+++ b/spec/requests/api/v1/netex_import_spec.rb
@@ -8,63 +8,64 @@ RSpec.describe "NetexImport", type: :request do
let( :file ){ fixture_file_upload( file_path ) }
let( :post_request ) do
- -> do
+ -> (attributes) do
post "/api/v1/netex_imports.json",
attributes,
authorization
end
end
- let( :attributes ){ {
+ let( :legal_attributes ){ {
netex_import: {
name: 'hello world',
file: file,
referential_id: referential.id}
} }
+ let( :illegal_attributes ){ {
+ netex_import: {
+ referential_id: referential.id}
+ } }
+
context 'with correct credentials and correct request' do
let( :authorization ){ authorization_token_header( get_api_key.token ) }
it 'succeeds' do
- post_request.()
+ post_request.(legal_attributes)
expect( response ).to be_success
- expect( JSON.parse(response.body) ).to eq({'id' => NetexImport.last.id, 'type' => 'NetexImport'})
+ expect( json_response_body ).to eq({'id' => NetexImport.last.id, 'type' => 'NetexImport'})
end
it 'creates a NetexImport object in the DB' do
- expect(&post_request).to change{NetexImport.count}.by(1)
+ expect{ post_request.(legal_attributes) }.to change{NetexImport.count}.by(1)
end
end
context 'with incorrect credentials and correct request' do
let( :authorization ){ authorization_token_header( "#{referential.id}-incorrect_token") }
- it 'succeeds not' do
- post_request.()
+ it 'does not succeed' do
+ post_request.(legal_attributes)
expect( response.status ).to eq(401)
end
it 'does not create an Import object' do
- expect(&post_request).not_to change{Import.count}
+ expect{ post_request.(legal_attributes) }.not_to change{Import.count}
end
end
context 'with correct credentials and incorrect request' do
let( :authorization ){ authorization_token_header( get_api_key.token ) }
- let( :attributes ){ {
- netex_import: {
- referential_id: referential.id}
- } }
- it 'succeeds not' do
- post_request.()
+ it 'does not succeed' do
+ post_request.(illegal_attributes)
expect( response.status ).to eq(406)
expect( json_response_body['errors']['file'] ).not_to be_empty
end
it 'does not create an Import object' do
- expect(&post_request).not_to change{Import.count}
+ expect{ post_request.(illegal_attributes) }.not_to change{Import.count}
end
end
end
--
cgit v1.2.3
From 37741f8bd5bc4c3698194c04bbe8aee3d7f6781a Mon Sep 17 00:00:00 2001
From: Teddy Wing
Date: Wed, 19 Jul 2017 18:41:05 +0200
Subject: Fix errors from JS-formatted templates using the table_builder
We were getting errors like these:
Started GET "/referentials/4/networks?_=1500482065840" for 127.0.0.1 at 2017-07-19 18:34:27 +0200
Processing by ReferentialNetworksController#index as JS
Parameters: {"_"=>"1500482065840", "referential_id"=>"4"}
User Load (3.6ms) SELECT "public"."users".* FROM "public"."users" WHERE "public"."users"."id" = $1 ORDER BY "public"."users"."id" ASC LIMIT 1 [["id", 1]]
locale set to :fr
Organisation Load (5.6ms) SELECT "public"."organisations".* FROM "public"."organisations" WHERE "public"."organisations"."id" = $1 LIMIT 1 [["id", 1]]
Referential Load (1.0ms) SELECT "public"."referentials".* FROM "public"."referentials" WHERE "public"."referentials"."organisation_id" = $1 AND "public"."referentials"."id" = $2 LIMIT 1 [["organisation_id", 1], ["id", 4]]
Workbench Load (0.7ms) SELECT "public"."workbenches".* FROM "public"."workbenches" WHERE "public"."workbenches"."id" = $1 LIMIT 1 [["id", 1]]
(1.3ms) SELECT DISTINCT COUNT(DISTINCT "public"."networks"."id") FROM "public"."networks" INNER JOIN "public"."line_referentials" ON "public"."networks"."line_referential_id" = "public"."line_referentials"."id" WHERE "public"."line_referentials"."id" = $1 [["id", 1]]
CACHE (0.0ms) SELECT DISTINCT COUNT(DISTINCT "public"."networks"."id") FROM "public"."networks" INNER JOIN "public"."line_referentials" ON "public"."networks"."line_referential_id" = "public"."line_referentials"."id" WHERE "public"."line_referentials"."id" = $1 [["id", 1]]
Chouette::Network Load (2.3ms) SELECT DISTINCT "public"."networks".* FROM "public"."networks" INNER JOIN "public"."line_referentials" ON "public"."networks"."line_referential_id" = "public"."line_referentials"."id" WHERE "public"."line_referentials"."id" = $1 ORDER BY name asc LIMIT 12 OFFSET 0 [["id", 1]]
CACHE (0.0ms) SELECT DISTINCT COUNT(DISTINCT "public"."networks"."id") FROM "public"."networks" INNER JOIN "public"."line_referentials" ON "public"."networks"."line_referential_id" = "public"."line_referentials"."id" WHERE "public"."line_referentials"."id" = $1 [["id", 1]]
Chouette::Network Exists (1.2ms) SELECT 1 AS one FROM "public"."networks" WHERE "public"."networks"."id" = $1 LIMIT 1 [["id", 118]]
Rendered referential_networks/index.html.slim (48.9ms)
Completed 500 Internal Server Error in 184ms (ActiveRecord: 17.4ms)
ActionView::Template::Error (undefined method `action_links' for #):
22: - if @networks.any?
23: .row
24: .col-lg-12
25: = table_builder_2 @networks,
26: [ \
27: TableBuilderHelper::Column.new( \
28: name: 'ID Codifligne', \
app/helpers/table_builder_helper.rb:161:in `block in build_links'
app/helpers/table_builder_helper.rb:158:in `build_links'
app/helpers/table_builder_helper.rb:138:in `block (3 levels) in tbody'
app/helpers/table_builder_helper.rb:110:in `block (2 levels) in tbody'
app/helpers/table_builder_helper.rb:108:in `block in tbody'
app/helpers/table_builder_helper.rb:107:in `tbody'
app/helpers/table_builder_helper.rb:72:in `table_builder_2'
app/views/referential_networks/index.html.slim:25:in `_app_views_referential_networks_index_html_slim___1557411244315414919_70366016986820'
app/controllers/referential_networks_controller.rb:27:in `index'
Rendered .../lib/ruby/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb (1.8ms)
Rendered .../lib/ruby/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb (2.5ms)
Rendered .../lib/ruby/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb (76.0ms)
on the following pages:
- http://stif-boiv.dev:3000/referentials/4/time_tables
- http://stif-boiv.dev:3000/line_referentials/1/companies
- http://stif-boiv.dev:3000/line_referentials/1/networks
- http://stif-boiv.dev:3000/referentials/4/companies
- http://stif-boiv.dev:3000/referentials/4/networks
This was caused by the request of a JS-formatted view that rendered the
HTML template, since the collection decoration only happened in the HTML
format section.
Do the decoration in both the HTML format and JS format for the relevant
controllers in order to eliminate this error.
Maybe there's a cleaner way to do this than just duplicating the
decoration in both `format.X` blocks, but I don't know of it. Wanted to
make sure not to decorate when it wasn't necessary, like when rendering
other formats (XML, etc.).
Refs #4105
---
app/controllers/companies_controller.rb | 23 +++++++++++++++-------
app/controllers/networks_controller.rb | 23 +++++++++++++++-------
.../referential_companies_controller.rb | 23 +++++++++++++++-------
app/controllers/referential_networks_controller.rb | 23 +++++++++++++++-------
app/controllers/time_tables_controller.rb | 22 ++++++++++++++-------
5 files changed, 79 insertions(+), 35 deletions(-)
diff --git a/app/controllers/companies_controller.rb b/app/controllers/companies_controller.rb
index 07a732fc9..cf27c39cf 100644
--- a/app/controllers/companies_controller.rb
+++ b/app/controllers/companies_controller.rb
@@ -16,14 +16,13 @@ class CompaniesController < BreadcrumbController
redirect_to params.merge(:page => 1)
end
- @companies = ModelDecorator.decorate(
- @companies,
- with: CompanyDecorator,
- context: {
- referential: line_referential
- }
- )
+ @companies = decorate_companies(@companies)
}
+
+ format.json {
+ @companies = decorate_companies(@companies)
+ }
+
build_breadcrumb :index
end
end
@@ -77,4 +76,14 @@ class CompaniesController < BreadcrumbController
%w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc'
end
+ def decorate_companies(companies)
+ ModelDecorator.decorate(
+ companies,
+ with: CompanyDecorator,
+ context: {
+ referential: line_referential
+ }
+ )
+ end
+
end
diff --git a/app/controllers/networks_controller.rb b/app/controllers/networks_controller.rb
index d1f83340e..5dae1ba3f 100644
--- a/app/controllers/networks_controller.rb
+++ b/app/controllers/networks_controller.rb
@@ -37,14 +37,13 @@ class NetworksController < BreadcrumbController
redirect_to params.merge(:page => 1)
end
- @networks = ModelDecorator.decorate(
- @networks,
- with: NetworkDecorator,
- context: {
- line_referential: line_referential
- }
- )
+ @networks = decorate_networks(@networks)
}
+
+ format.js {
+ @networks = decorate_networks(@networks)
+ }
+
build_breadcrumb :index
end
end
@@ -87,4 +86,14 @@ class NetworksController < BreadcrumbController
%w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc'
end
+ def decorate_networks(networks)
+ ModelDecorator.decorate(
+ networks,
+ with: NetworkDecorator,
+ context: {
+ line_referential: line_referential
+ }
+ )
+ end
+
end
diff --git a/app/controllers/referential_companies_controller.rb b/app/controllers/referential_companies_controller.rb
index 53dde93bb..482f74ea0 100644
--- a/app/controllers/referential_companies_controller.rb
+++ b/app/controllers/referential_companies_controller.rb
@@ -14,14 +14,13 @@ class ReferentialCompaniesController < ChouetteController
redirect_to params.merge(:page => 1)
end
- @companies = ModelDecorator.decorate(
- @companies,
- with: CompanyDecorator,
- context: {
- referential: referential
- }
- )
+ @companies = decorate_companies(@companies)
}
+
+ format.js {
+ @companies = decorate_companies(@companies)
+ }
+
build_breadcrumb :index
end
end
@@ -70,4 +69,14 @@ class ReferentialCompaniesController < ChouetteController
%w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc'
end
+ def decorate_companies(companies)
+ ModelDecorator.decorate(
+ companies,
+ with: CompanyDecorator,
+ context: {
+ referential: referential
+ }
+ )
+ end
+
end
diff --git a/app/controllers/referential_networks_controller.rb b/app/controllers/referential_networks_controller.rb
index e0ce71ce4..ee2db8008 100644
--- a/app/controllers/referential_networks_controller.rb
+++ b/app/controllers/referential_networks_controller.rb
@@ -30,14 +30,13 @@ class ReferentialNetworksController < ChouetteController
redirect_to params.merge(:page => 1)
end
- @networks = ModelDecorator.decorate(
- @networks,
- with: ReferentialNetworkDecorator,
- context: {
- referential: referential
- }
- )
+ @networks = decorate_networks(@networks)
}
+
+ format.js {
+ @networks = decorate_networks(@networks)
+ }
+
build_breadcrumb :index
end
end
@@ -81,4 +80,14 @@ class ReferentialNetworksController < ChouetteController
%w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc'
end
+ def decorate_networks(networks)
+ ModelDecorator.decorate(
+ networks,
+ with: ReferentialNetworkDecorator,
+ context: {
+ referential: referential
+ }
+ )
+ end
+
end
diff --git a/app/controllers/time_tables_controller.rb b/app/controllers/time_tables_controller.rb
index b7fb2bf9b..edeb5a32f 100644
--- a/app/controllers/time_tables_controller.rb
+++ b/app/controllers/time_tables_controller.rb
@@ -86,16 +86,14 @@ class TimeTablesController < ChouetteController
redirect_to params.merge(:page => 1)
end
- @time_tables = ModelDecorator.decorate(
- @time_tables,
- with: TimeTableDecorator,
- context: {
- referential: @referential
- }
- )
+ @time_tables = decorate_time_tables(@time_tables)
build_breadcrumb :index
}
+
+ format.js {
+ @time_tables = decorate_time_tables(@time_tables)
+ }
end
end
@@ -195,6 +193,16 @@ class TimeTablesController < ChouetteController
Chouette::TimeTable.find(from_id) if from_id
end
+ def decorate_time_tables(time_tables)
+ ModelDecorator.decorate(
+ time_tables,
+ with: TimeTableDecorator,
+ context: {
+ referential: @referential
+ }
+ )
+ end
+
def time_table_params
params.require(:time_table).permit(
:objectid,
--
cgit v1.2.3
From 2de0d63c148218c983a30117ee277ef9307906c8 Mon Sep 17 00:00:00 2001
From: Robert
Date: Thu, 20 Jul 2017 06:08:54 +0200
Subject: Refs: #3506@1.5h; server debugging
- Fixed conf error (missing schema in `config.iev_url`)
- Reported java server traces (looks like missing metadata)
---
config/environments/development.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 624382000..5b2bd7402 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -82,7 +82,7 @@ Rails.application.configure do
config.portal_url = "http://stif-boiv-staging.af83.priv"
# IEV url
- config.iev_url = "localhost:8080"
+ config.iev_url = "http://localhost:8080"
# file to data for demo
config.demo_data = "tmp/demo.zip"
--
cgit v1.2.3
From 4fd4fa0fd24c9cd86161358f2e36cff64f3712d7 Mon Sep 17 00:00:00 2001
From: jpl
Date: Thu, 20 Jul 2017 10:51:25 +0200
Subject: Refs #4113: fix display bug on selected items result (VJ select2
comp.)
---
app/assets/stylesheets/components/_select2.sass | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/app/assets/stylesheets/components/_select2.sass b/app/assets/stylesheets/components/_select2.sass
index 960e8b10b..332af16cd 100644
--- a/app/assets/stylesheets/components/_select2.sass
+++ b/app/assets/stylesheets/components/_select2.sass
@@ -7,6 +7,10 @@
// .select2-results__message, .loading-results
// display: none
+.select2-container, .select2-container--bootstrap
+ .select2-selection--single .select2-selection__rendered
+ height: 100%
+
.select2-selection__placeholder
color: rgba($grey, 0.65)
font-style: italic
--
cgit v1.2.3
From 327c27559a955782b70dff46aeca1c58dcf95836 Mon Sep 17 00:00:00 2001
From: Robert
Date: Thu, 20 Jul 2017 11:45:30 +0200
Subject: Fixes: #3506@0.5h
* CR refacts (netex_import req spec)
* Dead Code Elimination (mount in Import subclasses)
---
app/models/netex_import.rb | 1 -
spec/requests/api/v1/netex_import_spec.rb | 28 ++++++++++++++--------------
2 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/app/models/netex_import.rb b/app/models/netex_import.rb
index 4a1c6f1e5..0cf4d0a7c 100644
--- a/app/models/netex_import.rb
+++ b/app/models/netex_import.rb
@@ -1,6 +1,5 @@
require 'net/http'
class NetexImport < Import
- mount_uploader :file, ImportUploader
after_commit :launch_java_import
def launch_java_import
diff --git a/spec/requests/api/v1/netex_import_spec.rb b/spec/requests/api/v1/netex_import_spec.rb
index de281aa66..9fbf8f801 100644
--- a/spec/requests/api/v1/netex_import_spec.rb
+++ b/spec/requests/api/v1/netex_import_spec.rb
@@ -15,30 +15,30 @@ RSpec.describe "NetexImport", type: :request do
end
end
- let( :legal_attributes ){ {
- netex_import: {
+ let( :legal_attributes ) do
+ {
name: 'hello world',
file: file,
- referential_id: referential.id}
- } }
+ referential_id: referential.id
+ }
+ end
- let( :illegal_attributes ){ {
- netex_import: {
- referential_id: referential.id}
- } }
+ let( :illegal_attributes ) do
+ { referential_id: referential.id }
+ end
context 'with correct credentials and correct request' do
let( :authorization ){ authorization_token_header( get_api_key.token ) }
it 'succeeds' do
- post_request.(legal_attributes)
+ post_request.(netex_import: legal_attributes)
expect( response ).to be_success
expect( json_response_body ).to eq({'id' => NetexImport.last.id, 'type' => 'NetexImport'})
end
it 'creates a NetexImport object in the DB' do
- expect{ post_request.(legal_attributes) }.to change{NetexImport.count}.by(1)
+ expect{ post_request.(netex_import: legal_attributes) }.to change{NetexImport.count}.by(1)
end
end
@@ -46,12 +46,12 @@ RSpec.describe "NetexImport", type: :request do
let( :authorization ){ authorization_token_header( "#{referential.id}-incorrect_token") }
it 'does not succeed' do
- post_request.(legal_attributes)
+ post_request.(netex_import: legal_attributes)
expect( response.status ).to eq(401)
end
it 'does not create an Import object' do
- expect{ post_request.(legal_attributes) }.not_to change{Import.count}
+ expect{ post_request.(netex_import: legal_attributes) }.not_to change{Import.count}
end
end
@@ -59,13 +59,13 @@ RSpec.describe "NetexImport", type: :request do
let( :authorization ){ authorization_token_header( get_api_key.token ) }
it 'does not succeed' do
- post_request.(illegal_attributes)
+ post_request.(netex_import: illegal_attributes)
expect( response.status ).to eq(406)
expect( json_response_body['errors']['file'] ).not_to be_empty
end
it 'does not create an Import object' do
- expect{ post_request.(illegal_attributes) }.not_to change{Import.count}
+ expect{ post_request.(netex_import: illegal_attributes) }.not_to change{Import.count}
end
end
end
--
cgit v1.2.3