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 | |
| 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
| -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 |
