Sha256: 0de9c2d9c765ebcdbbba93e6b4d130f1e463d0ade219dd77cd07cc7207d9832e

Contents?: true

Size: 1.24 KB

Versions: 4

Compression:

Stored size: 1.24 KB

Contents

require 'pathname'
require Pathname(__FILE__).dirname + 'spec_helper.rb'

require 'ixtlan/optimistic_persistence'

class Name
  include DataMapper::Resource

  property :id, Serial
  property :name, String, :length => 2..255

  timestamps :updated_at
end

class Number
  include DataMapper::Resource

  property :id, Serial
  property :number, Integer
end

describe "Ixtlan::OptimisticPersistence" do

  before :each do
    @name = Name.create(:name => "frodo")
    @second = Name.get(@name.id)
    @number = Number.first_or_create(:number => 123)
    @other = Number.first
  end

  it 'should save' do
    @name.name = "gandalf"
    @name.save.should be_true
  end

  it 'should fail' do
    @name.name = "gandalf"
    sleep 1
    @name.save.should be_true
    @second.name = "saroman"
    lambda { @second.save }.should raise_error(Ixtlan::StaleResourceError)
  end

  it 'should fail on key change' do
    pending "maybe bug in datamapper"
    @name.id = 11
    @name.save.should be_true
    @second.id = 111
    lambda { @second.save }.should raise_error(Ixtlan::StaleResourceError)
  end

  it 'should treat non optimistic resources as usual' do
    @number.number = 345
    @number.save.should be_true
    @other.number = 987
    @other.save.should be_true
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ixtlan-0.4.3 spec/optimistic_persistence_spec.rb
ixtlan-0.4.2 spec/optimistic_persistence_spec.rb
ixtlan-0.4.1 spec/optimistic_persistence_spec.rb
ixtlan-0.4.0 spec/optimistic_persistence_spec.rb