dribble 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010 Robert R Evans - The name 'Dribble' is owned by its respective owners.
1
+ Copyright (c) 2010 Robert R Evans - The name 'Dribbble' is owned by its respective owners.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -1,26 +1,103 @@
1
1
  = Dribble
2
2
 
3
- This is the unofficial dribble api. For more examples look in the examples/ directory. There are examples for the both styles (object notation and hash implementation.)
3
+ This is the unofficial dribbble api. For more examples look in the examples/ directory. There are examples for the both styles (object notation and hash implementation.)
4
4
 
5
5
  == Dribble::API
6
6
 
7
- There is a very thin wrapper for the Dribble API that is labeled as Dribble::API. This uses the bare minimum to get the desired data from Dribble and returns a hash. This implementation is focused on simplicity and speed. However, I have yet to really work on the speed aspect.
7
+ There is a very thin wrapper for the Dribble API that is called Dribble::API. This uses the bare minimum to get the desired data from Dribbble and returns a hash. This implementation is focused on simplicity and speed. However, I have yet to really work on the speed aspect.
8
8
 
9
- Dribble::API::Player.profile('simplebits')
10
- Dribble::API::Shot.popular
11
9
 
10
+ === Dribble::API::Player
12
11
 
13
- == Dribble::Player && Dribble::Shot
12
+ Dribble::API::Player.find_shots('simplebits') # => Finds all the shots by simplebits
14
13
 
15
- Dribble::Player and Dribble::Shot is another layer on-top of the API to add that object look and feel. This is more for convenience and ease of use.
14
+ Dribble::API::Player.profile('simplebits') # => Gets simplebits' profile
16
15
 
17
- This is meant for convenience and ease of use.
16
+ Dribble::API::Player.following_shots('simplebits') # => Gets the shots that simplebits is following
17
+
18
+ Dribble::API::Player.followers('simplebits') # => gets simplebits' followers
19
+
20
+ Dribble::API::Player.draftees('simplebits') # => gets simplebits' draftees
21
+
22
+ Each of the above (except the profile request) accepts a second parameter, a hash of options. This hash can consist of the following:
23
+
24
+ {:per_page => 30, :page => 1}
25
+
26
+ You can control the pagination yourself by doing the following:
27
+
28
+ Dribble::API::Player.followers('simplebits', {:per_page => 25, :page => 3})
29
+
30
+ 30 is the max amount you can request per page. It is also the default set within this API implementation. Page 1 is the default page.
31
+
32
+ === Dribble::API::Shot
33
+
34
+
35
+ Dribble::API::Shot.for(1) # => gets the shots for the user with the id of 1
36
+
37
+ Dribble::API::Shot.everyones # => Gets everyones shots
38
+
39
+ Dribble::API::Shot.debuts # => gets the debut shots
40
+
41
+ Dribble::API::Shot.popular # => gets the popular shots
42
+
43
+ Each of the above (except the profile request) accepts a second parameter, a hash of options. This hash can consist of the following:
44
+
45
+ {:per_page => 30, :page => 1}
46
+
47
+ You can control the pagination yourself by doing the following:
48
+
49
+ Dribble::API::Shot.popular({:per_page => 25, :page => 3})
50
+
51
+ 30 is the max amount you can request per page. It is also the default set within this API implementation. Page 1 is the default page.
52
+
53
+ === Options Defaults
54
+
55
+ * Per page : 30
56
+ * Page : 1
57
+
58
+ == A convenience layer
59
+
60
+ This is another layer of the API wrapper that sits on top of the Dribble::API to give an easier working interface.
61
+
62
+ === Dribble::Player
63
+
64
+ @player = Dribble::Player.profile('simplebits')
65
+ @player.id # => 1
66
+ @player.name # => Dan Cederholm
67
+ @player.url # => http://dribbble.com/players/simplebits
68
+ @player.avatar_url # => http://dribbble.com/system/users/1/avatars/thumb/dancederholm-peek.jpg?1261060245
69
+ @player.location # => Salem, MA
70
+ @player.created_at # => 2009/07/07 21:51:22 -0400
71
+ @player.draftees_count # => 103
72
+ @player.following_count # => 378
73
+ @player.shots_count # => 148
74
+ @player.followers_count # => 2129
75
+ @player.following # => [] This makes a request to dribbble to get the shots that this user is following
76
+ @player.shots # => [] This makes a request to dribbble to get the shots that this user has put up
77
+ @player.drafted_by_palyer_id # => nil
18
78
 
