Report abuse


			
require File.dirname(__FILE__) + '/helper'

context "Filter (using select)" do

  xspecify "simple ==" do
    filter = LDAP::User.select { |m| m.name == 'jon' }.to_filter
    filter.should == "(name=jon)"
  end

  xspecify "simple !=" do
    filter = LDAP::User.select { |m| m.name != 'jon' }.to_filter
    filter.should == "(!(name=jon))"
  end

  xspecify "simple == && ==" do
    filter = LDAP::User.select { |m| m.name == 'jon' && m.age == 21 }.to_filter
    filter.should == "(&(name=jon)(age=21))"
  end

  xspecify "simple == || ==" do
    filter = LDAP::User.select { |m| m.name == 'jon' || m.age == 21 }.to_filter
    filter.should == "(|(name=jon)(age=21))"
  end

  xspecify "mixed && and ||" do
    filter = User.select { |m| m.name == 'jon' || m.age == 21 && m.password == 'pass' }.to_filter
    filter.should == "(|(name=jon)(&(age=21)(password=pass)))"
  end

  xspecify "grouped && and ||" do
    filter = User.select { |m| (m.name == 'jon' || m.name == 'rick') && m.age == 21 }.to_filter
    filter.should == "(&(|(name=jon)(name=rick))(age=21))"
  end

  xspecify "simple >/<" do
    # LDAP apparently only supports >= and <=
    filter = User.select { |m| m.age > 21 }.to_filter
    filter.should == "(age>=21)"

    filter = User.select { |m| m.age >= 21 }.to_filter
    filter.should == "(age>=21)"

    filter = User.select { |m| m.age < 21 }.to_filter
    filter.should == "(age<=21)"

    filter = User.select { |m| m.age <= 21 }.to_filter
    filter.should == "(age<=21)"
  end


  xspecify "array.include? item" do
    filter = User.select { |m| [1, 2, 3, 4].include? m.id }.to_filter
    # I'm not sure whether this is idiomatic, but it works.
    filter.should == "(|(id=1)(id=2)(id=3)(id=4))"
  end

  xspecify "variable'd array.include? item" do
    array = [1, 2, 3, 4]
    filter = User.select { |m| array.include? m.id }.to_filter
    filter.should == "(|(id=1)(id=2)(id=3)(id=4))"
  end

  xspecify "simple == with variables" do
    me = 'chris'
    filter = User.select { |m| m.name == me }.to_filter
    filter.should == "(name=#{me})"
  end

end