aboutsummaryrefslogtreecommitdiffstats
path: root/activeresource/test/base/equality_test.rb
blob: 4a3f75f9989e98438fda7fbdf8a857ba8c506a23 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
require "#{File.dirname(__FILE__)}/../abstract_unit"
require "fixtures/person"
require "fixtures/street_address"

class BaseEqualityTest < Test::Unit::TestCase
  def setup
    @new = Person.new
    @one = Person.new(:id => 1)
    @two = Person.new(:id => 2)
    @street = StreetAddress.new(:id => 2)
  end

  def test_should_equal_self
    assert @new == @new, '@new == @new'
    assert @one == @one, '@one == @one'
  end

  def test_shouldnt_equal_new_resource
    assert @new != @one, '@new != @one'
    assert @one != @new, '@one != @new'
  end

  def test_shouldnt_equal_different_class
    assert @two != @street, 'person != street_address with same id'
    assert @street != @two, 'street_address != person with same id'
  end

  def test_eql_should_alias_equals_operator
    assert_equal @new == @new, @new.eql?(@new)
    assert_equal @new == @one, @new.eql?(@one)

    assert_equal @one == @one, @one.eql?(@one)
    assert_equal @one == @new, @one.eql?(@new)

    assert_equal @one == @street, @one.eql?(@street)
  end

  def test_hash_should_be_id_hash
    [@new, @one, @two, @street].each do |resource|
      assert_equal resource.id.hash, resource.hash
    end
  end
end