19
- Dribble::Shot.popular
20
79
 
21
- player = Dribble::Player.profile('simplebits')
22
- player.following # => the shots that this player is following
23
- player.shots # => the players shots
80
+ More documentation coming soon.
81
+
82
+ === Dribble::Shot
83
+
84
+ @shot = Dribble::Shot.for(1)
85
+ @shot.id # => 1
86
+ @shot.title # => Working on the new shop
87
+ @shot.url # => http://dribbble.com/shots/1-Working-on-the-new-shop
88
+ @shot.image_url # => http://dribbble.com/system/users/1/screenshots/1/Picture-2.png
89
+ @shot.image_teaser_url # => http://dribbble.com/system/users/1/screenshots/1/Picture-2_teaser.png
90
+ @shot.width # => 400
91
+ @shot.height # => 300
92
+ @shot.created_at # => 2009/07/08 06:08:35 -0400
93
+ @shot.player # => Dribble::Player Object (e.g. @shot.player.name, @shot.player.url, @shot.player.location)
94
+ @shot.views_count # => 838
95
+ @shot.likes_count # => 8
96
+ @shot.comments_count # => 3
97
+ @shot.rebounds_count # => 0
98
+
99
+
100
+ More documentation coming soon.
24
101
 
25
102
  == Note on Patches/Pull Requests
26
103
 
@@ -34,6 +111,6 @@ This is meant for convenience and ease of use.
34
111
 
35
112
  == Copyright
36
113
 
37
- The name "Dribble" belongs to http://www.dribble.com
114
+ The name "Dribbble" belongs to http://www.dribbble.com
38
115
 
39
116
  Copyright (c) 2010 Robert R Evans. See LICENSE for details.
data/Rakefile CHANGED
@@ -5,15 +5,16 @@ begin
5
5
  require 'jeweler'
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "dribble"
8
- gem.summary = %Q{API Wrapper for the awesome Dribble Site}
9
- gem.description = %Q{API Wrapper for the awesome Dribble Site}
8
+ gem.summary = %Q{API Wrapper for the awesome Dribbble Site}
9
+ gem.description = %Q{API Wrapper for the awesome Dribbble Site}
10
10
  gem.email = "robert@codewranglers.org"
11
11
  gem.homepage = "http://github.com/revans/dribble"
12
12
  gem.authors = ["Robert R Evans"]
13
- gem.add_development_dependency "rspec", "= 1.3.0"
14
- gem.add_development_dependency "yard", "= 0.5.8"
15
13
 
16
- gem.add_dependency 'yajl-ruby', '= 0.7.7'
14
+ gem.add_development_dependency "rspec", '= 1.3.0'
15
+ gem.add_development_dependency "yard", '= 0.5.8'
16
+
17
+ gem.add_dependency 'em-http-request', '= 0.2.10'
17
18
 
18
19
  end
19
20
  Jeweler::GemcutterTasks.new
@@ -21,6 +22,7 @@ rescue LoadError
21
22
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
22
23
  end
23
24
 
25
+
24
26
  require 'spec/rake/spectask'
25
27
  Spec::Rake::SpecTask.new(:spec) do |spec|
26
28
  spec.libs << 'lib' << 'spec'
@@ -30,6 +32,7 @@ end
30
32
  Spec::Rake::SpecTask.new(:rcov) do |spec|
31
33
  spec.libs << 'lib' << 'spec'
32
34
  spec.pattern = 'spec/**/*_spec.rb'
35
+ spec.rcov_opts = ['--exclude', '^spec,/gems/,/Library/']
33
36
  spec.rcov = true
34
37
  end
