Sha256: 64c24bd11d21df860545777a6ea118ff44c0f6fdcb789775dbd20d69299ee327

Contents?: true

Size: 1.81 KB

Versions: 23

Compression:

Stored size: 1.81 KB

Contents

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

describe "subset_conditions plugin" do
  before do
    @c = Class.new(Sequel::Model(:a))
    @c.plugin :subset_conditions
  end

  it "should provide *_conditions method return the arguments passed" do
    @c.subset(:published, :published => true)
    @c.where(@c.published_conditions).sql.must_equal @c.published.sql

    @c.subset(:active, :active)
    @c.where(@c.active_conditions).sql.must_equal @c.active.sql

    @c.subset(:active_published, :active, :published => true)
    @c.where(@c.active_published_conditions).sql.must_equal @c.active_published.sql
    @c.where(Sequel.&(@c.active_conditions, @c.published_conditions)).sql.must_equal @c.active_published.sql
    @c.where(Sequel.|(@c.active_conditions, @c.published_conditions)).sql.must_equal "SELECT * FROM a WHERE (active OR (published IS TRUE))"
    @c.where(Sequel.|(@c.active_published_conditions, :foo)).sql.must_equal "SELECT * FROM a WHERE ((active AND (published IS TRUE)) OR foo)"
  end

  it "should work with blocks" do
    p1 = proc{{:published=>true}}
    @c.subset(:published, &p1)
    @c.where(@c.published_conditions).sql.must_equal @c.published.sql

    p2 = proc{:active}
    @c.subset(:active, &p2)
    @c.where(@c.active_conditions).sql.must_equal @c.active.sql

    @c.subset(:active_published, p2, &p1)
    @c.where(@c.active_published_conditions).sql.must_equal @c.active_published.sql
    @c.where(Sequel.&(@c.active_conditions, @c.published_conditions)).sql.must_equal @c.active_published.sql
    @c.where(Sequel.|(@c.active_conditions, @c.published_conditions)).sql.must_equal "SELECT * FROM a WHERE (active OR (published IS TRUE))"
    @c.where(Sequel.|(@c.active_published_conditions, :foo)).sql.must_equal "SELECT * FROM a WHERE ((active AND (published IS TRUE)) OR foo)"
  end
end

Version data entries

23 entries across 22 versions & 2 rubygems

Version Path
tdiary-5.0.5 vendor/bundle/gems/tdiary-5.0.4/vendor/bundle/gems/sequel-4.44.0/spec/extensions/subset_conditions_spec.rb
tdiary-5.0.5 vendor/bundle/gems/sequel-4.44.0/spec/extensions/subset_conditions_spec.rb
tdiary-5.0.4 vendor/bundle/gems/sequel-4.44.0/spec/extensions/subset_conditions_spec.rb
sequel-4.44.0 spec/extensions/subset_conditions_spec.rb
sequel-4.43.0 spec/extensions/subset_conditions_spec.rb
sequel-4.42.1 spec/extensions/subset_conditions_spec.rb
sequel-4.42.0 spec/extensions/subset_conditions_spec.rb
sequel-4.41.0 spec/extensions/subset_conditions_spec.rb
sequel-4.40.0 spec/extensions/subset_conditions_spec.rb
sequel-4.39.0 spec/extensions/subset_conditions_spec.rb
tdiary-5.0.2 vendor/bundle/gems/sequel-4.37.0/spec/extensions/subset_conditions_spec.rb
sequel-4.38.0 spec/extensions/subset_conditions_spec.rb
sequel-4.37.0 spec/extensions/subset_conditions_spec.rb
sequel-4.36.0 spec/extensions/subset_conditions_spec.rb
tdiary-5.0.1 vendor/bundle/gems/sequel-4.35.0/spec/extensions/subset_conditions_spec.rb
sequel-4.35.0 spec/extensions/subset_conditions_spec.rb
sequel-4.34.0 spec/extensions/subset_conditions_spec.rb
sequel-4.33.0 spec/extensions/subset_conditions_spec.rb
sequel-4.32.0 spec/extensions/subset_conditions_spec.rb
sequel-4.31.0 spec/extensions/subset_conditions_spec.rb