1 require File.join(File.dirname(__FILE__), '..', 'spec_helper')
3 describe "Twitter::ClassUtilMixin mixed-in class" do
6 include Twitter::ClassUtilMixin
7 attr_accessor :var1, :var2, :var3
9 @init_hash = { :var1 => 'val1', :var2 => 'val2', :var3 => 'val3' }
12 it "should have Twitter::ClassUtilMixin as an included module" do
13 TestClass.included_modules.member?(Twitter::ClassUtilMixin).should be(true)
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)
23 it "should not set attributes passed in the hash that are not attributes in TestClass.new" do
25 lambda { test = TestClass.new(@init_hash.merge(:var4 => 'val4')) }.should_not raise_error
26 test.respond_to?(:var4).should be(false)
30 describe "Twitter::RESTError#to_s" 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]}"
37 it "should return @expected_message" do
38 @error.to_s.should eql(@expected_message)
42 describe "Twitter::Status#eql?" do
45 @attr_hash = { :text => 'Status', :id => @id,
46 :user => { :name => 'Tess',
47 :description => "Unfortunate D'Urberville",
48 :location => 'Dorset',
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
57 it "should return true when non-transient object attributes are eql?" do
58 @obj.should eql(@other)
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)
66 it "should return true when comparing same object to itself" do
68 @other.should eql(@other)
72 describe "Twitter::User#eql?" do
74 @attr_hash = { :name => 'Elizabeth Jane Newson-Henshard',
75 :description => "Wronged 'Daughter'",
76 :location => 'Casterbridge',
79 :screen_name => 'mayors_daughter_or_was_she?' }
80 @obj = Twitter::User.new @attr_hash
81 @other = Twitter::User.new @attr_hash
84 it "should return true when non-transient object attributes are eql?" do
85 @obj.should eql(@other)
88 it "should return false when not all non-transient object attributes are eql?" do
90 @obj.should_not eql(@other)
91 @obj.eql?(@other).should be(false)
94 it "should return true when comparing same object to itself" do
96 @other.should eql(@other)
100 describe "Twitter::ClassUtilMixin#require_block" do
103 include Twitter::ClassUtilMixin
105 @test_subject = TestClass.new
108 it "should respond to :require_block" do
109 @test_subject.should respond_to(:require_block)
112 it "should raise ArgumentError when block not given" do
114 @test_subject.send(:require_block, false)
115 }.should raise_error(ArgumentError)
118 it "should not raise ArgumentError when block is given" do
120 @test_subject.send(:require_block, true)
121 }.should_not raise_error(ArgumentError)