35
38
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/dribble.gemspec CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dribble}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Robert R Evans"]
12
- s.date = %q{2010-08-09}
13
- s.description = %q{API Wrapper for the awesome Dribble Site}
12
+ s.date = %q{2010-08-13}
13
+ s.description = %q{API Wrapper for the awesome Dribbble Site}
14
14
  s.email = %q{robert@codewranglers.org}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
@@ -40,23 +40,37 @@ Gem::Specification.new do |s|
40
40
  "lib/dribble/shot.rb",
41
41
  "lib/dribble/shots.rb",
42
42
  "lib/dribble/version.rb",
43
- "spec/dribble/core_ext/hash_spec.rb",
44
- "spec/dribble/core_ext/object_spec.rb",
45
- "spec/rcov.opts",
43
+ "spec/core_ext/hash_spec.rb",
44
+ "spec/core_ext/object_spec.rb",
45
+ "spec/dribble/api/player_spec.rb",
46
+ "spec/dribble/api/shot_spec.rb",
47
+ "spec/dribble/version_spec.rb",
48
+ "spec/fake_data/player/player_draftees.json",
49
+ "spec/fake_data/player/player_find_shots.json",
50
+ "spec/fake_data/player/player_followers.json",
51
+ "spec/fake_data/player/player_following_shots.json",
52
+ "spec/fake_data/player/player_profile.json",
53
+ "spec/fake_data/shot/shot_debuts.json",
54
+ "spec/fake_data/shot/shot_everyones.json",
55
+ "spec/fake_data/shot/shot_for.json",
56
+ "spec/fake_data/shot/shot_popular.json",
46
57
  "spec/spec.opts",
47
58
  "spec/spec_helper.rb",
48
- "spec/support/fakeweb_yajl.rb"
59
+ "spec/support/fake_eventmachine_requests.rb"
49
60
  ]
