Sha256: 62cbd22438176015c8901a46c002a70d5ee963fb1be3431e72c816d3cbce88fc

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

require File.expand_path("./helper", File.dirname(__FILE__))

class User < Ohm::Model
  attribute :fname
  attribute :lname
  attribute :status
  index :fname
  index :lname
  index :status
end

setup do
  u1 = User.create(fname: "John", lname: "Doe", status: "active")
  u2 = User.create(fname: "Jane", lname: "Doe", status: "active")

  [u1, u2]
end

test "findability" do |john, jane|
  assert_equal 1, User.find(lname: "Doe", fname: "John").size
  assert User.find(lname: "Doe", fname: "John").include?(john)

  assert_equal 1, User.find(lname: "Doe", fname: "Jane").size
  assert User.find(lname: "Doe", fname: "Jane").include?(jane)
end

test "sets aren't mutable" do |john, jane|
  assert_raise NoMethodError do
    User.find(lname: "Doe").add(john)
  end

  assert_raise NoMethodError do
    User.find(lname: "Doe", fname: "John").add(john)
  end
end

test "#first" do |john, jane|
  set = User.find(lname: "Doe", status: "active")

  assert_equal jane, set.first(by: "fname", order: "ALPHA")
  assert_equal john, set.first(by: "fname", order: "ALPHA DESC")

  assert_equal "Jane", set.first(by: "fname", order: "ALPHA", get: "fname")
  assert_equal "John", set.first(by: "fname", order: "ALPHA DESC", get: "fname")
end

test "#[]" do |john, jane|
  set = User.find(lname: "Doe", status: "active")

  assert_equal john, set[john.id]
  assert_equal jane, set[jane.id]
end

test "#except" do |john, jane|
  out = User.create(status: "inactive", lname: "Doe")

  res = User.find(lname: "Doe").except(status: "inactive")

  assert_equal 2, res.size
  assert res.include?(john)
  assert res.include?(jane)
end

test "#union" do |john, jane|
  included = User.create(status: "inactive", lname: "Doe")
  excluded = User.create(status: "super", lname: "Doe")

  res = User.find(status: "active").union(status: "inactive")

  assert_equal 3, res.size
  assert res.include?(john)
  assert res.include?(jane)
  assert res.include?(included)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ohm-1.0.0.rc1 test/filtering.rb