Added v 0.2.3 snapshot.
[twitter4r-core.git] / spec / twitter / core_spec.rb
blob5e032e4e37d40dabd050c5fca11d654f024063d0
1 require File.join(File.dirname(__FILE__), '..', 'spec_helper')
3 describe "Twitter::ClassUtilMixin mixed-in class" do
4   before(:each) do
5     class TestClass
6       include Twitter::ClassUtilMixin
7       attr_accessor :var1, :var2, :var3
8     end
9     @init_hash = { :var1 => 'val1', :var2 => 'val2', :var3 => 'val3' }
10   end
11   
12   it "should have Twitter::ClassUtilMixin as an included module" do
13     TestClass.included_modules.member?(Twitter::ClassUtilMixin).should be(true)
14   end
16   it "should set attributes passed in the hash to TestClass.new" do
17     test = TestClass.new(@init_hash)
18     @init_hash.each do |key, val|
19       test.send(key).should eql(val)
20     end
21   end
22   
23   it "should not set attributes passed in the hash that are not attributes in TestClass.new" do
24     test = nil
25     lambda { test = TestClass.new(@init_hash.merge(:var4 => 'val4')) }.should_not raise_error
26     test.respond_to?(:var4).should be(false)
27   end
28 end
30 describe "Twitter::RESTError#to_s" do
31   before(:each) do
32     @hash = { :code => 200, :message => 'OK', :uri => 'http://test.host/bla' }
33     @error = Twitter::RESTError.new(@hash)
34     @expected_message = "HTTP #{@hash[:code]}: #{@hash[:message]} at #{@hash[:uri]}"
35   end
36   
37   it "should return @expected_message" do
38     @error.to_s.should eql(@expected_message)
39   end
40 end
42 describe "Twitter::Status#eql?" do
43   before(:each) do
44     @id = 34329594003
45     @attr_hash = { :text => 'Status', :id => @id, 
46                    :user => { :name => 'Tess',
47                               :description => "Unfortunate D'Urberville",
48                               :location => 'Dorset',
49                               :url => nil,
50                               :id => 34320304,
51                               :screen_name => 'maiden_no_more' }, 
52                    :created_at => 'Wed May 02 03:04:54 +0000 2007'}
53     @obj = Twitter::Status.new @attr_hash
54     @other = Twitter::Status.new @attr_hash
55   end
56   
57   it "should return true when non-transient object attributes are eql?" do
58     @obj.should eql(@other)
59   end
61   it "should return false when not all non-transient object attributes are eql?" do
62     @other.created_at = Time.now.to_s
63     @obj.should_not eql(@other)
64   end
65   
66   it "should return true when comparing same object to itself" do
67     @obj.should eql(@obj)
68     @other.should eql(@other)
69   end
70 end
72 describe "Twitter::User#eql?" do
73   before(:each) do
74     @attr_hash = { :name => 'Elizabeth Jane Newson-Henshard',
75                    :description => "Wronged 'Daughter'",
76                    :location => 'Casterbridge',
77                    :url => nil,
78                    :id => 6748302,
79                    :screen_name => 'mayors_daughter_or_was_she?' }
80     @obj = Twitter::User.new @attr_hash
81     @other = Twitter::User.new @attr_hash
82   end
83   
84   it "should return true when non-transient object attributes are eql?" do
85     @obj.should eql(@other)
86   end
87   
88   it "should return false when not all non-transient object attributes are eql?" do
89     @other.id = 1
90     @obj.should_not eql(@other)
91     @obj.eql?(@other).should be(false)
92   end
93   
94   it "should return true when comparing same object to itself" do
95     @obj.should eql(@obj)
96     @other.should eql(@other)
97   end
98 end
100 describe "Twitter::ClassUtilMixin#require_block" do
101   before(:each) do
102     class TestClass
103       include Twitter::ClassUtilMixin
104     end
105     @test_subject = TestClass.new
106   end
107   
108   it "should respond to :require_block" do
109     @test_subject.should respond_to(:require_block)
110   end
111   
112   it "should raise ArgumentError when block not given" do
113     lambda {
114       @test_subject.send(:require_block, false)
115     }.should raise_error(ArgumentError)
116   end
117   
118   it "should not raise ArgumentError when block is given" do
119     lambda {
120       @test_subject.send(:require_block, true)
121     }.should_not raise_error(ArgumentError)
122   end
123   
124   after(:each) do
125     @test_subject = nil
126   end