50
61
  s.homepage = %q{http://github.com/revans/dribble}
51
62
  s.rdoc_options = ["--charset=UTF-8"]
52
63
  s.require_paths = ["lib"]
53
64
  s.rubygems_version = %q{1.3.7}
54
- s.summary = %q{API Wrapper for the awesome Dribble Site}
65
+ s.summary = %q{API Wrapper for the awesome Dribbble Site}
55
66
  s.test_files = [
56
- "spec/dribble/core_ext/hash_spec.rb",
57
- "spec/dribble/core_ext/object_spec.rb",
67
+ "spec/core_ext/hash_spec.rb",
68
+ "spec/core_ext/object_spec.rb",
69
+ "spec/dribble/api/player_spec.rb",
70
+ "spec/dribble/api/shot_spec.rb",
71
+ "spec/dribble/version_spec.rb",
58
72
  "spec/spec_helper.rb",
59
- "spec/support/fakeweb_yajl.rb",
73
+ "spec/support/fake_eventmachine_requests.rb",
60
74
  "examples/barebones/player.rb",
61
75
  "examples/barebones/shot.rb",
62
76
  "examples/player.rb",
@@ -70,16 +84,16 @@ Gem::Specification.new do |s|
70
84
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
71
85
  s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
72
86
  s.add_development_dependency(%q<yard>, ["= 0.5.8"])
73
- s.add_runtime_dependency(%q<yajl-ruby>, ["= 0.7.7"])
87
+ s.add_runtime_dependency(%q<em-http-request>, ["= 0.2.10"])
74
88
  else
75
89
  s.add_dependency(%q<rspec>, ["= 1.3.0"])
76
90
  s.add_dependency(%q<yard>, ["= 0.5.8"])
77
- s.add_dependency(%q<yajl-ruby>, ["= 0.7.7"])
91
+ s.add_dependency(%q<em-http-request>, ["= 0.2.10"])
78
92
  end
79
93
  else
80
94
  s.add_dependency(%q<rspec>, ["= 1.3.0"])
81
95
  s.add_dependency(%q<yard>, ["= 0.5.8"])
82
- s.add_dependency(%q<yajl-ruby>, ["= 0.7.7"])
96
+ s.add_dependency(%q<em-http-request>, ["= 0.2.10"])
83
97
  end
84
98
  end
85
99
 
@@ -2,25 +2,25 @@ dir = File.expand_path(File.join(File.dirname(__FILE__), '../..', 'lib'))
2
2
  require File.join(dir, 'dribble')
3
3
 
4
4
  # puts "Find Player's Shots by name"
5
- # puts Dribble::API::Player.find('simplebits').inspect
5
+ # puts Dribble::API::Player.find_shots('simplebits').inspect
6
6
 
7
- # puts
8
- # puts "Find Player's Profile"
9
- # player = Dribble::API::Player.profile('simplebits')
10
- # puts player
7
+ puts
8
+ puts "Find Player's Profile"
9
+ player = Dribble::API::Player.profile('simplebits')
10
+ puts player.inspect
11
11
 
12
- # puts
13
- # puts "Find all the shots a player is following"
14
- # puts Dribble::API::Player.following_shots('simplebits').inspect
12
+ puts
13
+ puts "Find all the shots a player is following"
14
+ puts Dribble::API::Player.following_shots('simplebits')
15
15
 
16
16
 
17
17
  puts
18
18
  puts "Find Player's Followers"
19
19
  player = Dribble::API::Player.followers('simplebits')
20
- puts player.inspect
20
+ puts player
21
21
 
22
22
 
23
23
  puts
24
24
  puts "Find Player's Draftees"
25
25
  player = Dribble::API::Player.draftees('simplebits')
26
- puts player.inspect
26
+ puts player
@@ -3,19 +3,19 @@ require File.join(dir, 'dribble')
3
3
 
4
4
  # puts "Find a specific shot by ID"
5
5
  # shot = Dribble::API::Shot.for(1)
6
- # puts shot.inspect
7
-
6
+ # puts shot
7
+ #
8
8
  # puts
9
9
  # puts "Everyone's shots"
10
- # puts Dribble::API::Shot.everyones.inspect
11
-
12
-
10
+ # puts Dribble::API::Shot.everyones
11
+ #
12
+ #
13
13
  # puts
14
14
  # puts "Debut shots"
15
- # puts Dribble::API::Shot.debuts.inspect
16
-
17
-
18
- puts
19
- puts "Popular shots"
20
- popular = Dribble::API::Shot.popular
21
- puts popular.inspect
15
+ # puts Dribble::API::Shot.debuts
16
+ #
17
+ #
18
+ # puts
19
+ # puts "Popular shots"
20
+ # popular = Dribble::API::Shot.popular
21
+ # puts popular
data/examples/player.rb CHANGED
@@ -6,10 +6,10 @@ require File.join(dir, 'dribble')
6
6
  # puts player.inspect
7
7
  #
8
8
  #
9
- # puts
10
- # puts "Find Player's Profile"
11
- # player2 = Dribble::Player.profile('simplebits') # OR Dribble::Player.find('simplebits')
12
- # puts player.inspect
9
+ puts
10
+ puts "Find Player's Profile"
11
+ player2 = Dribble::Player.profile('simplebits') # OR Dribble::Player.find('simplebits')
12
+ puts player2.inspect
13
13
 
14
14
 
15
15
  # puts
@@ -17,17 +17,17 @@ require File.join(dir, 'dribble')
17
17
  # player3 = Dribble::Player.following_shots('simplebits')
18
18
  # puts player3.inspect
19
19
 
20
-
21
- puts
22
- puts "Find a players followers"
23
- player4 = Dribble::Player.followers('simplebits')
24
- puts player4.inspect
25
-
26
-
27
- puts
28
- puts "Find a players draftees"
29
- player5 = Dribble::Player.draftees('simplebits')
30
- puts player5.inspect
20
+ #
21
+ # puts
22
+ # puts "Find a players followers"
23
+ # player4 = Dribble::Player.followers('simplebits')
24
+ # puts player4.inspect
25
+ #
26
+ #
27
+ # puts
28
+ # puts "Find a players draftees"
29
+ # player5 = Dribble::Player.draftees('simplebits')
30
+ # puts player5.inspect
31
31
 
32
32
 
33
33
 
@@ -3,14 +3,31 @@ module Dribble
3
3
  class << self
4
4
  DRIBBLE_API = 'api.dribbble.com'
5
5
 
6
+
7
+ ##
8
+ # Get
9
+ #
10
+ # @param [String, Hash]
11
+ # @return [Array/Hash]
12
+ # @api private
13
+ #
6
14
  def get(query, options={})
7
- meth = options.delete(:api_endpoint)
8
- uri = options.empty? ? "#{to_url}#{query}" : "#{to_url}#{query}?#{options.to_query}"
9
- url = ::URI.parse(uri)
10
- results = ::Yajl::HttpStream.get(url, :symbolize_keys => true)
11
- results[:api_endpoint] = meth if meth
12
- results
13
- end
15
+ meth = options.delete(:api_endpoint)
16
+ ::EventMachine.run do
17
+ http = ::EventMachine::HttpRequest.new("#{to_url}#{query}").get(:query => options, :timeout => 10)
18
+ http.callback do
19
+ @response = {
20
+ :status => http.response_header.status,
21
+ :header => http.response_header,
22
+ :body => http.response,
23
+ :data => ::Yajl::Parser.new(:symbolize_keys => true).parse(http.response)
24
+ }
25
+ ::EventMachine.stop
26
+ end
27
+ end
28
+ @response[:data][:api_endpoint] = meth if meth
29
+ @response[:data]
30
+ end
14
31
 
15
32
 
16
33
  private
data/lib/dribble.rb CHANGED
@@ -3,9 +3,8 @@ $:.unshift(File.dirname(__FILE__)) unless $:.include?(File.dirname(__FILE__)) ||
3
3
  require 'uri'
4
4
 
5
5
  require 'rubygems'
6
- require 'yajl/gzip'
7
- require 'yajl/deflate'
8
- require 'yajl/http_stream'
6
+ require 'em-http-request'
7
+ require 'yajl'
9
8
 
10
9
  base = File.expand_path(File.dirname(__FILE__))
11
10
 
@@ -0,0 +1,94 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Hash do
4
+
5
+ describe "To Query" do
6
+ before(:all) do
7
+ @query_hash = {:name => 'hilton', :postal => '92009'}
8
+ end
9
+
10
+ it "should create a standard query string" do
11
+ @query_hash.to_query.should == 'name=hilton&postal=92009'
12
+ end
13
+
14
+ it "should create an encoded query string with a namespace" do
15
+ @query_hash.to_query('property').should == 'property%5Bname%5D=hilton&property%5Bpostal%5D=92009'
16
+ end
17
+ end
18
+
19
+ describe "Symbolizing Keys" do
20
+ before(:all) do
21
+ @stringified_keys = {'name' => 'Hilton', 'address' => '1200 Ave.', 'postal' => '92011'}
22
+ @recursive = {'name' => 'Hilton', 'address' => {'street' => '1200 Ave.', 'postal' => '92011', 'directions' => {'from' => 'here', 'to' => 'there', 'dive_in' => {'name' => 'something'}}}}
23
+ end
24
+
25
+ it "should create a new hash, keeping the old" do
26
+ a = @stringified_keys.symbolize_keys
27
+ a.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
28
+ @stringified_keys.should == {'name' => 'Hilton', 'address' => '1200 Ave.', 'postal' => '92011'}
29
+ end
30
+
31
+ it "should overwrite the existing hash making the keys symbols" do
32
+ a = @stringified_keys.symbolize_keys!
33
+ a.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
34
+ @stringified_keys.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
35
+ end
36
+
37
+ it "should overwrite and recursively make all keys symbols" do
38
+ a = @recursive.recursive_symbolize_keys!
39
+ a.should == {:name => 'Hilton', :address => {:street => '1200 Ave.', :postal => '92011', :directions => {:from => 'here', :to => 'there', :dive_in => {:name => 'something'}}}}
40
+ @recursive.should == {:name => 'Hilton', :address => {:street => '1200 Ave.', :postal => '92011', :directions => {:from => 'here', :to => 'there', :dive_in => {:name => 'something'}}}}
41
+ end
42
+ end
43
+
44
+ describe "Symbolizing Keys" do
45
+ before(:all) do
46
+ @stringified_keys = {'name' => 'Hilton', 'address' => '1200 Ave.', 'postal' => '92011'}
47
+ @recursive = {'name' => 'Hilton', 'address' => {'street' => '1200 Ave.', 'postal' => '92011', 'directions' => {'from' => 'here', 'to' => 'there', 'dive_in' => {'name' => 'something'}}}}
48
+ end
49
+
50
+ it "should create a new hash, keeping the old" do
51
+ a = @stringified_keys.symbolize_keys
52
+ a.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
53
+ @stringified_keys.should == {'name' => 'Hilton', 'address' => '1200 Ave.', 'postal' => '92011'}
54
+ end
55
+
56
+ it "should overwrite the existing hash making the keys symbols" do
57
+ a = @stringified_keys.symbolize_keys!
58
+ a.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
59
+ @stringified_keys.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
60
+ end
61
+
62
+ it "should overwrite and recursively make all keys symbols" do
63
+ a = @recursive.recursive_symbolize_keys!
64
+ a.should == {:name => 'Hilton', :address => {:street => '1200 Ave.', :postal => '92011', :directions => {:from => 'here', :to => 'there', :dive_in => {:name => 'something'}}}}
65
+ @recursive.should == {:name => 'Hilton', :address => {:street => '1200 Ave.', :postal => '92011', :directions => {:from => 'here', :to => 'there', :dive_in => {:name => 'something'}}}}
66
+ end
67
+ end
68
+
69
+ describe "Symbolizing Keys" do
70
+ before(:all) do
71
+ @stringified_keys = {'name' => 'Hilton', 'address' => '1200 Ave.', 'postal' => '92011'}
72
+ @recursive = {'name' => 'Hilton', 'address' => {'street' => '1200 Ave.', 'postal' => '92011', 'directions' => {'from' => 'here', 'to' => 'there', 'dive_in' => {'name' => 'something'}}}}
73
+ end
74
+
75
+ it "should create a new hash, keeping the old" do
76
+ a = @stringified_keys.symbolize_keys
77
+ a.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
78
+ @stringified_keys.should == {'name' => 'Hilton', 'address' => '1200 Ave.', 'postal' => '92011'}
79
+ end
80
+
81
+ it "should overwrite the existing hash making the keys symbols" do
82
+ a = @stringified_keys.symbolize_keys!
83
+ a.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
84
+ @stringified_keys.should == {:name => 'Hilton', :address => '1200 Ave.', :postal => '92011'}
85
+ end
86
+
87
+ it "should overwrite and recursively make all keys symbols" do
88
+ a = @recursive.recursive_symbolize_keys!
89
+ a.should == {:name => 'Hilton', :address => {:street => '1200 Ave.', :postal => '92011', :directions => {:from => 'here', :to => 'there', :dive_in => {:name => 'something'}}}}
90
+ @recursive.should == {:name => 'Hilton', :address => {:street => '1200 Ave.', :postal => '92011', :directions => {:from => 'here', :to => 'there', :dive_in => {:name => 'something'}}}}
91
+ end
92
+ end
93
+
94
+ end
@@ -0,0 +1,44 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Object do
4
+ before(:all) do
5
+ @string = ''
6
+ @fixnum = 1
7
+ @float = 1.1
8
+ @hash = {}
9
+ @array = []
10
+ end
11
+
12
+ it "should return true when testing if an empty string is blank" do
13
+ @string.blank?.should be_true
14
+ end
15
+
16
+ it "should return false when testing a fixnum for blank" do
17
+ @fixnum.blank?.should be_false
18
+ end
19
+
20
+ it "should return false when testing a float for blank" do
21
+ @float.blank?.should be_false
22
+ end
23
+
24
+ it "should return true when testing if a hash is blank" do
25
+ @hash.blank?.should be_true
26
+ end
27
+
28
+ it "should return true when testing if an array is blank" do
29
+ @array.blank?.should be_true
30
+ end
31
+
32
+ it "should return true when testing if nil is blank" do
33
+ nil.blank?.should be_true
34
+ end
35
+
36
+ it "should return false when testing if true is blank" do
37
+ true.blank?.should be_false
38
+ end
39
+
40
+ it "should return false when testing if false is blank" do
41
+ false.blank?.should be_false
42
+ end
43
+
44
+ end