Sha256: 87fd8fa4719548c6ab824091f2bba16e70d57e3969c375b6f24345ae008dac6c

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

describe 'db' do
  before do
    class Document
      include Yapper::Document

      field :field_1
      field :field_2
    end

    class AnotherDocument
      include Yapper::Document

      field :field_1
      field :field_2
    end
  end
  before { Yapper::DB.instance.purge }
  after { Object.send(:remove_const, 'Document') }
  after { Object.send(:remove_const, 'AnotherDocument') }

  it 'is thread safe' do
    threads = []
    threads << Thread.new { 10.times { Document.create(:field_1 => 'field') } }
    threads << Thread.new { 10.times { AnotherDocument.create(:field_1 => 'field')  } }
    threads << Thread.new { 10.times { Document.all.each { |d| d.update_attributes(:field_1 => 'bye') } } }
    threads << Thread.new { 10.times { AnotherDocument.all.each { |d| d.update_attributes(:field_1 => 'bye') } } }
    threads.each(&:join)

    Document.all.count.should == 10
    AnotherDocument.all.count.should == 10
  end
  
  it 'can nest transactions' do
    Yapper::DB.instance.execute do |txn|
      Document.create(:field_1 => '1')
      Document.create(:field_1 => '2')
    end
    Document.all.count.should == 2
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
motion-yapper-0.0.1 spec/integration/db_spec.rb