diff options
| -rw-r--r-- | spec/models/referential_spec.rb | 36 | 
1 files changed, 36 insertions, 0 deletions
| diff --git a/spec/models/referential_spec.rb b/spec/models/referential_spec.rb index eed5467c1..d717511a1 100644 --- a/spec/models/referential_spec.rb +++ b/spec/models/referential_spec.rb @@ -126,4 +126,40 @@ describe Referential, :type => :model do        end      end    end + +  # two referentials created at the same time should not be possible when both have the same data +  context "when two identical Referentials are created at the same time" do +    # TODO: Rename js: true to no transaction something +    it "only creates one Referential", js: true do +      begin +        referential_1 = build(:referential) +        referential_2 = referential_1.dup +        referential_2.slug = "#{referential_1.slug}_different" + +        thread_1 = Thread.new do +          ActiveRecord::Base.transaction do +            referential_1.save +            sleep 10 +          end +        end + +        thread_2 = Thread.new do +          sleep 5 +          ActiveRecord::Base.transaction do +            referential_2.save +          end +        end + +        thread_1.join +        thread_2.join + +        expect(referential_1).to be_persisted +        expect(referential_2).not_to be_persisted + +      ensure +        Apartment::Tenant.drop(referential_1.slug) +        Apartment::Tenant.drop(referential_2.slug) +      end +    end +  end  end | 
