Sha256: 8654a55d0dc48e2331e5c4c311bfc5e4b0b7928bf952fd234364aca32e27d5d2
Contents?: true
Size: 1.7 KB
Versions: 5
Compression:
Stored size: 1.7 KB
Contents
require File.join(File.dirname(__FILE__), "test_helper") class IndicesTest < Test::Unit::TestCase class User < Ohm::Model attribute :email index :email index :email_provider def email_provider email.split("@").last end end context "A model with an indexed attribute" do setup do Ohm.flush @user1 = User.create(:email => "foo") @user2 = User.create(:email => "bar") @user3 = User.create(:email => "baz qux") end should "be able to find by the given attribute" do assert_equal @user1, User.find(:email, "foo").first end should "return nil if no results are found" do assert User.find(:email, "foobar").empty? assert_equal nil, User.find(:email, "foobar").first end should "update indices when changing attribute values" do @user1.email = "baz" @user1.save assert_equal [], User.find(:email, "foo") assert_equal [@user1], User.find(:email, "baz") end should "remove from the index after deleting" do @user2.delete assert_equal [], User.find(:email, "bar") end should "work with attributes that contain spaces" do assert_equal [@user3], User.find(:email, "baz qux") end end context "Indexing arbitrary attributes" do setup do Ohm.flush @user1 = User.create(:email => "foo@gmail.com") @user2 = User.create(:email => "bar@gmail.com") @user3 = User.create(:email => "bazqux@yahoo.com") end should "allow indexing by an arbitrary attribute" do assert_equal [@user1, @user2], User.find(:email_provider, "gmail.com").to_a.sort_by { |u| u.id } assert_equal [@user3], User.find(:email_provider, "yahoo.com") end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
ohm-0.0.18 | test/indices_test.rb |
ohm-0.0.17 | test/indices_test.rb |
ohm-0.0.14 | test/indices_test.rb |
ohm-0.0.15 | test/indices_test.rb |
ohm-0.0.16 | test/indices_test.rb |