diff options
| author | Teddy Wing | 2017-11-28 17:48:38 +0100 | 
|---|---|---|
| committer | Teddy Wing | 2017-11-29 13:18:08 +0100 | 
| commit | 77c7751694feae5c4b7d119d1d5e6134307909cc (patch) | |
| tree | 52cbc3b2fec7d707656eb6c19982265d48534765 /spec/models | |
| parent | 65c42c9f176cbaedb53e5c7a49ce4e3724b04fb8 (diff) | |
| download | chouette-core-77c7751694feae5c4b7d119d1d5e6134307909cc.tar.bz2 | |
referential_spec: Duplicate Referential spec not working
I removed the threads to try to test this synchronously. What should
happen is, the second referential should not be created. But it does get
created. So I'm thinking I made a mistake in setting up the data, and
the validation for 'same referentials' isn't run:
    Failures:
      1) Referential when two identical Referentials are created at the same time only creates one Referential
         Failure/Error: expect(referential_2).not_to be_persisted
           expected `#<Referential id: 3, name: "Test 1", slug: "test_1_different", created_at: "2017-11-28 15:41:04", upd...t: nil, created_from_id: nil, ready: true, referential_suite_id: nil, objectid_format: "stif_netex">.persisted?` to return false, got true
         # ./spec/models/referential_spec.rb:174:in `block (3 levels) in <top (required)>'
         # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:268:in `load'
         # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:268:in `block in load'
         # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:240:in `load_dependency'
         # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:268:in `load'
         # .../.gem/ruby/2.3.3/gems/spring-commands-rspec-1.0.4/lib/spring/commands/rspec.rb:18:in `call'
         # -e:1:in `<main>'
    Finished in 8.46 seconds (files took 0.82295 seconds to load)
    1 example, 1 failure
Just committing this to have it around since I spent a long time
fiddling with it. Next, planning to replace the factories with actual
imports to see if I can get the right result.
Edit: just realised that actually I can't try it with actual imports
because that's handled by Java.
Refs #5024
Diffstat (limited to 'spec/models')
| -rw-r--r-- | spec/models/referential_spec.rb | 43 | 
1 files changed, 30 insertions, 13 deletions
diff --git a/spec/models/referential_spec.rb b/spec/models/referential_spec.rb index d717511a1..8fc9f359e 100644 --- a/spec/models/referential_spec.rb +++ b/spec/models/referential_spec.rb @@ -132,26 +132,43 @@ describe Referential, :type => :model do      # TODO: Rename js: true to no transaction something      it "only creates one Referential", js: true do        begin -        referential_1 = build(:referential) +        workbench = build(:workbench) +        referential_1 = build( +          :referential, +          workbench: workbench +        )          referential_2 = referential_1.dup          referential_2.slug = "#{referential_1.slug}_different" -        thread_1 = Thread.new do -          ActiveRecord::Base.transaction do +        metadata_1 = build( +          :referential_metadata, +          referential: referential_1 +        ) +        # referential_1.metadatas << metadata +        # referential_2.metadatas << metadata +        metadata_2 = metadata_1.dup +        metadata_2.referential = referential_2 +        metadata_1.save +        metadata_2.save +        # puts Referential.all.inspect +        # puts referential_1.inspect + +        # thread_1 = Thread.new do +        #   ActiveRecord::Base.transaction do              referential_1.save -            sleep 10 -          end -        end +        #     sleep 10 +        #   end +        # end -        thread_2 = Thread.new do -          sleep 5 -          ActiveRecord::Base.transaction do +        # thread_2 = Thread.new do +        #   sleep 5 +        #   ActiveRecord::Base.transaction do              referential_2.save -          end -        end +        #   end +        # end -        thread_1.join -        thread_2.join +        # thread_1.join +        # thread_2.join          expect(referential_1).to be_persisted          expect(referential_2).not_to be_persisted  | 
