Sha256: 31e07a5d3aba052cd2102728e81aff2cbc1615d58186af7a16b7de072bc0460a

Contents?: true

Size: 1.89 KB

Versions: 20

Compression:

Stored size: 1.89 KB

Contents

require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")

describe "Sequel::Plugins::UpdateRefresh" do
  before do
    @db = Sequel.mock(:numrows=>1, :fetch=>{:id=>1, :name=>'b'})
    @c = Class.new(Sequel::Model(@db[:test]))
    @ds = @c.dataset
    @c.columns :id, :name
    @c.plugin :update_refresh
    @db.sqls
  end

  it "should refresh the instance after updating" do
    o = @c.load(:id=>1, :name=>'a')
    o.save
    @db.sqls.must_equal ["UPDATE test SET name = 'a' WHERE (id = 1)", "SELECT * FROM test WHERE (id = 1) LIMIT 1"]
    o.name.must_equal 'b'
  end

  it "should refresh the instance after updating" do
    @db.extend_datasets{def supports_returning?(x) true end; def update_sql(*); sql = super; update_returning_sql(sql); sql end}
    @c.dataset = @db[:test]
    @db.sqls
    o = @c.load(:id=>1, :name=>'a')
    o.save
    @db.sqls.must_equal ["UPDATE test SET name = 'a' WHERE (id = 1) RETURNING *"]
    o.name.must_equal 'b'
  end

  it "should support specifying columns to return" do
    @db.extend_datasets{def supports_returning?(x) true end; def update_sql(*); sql = super; update_returning_sql(sql); sql end}
    @c.plugin :update_refresh, :columns => [ :a ]
    @c.dataset = @db[:test]
    @db.sqls
    o = @c.load(:id=>1, :name=>'a')
    o.save
    @db.sqls.must_equal ["UPDATE test SET name = 'a' WHERE (id = 1) RETURNING a"]
    o.name.must_equal 'b'
  end


  it "should refresh the instance after updating when returning specific columns" do
    @db.extend_datasets{def supports_returning?(x) true end; def update_sql(*); sql = super; update_returning_sql(sql); sql end}
    @c.plugin :insert_returning_select
    @c.dataset = @db[:test].select(:id, :name)
    @db.sqls
    o = @c.load(:id=>1, :name=>'a')
    o.this.opts[:returning] = [:id, :name]
    o.save
    @db.sqls.must_equal ["UPDATE test SET name = 'a' WHERE (id = 1) RETURNING id, name"]
    o.name.must_equal 'b'
  end
end

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
sequel-4.41.0 spec/extensions/update_refresh_spec.rb
sequel-4.40.0 spec/extensions/update_refresh_spec.rb
sequel-4.39.0 spec/extensions/update_refresh_spec.rb
tdiary-5.0.2 vendor/bundle/gems/sequel-4.37.0/spec/extensions/update_refresh_spec.rb
sequel-4.38.0 spec/extensions/update_refresh_spec.rb
sequel-4.37.0 spec/extensions/update_refresh_spec.rb
sequel-4.36.0 spec/extensions/update_refresh_spec.rb
tdiary-5.0.1 vendor/bundle/gems/sequel-4.35.0/spec/extensions/update_refresh_spec.rb
sequel-4.35.0 spec/extensions/update_refresh_spec.rb
sequel-4.34.0 spec/extensions/update_refresh_spec.rb
sequel-4.33.0 spec/extensions/update_refresh_spec.rb
sequel-4.32.0 spec/extensions/update_refresh_spec.rb
sequel-4.31.0 spec/extensions/update_refresh_spec.rb
sequel-4.30.0 spec/extensions/update_refresh_spec.rb
sequel-4.29.0 spec/extensions/update_refresh_spec.rb
sequel-4.28.0 spec/extensions/update_refresh_spec.rb
sequel-4.27.0 spec/extensions/update_refresh_spec.rb
sequel-4.26.0 spec/extensions/update_refresh_spec.rb
sequel-4.25.0 spec/extensions/update_refresh_spec.rb
sequel-4.24.0 spec/extensions/update_refresh_spec.rb