aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/import_message.rb7
-rw-r--r--app/models/import_resource.rb23
-rw-r--r--app/views/shared/_header.html.slim3
-rw-r--r--db/migrate/20161228102458_create_import_messages.rb13
-rw-r--r--db/migrate/20161228103628_create_import_resources.rb10
-rw-r--r--db/schema.rb24
-rw-r--r--spec/controllers/imports_controller_spec.rb4
-rw-r--r--spec/factories/import_messages.rb10
-rw-r--r--spec/factories/import_resources.rb6
-rw-r--r--spec/factories/imports.rb12
-rw-r--r--spec/models/import_message_spec.rb7
-rw-r--r--spec/models/import_resource_spec.rb13
-rw-r--r--spec/models/import_spec.rb1
13 files changed, 122 insertions, 11 deletions
diff --git a/app/models/import_message.rb b/app/models/import_message.rb
new file mode 100644
index 000000000..5d0f5c862
--- /dev/null
+++ b/app/models/import_message.rb
@@ -0,0 +1,7 @@
+class ImportMessage < ActiveRecord::Base
+ belongs_to :import
+ belongs_to :resource, class_name: ImportResource
+ enum criticity: [:info, :warning, :error]
+
+ validates :criticity, presence: true
+end
diff --git a/app/models/import_resource.rb b/app/models/import_resource.rb
new file mode 100644
index 000000000..f140e1b36
--- /dev/null
+++ b/app/models/import_resource.rb
@@ -0,0 +1,23 @@
+class ImportResource < ActiveRecord::Base
+ include AASM
+ belongs_to :import
+
+ aasm column: :status do
+ state :new, :initial => true
+ state :pending
+ state :successful
+ state :failed
+
+ event :run do
+ transitions :from => [:new, :failed], :to => :pending
+ end
+
+ event :successful do
+ transitions :from => [:pending, :failed], :to => :successful
+ end
+
+ event :failed do
+ transitions :from => :pending, :to => :failed
+ end
+ end
+end
diff --git a/app/views/shared/_header.html.slim b/app/views/shared/_header.html.slim
index 73e705e35..33aee09a4 100644
--- a/app/views/shared/_header.html.slim
+++ b/app/views/shared/_header.html.slim
@@ -90,9 +90,6 @@ nav.navbar.navbar-default.navbar-fixed-top role="navigation"
= link_to referential_timebands_path(@referential) do
span.badge.pull-right = @referential.timebands.size
= Referential.human_attribute_name("timebands")
-
- li
- = link_to Referential.human_attribute_name("imports"), referential_imports_path(@referential)
li
= link_to Referential.human_attribute_name("exports"), referential_exports_path(@referential)
li
diff --git a/db/migrate/20161228102458_create_import_messages.rb b/db/migrate/20161228102458_create_import_messages.rb
new file mode 100644
index 000000000..53a26cbd2
--- /dev/null
+++ b/db/migrate/20161228102458_create_import_messages.rb
@@ -0,0 +1,13 @@
+class CreateImportMessages < ActiveRecord::Migration
+ def change
+ create_table :import_messages do |t|
+ t.integer :criticity
+ t.string :message_key
+ t.hstore :message_attributs
+ t.references :import, index: true
+ t.references :resource, index: true
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20161228103628_create_import_resources.rb b/db/migrate/20161228103628_create_import_resources.rb
new file mode 100644
index 000000000..ef9c3563f
--- /dev/null
+++ b/db/migrate/20161228103628_create_import_resources.rb
@@ -0,0 +1,10 @@
+class CreateImportResources < ActiveRecord::Migration
+ def change
+ create_table :import_resources do |t|
+ t.references :import, index: true
+ t.string :status
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 734dde1de..829b235d3 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: 20161227104741) do
+ActiveRecord::Schema.define(version: 20161228103628) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -224,6 +224,28 @@ ActiveRecord::Schema.define(version: 20161227104741) do
t.integer "line_id", limit: 8
end
+ create_table "import_messages", force: true do |t|
+ t.integer "criticity"
+ t.string "message_key"
+ t.hstore "message_attributs"
+ t.integer "import_id"
+ t.integer "resource_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "import_messages", ["import_id"], :name => "index_import_messages_on_import_id"
+ add_index "import_messages", ["resource_id"], :name => "index_import_messages_on_resource_id"
+
+ create_table "import_resources", force: true do |t|
+ t.integer "import_id"
+ t.string "status"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "import_resources", ["import_id"], :name => "index_import_resources_on_import_id"
+
create_table "imports", force: true do |t|
t.string "status"
t.string "current_step_id"
diff --git a/spec/controllers/imports_controller_spec.rb b/spec/controllers/imports_controller_spec.rb
index f5ccd643a..19756b72f 100644
--- a/spec/controllers/imports_controller_spec.rb
+++ b/spec/controllers/imports_controller_spec.rb
@@ -3,9 +3,11 @@ require 'rails_helper'
RSpec.describe ImportsController, :type => :controller do
login_user
+ let(:workbench) { create :workbench }
+
describe 'GET #new' do
it 'should be successful' do
- get :new, referential_id: referential.id
+ get :new, workbench_id: workbench.id
expect(response).to be_success
end
end
diff --git a/spec/factories/import_messages.rb b/spec/factories/import_messages.rb
new file mode 100644
index 000000000..2d26477e6
--- /dev/null
+++ b/spec/factories/import_messages.rb
@@ -0,0 +1,10 @@
+FactoryGirl.define do
+ factory :import_message do
+ criticity 1
+message_key "MyString"
+message_attributs ""
+import nil
+resource nil
+ end
+
+end
diff --git a/spec/factories/import_resources.rb b/spec/factories/import_resources.rb
new file mode 100644
index 000000000..274edab60
--- /dev/null
+++ b/spec/factories/import_resources.rb
@@ -0,0 +1,6 @@
+FactoryGirl.define do
+ factory :import_resource do
+ association :import
+ status :new
+ end
+end
diff --git a/spec/factories/imports.rb b/spec/factories/imports.rb
index 8b2cb223d..bb9a97c9c 100644
--- a/spec/factories/imports.rb
+++ b/spec/factories/imports.rb
@@ -1,11 +1,11 @@
FactoryGirl.define do
factory :import do
+ name "MyString"
+ current_step_id "MyString"
+ current_step_progress 1.5
+ association :workbench
+ association :referential
+ file {File.open(File.join(Rails.root, 'spec', 'fixtures', 'terminated_job.json'))}
status "MyString"
-current_step_id "MyString"
-current_step_progress 1.5
-workbench nil
-referential nil
-name "MyString"
end
-
end
diff --git a/spec/models/import_message_spec.rb b/spec/models/import_message_spec.rb
new file mode 100644
index 000000000..2d8aac2b7
--- /dev/null
+++ b/spec/models/import_message_spec.rb
@@ -0,0 +1,7 @@
+require 'rails_helper'
+
+RSpec.describe ImportMessage, :type => :model do
+ it { should validate_presence_of(:criticity) }
+ it { should belong_to(:import) }
+ it { should belong_to(:resource) }
+end
diff --git a/spec/models/import_resource_spec.rb b/spec/models/import_resource_spec.rb
new file mode 100644
index 000000000..a2177979e
--- /dev/null
+++ b/spec/models/import_resource_spec.rb
@@ -0,0 +1,13 @@
+require 'rails_helper'
+
+RSpec.describe ImportResource, :type => :model do
+ it { should belong_to(:import) }
+
+ describe 'states' do
+ let(:import_resource) { create(:import_resource) }
+
+ it 'should initialize with new state' do
+ expect(import_resource.new?).to be_truthy
+ end
+ end
+end
diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb
index 10a508c71..4c44eb99c 100644
--- a/spec/models/import_spec.rb
+++ b/spec/models/import_spec.rb
@@ -3,5 +3,6 @@ require 'rails_helper'
RSpec.describe Import, :type => :model do
it { should belong_to(:referential) }
it { should belong_to(:workbench) }
+
it { should validate_presence_of(:file) }
end