aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/referential_cloning.rb24
-rw-r--r--db/migrate/20161024135931_create_referential_clonings.rb13
-rw-r--r--db/schema.rb15
-rw-r--r--spec/factories/referential_clonings.rb6
-rw-r--r--spec/models/referential_cloning_spec.rb10
5 files changed, 67 insertions, 1 deletions
diff --git a/app/models/referential_cloning.rb b/app/models/referential_cloning.rb
new file mode 100644
index 000000000..8d765f985
--- /dev/null
+++ b/app/models/referential_cloning.rb
@@ -0,0 +1,24 @@
+class ReferentialCloning < ActiveRecord::Base
+ include AASM
+ belongs_to :source_referential, class_name: 'Referential'
+ belongs_to :target_referential, class_name: 'Referential'
+
+ 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/db/migrate/20161024135931_create_referential_clonings.rb b/db/migrate/20161024135931_create_referential_clonings.rb
new file mode 100644
index 000000000..d82f30bb1
--- /dev/null
+++ b/db/migrate/20161024135931_create_referential_clonings.rb
@@ -0,0 +1,13 @@
+class CreateReferentialClonings < ActiveRecord::Migration
+ def change
+ create_table :referential_clonings do |t|
+ t.string :status
+ t.datetime :started_at
+ t.datetime :ended_at
+ t.references :source_referential, index: true
+ t.references :target_referential, index: true
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 26736db87..3e877de49 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: 20161024123819) do
+ActiveRecord::Schema.define(version: 20161024135931) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -377,6 +377,19 @@ ActiveRecord::Schema.define(version: 20161024123819) do
add_index "pt_links", ["objectid"], :name => "pt_links_objectid_key", :unique => true
+ create_table "referential_clonings", force: true do |t|
+ t.string "status"
+ t.datetime "started_at"
+ t.datetime "ended_at"
+ t.integer "source_referential_id"
+ t.integer "target_referential_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "referential_clonings", ["source_referential_id"], :name => "index_referential_clonings_on_source_referential_id"
+ add_index "referential_clonings", ["target_referential_id"], :name => "index_referential_clonings_on_target_referential_id"
+
create_table "referential_metadata", force: true do |t|
t.integer "referential_id"
t.integer "line_ids", array: true
diff --git a/spec/factories/referential_clonings.rb b/spec/factories/referential_clonings.rb
new file mode 100644
index 000000000..e968d44f1
--- /dev/null
+++ b/spec/factories/referential_clonings.rb
@@ -0,0 +1,6 @@
+FactoryGirl.define do
+ factory :referential_cloning do
+ association :source_referential, :factory => :referential
+ association :target_referential, :factory => :referential
+ end
+end
diff --git a/spec/models/referential_cloning_spec.rb b/spec/models/referential_cloning_spec.rb
new file mode 100644
index 000000000..30391b53e
--- /dev/null
+++ b/spec/models/referential_cloning_spec.rb
@@ -0,0 +1,10 @@
+require 'rails_helper'
+
+RSpec.describe ReferentialCloning, :type => :model do
+ it 'should have a valid factory' do
+ expect(FactoryGirl.build(:referential_cloning)).to be_valid
+ end
+
+ it { should belong_to :source_referential }
+ it { should belong_to :target_referential }
+end