diff options
Diffstat (limited to 'spec/workers')
| -rw-r--r-- | spec/workers/referential_cloning_worker_spec.rb | 53 |
1 files changed, 18 insertions, 35 deletions
diff --git a/spec/workers/referential_cloning_worker_spec.rb b/spec/workers/referential_cloning_worker_spec.rb index 7e4a2357a..2b9a54805 100644 --- a/spec/workers/referential_cloning_worker_spec.rb +++ b/spec/workers/referential_cloning_worker_spec.rb @@ -2,52 +2,35 @@ require 'spec_helper' require 'ostruct' RSpec.describe ReferentialCloningWorker do + alias_method :worker, :subject context "given a referential cloning" do + let(:id) { double } + let(:referential_cloning) { double } - let( :id ){ double } + it "invokes the clone! method of the associated ReferentialCloning" do + expect(ReferentialCloning).to receive(:find).with(id).and_return(referential_cloning) + expect(referential_cloning).to receive(:clone!) - let( :worker ){ described_class.new } - - def make_referential(schema_name) - return OpenStruct.new( slug: schema_name ) - end - - let( :source_schema ){ "source_schema" } - let( :target_schema ){ "target_schema" } - let( :referential_cloning ){ OpenStruct.new(source_referential: make_referential(source_schema), - target_referential: make_referential(target_schema)) } - let( :cloner ){ 'cloner' } - - - before do - expect( ReferentialCloning ).to receive(:find).with(id).and_return(referential_cloning) - expect( AF83::SchemaCloner ).to receive(:new).with( source_schema, target_schema ).and_return(cloner) - expect( cloner ).to receive(:clone_schema) - - expect( referential_cloning ).to receive(:run!) - end - - it "invokes the correct stored procedure, updates the database and the AASM" do - expect( referential_cloning ).to receive(:successful!) worker.perform(id) end end - it "should clone an existing Referential" do - source_referential = create :referential - - source_referential.switch - source_time_table = create :time_table + context 'with existing Referential' do + it "preserve existing data" do + source_referential = create :referential - target_referential = create :referential, created_from: source_referential + source_referential.switch + source_time_table = create :time_table - cloning = ReferentialCloning.create source_referential: source_referential, target_referential: target_referential - ReferentialCloningWorker.new.perform(cloning) + target_referential = create :referential, created_from: source_referential - target_referential.switch - expect(Chouette::TimeTable.where(objectid: source_time_table.objectid).exists?) - end + cloning = ReferentialCloning.create source_referential: source_referential, target_referential: target_referential + worker.perform(cloning.id) + target_referential.switch + expect(Chouette::TimeTable.where(objectid: source_time_table.objectid).exists?) + end + end end |
