koala 1.8.0 → 1.9.0rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -55,17 +55,12 @@ module KoalaTest
55
55
  RSpec.configure do |config|
56
56
  config.before :each do
57
57
  @token = KoalaTest.oauth_token
58
- Koala::Utils.stub(:deprecate) # never fire deprecation warnings
58
+ allow(Koala::Utils).to receive(:deprecate) # never fire deprecation warnings
59
+ # Clean up Koala config
60
+ Koala.reset_config
59
61
  end
60
62
 
61
63
  config.after :each do
62
- # Clean up Koala config
63
- Koala.configure do |config|
64
- Koala::HTTPService::DEFAULT_SERVERS.each_pair do |k, v|
65
- config.send("#{k}=", v)
66
- end
67
- end
68
-
69
64
  # if we're working with a real user, clean up any objects posted to Facebook
70
65
  # no need to do so for test users, since they get deleted at the end
71
66
  if @temporary_object_id && KoalaTest.real_user?
@@ -3,7 +3,7 @@ shared_examples_for "Koala RestAPI" do
3
3
  describe "when making a rest request" do
4
4
  it "uses the proper path" do
5
5
  method = double('methodName')
6
- @api.should_receive(:api).with(
6
+ expect(@api).to receive(:api).with(
7
7
  "method/#{method}",
8
8
  anything,
9
9
  anything,
@@ -14,7 +14,7 @@ shared_examples_for "Koala RestAPI" do
14
14
  end
15
15
 
16
16
  it "always uses the rest api" do
17
- @api.should_receive(:api).with(
17
+ expect(@api).to receive(:api).with(
18
18
  anything,
19
19
  anything,
20
20
  anything,
@@ -27,7 +27,7 @@ shared_examples_for "Koala RestAPI" do
27
27
  it "sets the read_only option to true if the method is listed in the read-only list" do
28
28
  method = Koala::Facebook::RestAPI::READ_ONLY_METHODS.first
29
29
 
30
- @api.should_receive(:api).with(
30
+ expect(@api).to receive(:api).with(
31
31
  anything,
32
32
  anything,
33
33
  anything,
@@ -40,7 +40,7 @@ shared_examples_for "Koala RestAPI" do
40
40
  it "sets the read_only option to false if the method is not inthe read-only list" do
41
41
  method = "I'm not a read-only method"
42
42
 
43
- @api.should_receive(:api).with(
43
+ expect(@api).to receive(:api).with(
44
44
  anything,
45
45
  anything,
46
46
  anything,
@@ -54,7 +54,7 @@ shared_examples_for "Koala RestAPI" do
54
54
  it "takes an optional hash of arguments" do
55
55
  args = {:arg1 => 'arg1'}
56
56
 
57
- @api.should_receive(:api).with(
57
+ expect(@api).to receive(:api).with(
58
58
  anything,
59
59
  hash_including(args),
60
60
  anything,
@@ -65,7 +65,7 @@ shared_examples_for "Koala RestAPI" do
65
65
  end
66
66
 
67
67
  it "always asks for JSON" do
68
- @api.should_receive(:api).with(
68
+ expect(@api).to receive(:api).with(
69
69
  anything,
70
70
  hash_including('format' => 'json'),
71
71
  anything,
@@ -78,7 +78,7 @@ shared_examples_for "Koala RestAPI" do
78
78
  it "passes any options provided to the API" do
79
79
  options = {:a => 2}
80
80
 
81
- @api.should_receive(:api).with(
81
+ expect(@api).to receive(:api).with(
82
82
  anything,
83
83
  hash_including('format' => 'json'),
84
84
  anything,
@@ -89,7 +89,7 @@ shared_examples_for "Koala RestAPI" do
89
89
  end
90
90
 
91
91
  it "uses get by default" do
92
- @api.should_receive(:api).with(
92
+ expect(@api).to receive(:api).with(
93
93
  anything,
94
94
  anything,
95
95
  "get",
@@ -101,7 +101,7 @@ shared_examples_for "Koala RestAPI" do
101
101
 
102
102
  it "allows you to specify other http methods as the last argument" do
103
103
  method = 'bar'
104
- @api.should_receive(:api).with(
104
+ expect(@api).to receive(:api).with(
105
105
  anything,
106
106
  anything,
107
107
  method,
@@ -112,8 +112,8 @@ shared_examples_for "Koala RestAPI" do
112
112
  end
113
113
 
114
114
  it "throws an APIError if the status code >= 400" do
115
- Koala.stub(:make_request).and_return(Koala::HTTPService::Response.new(500, '{"error_code": "An error occurred!"}', {}))
116
- lambda { @api.rest_call(KoalaTest.user1, {}) }.should raise_exception(Koala::Facebook::APIError)
115
+ allow(Koala).to receive(:make_request).and_return(Koala::HTTPService::Response.new(500, '{"error_code": "An error occurred!"}', {}))
116
+ expect { @api.rest_call(KoalaTest.user1, {}) }.to raise_exception(Koala::Facebook::APIError)
117
117
  end
118
118
  end
119
119
 
@@ -126,29 +126,29 @@ shared_examples_for "Koala RestAPI with an access token" do
126
126
  describe "#set_app_properties" do
127
127
  it "sends Facebook the properties JSON-encoded as :properties" do
128
128
  props = {:a => 2, :c => [1, 2, "d"]}
129
- @api.should_receive(:rest_call).with(anything, hash_including(:properties => MultiJson.dump(props)), anything, anything)
129
+ expect(@api).to receive(:rest_call).with(anything, hash_including(:properties => MultiJson.dump(props)), anything, anything)
130
130
  @api.set_app_properties(props)
131
131
  end
132
132
 
133
133
  it "calls the admin.setAppProperties method" do
134
- @api.should_receive(:rest_call).with("admin.setAppProperties", anything, anything, anything)
134
+ expect(@api).to receive(:rest_call).with("admin.setAppProperties", anything, anything, anything)
135
135
  @api.set_app_properties({})
136
136
  end
137
137
 
138
138
  it "includes any other provided arguments" do
139
139
  args = {:c => 3, :d => "a"}
140
- @api.should_receive(:rest_call).with(anything, hash_including(args), anything, anything)
140
+ expect(@api).to receive(:rest_call).with(anything, hash_including(args), anything, anything)
141
141
  @api.set_app_properties({:a => 2}, args)
142
142
  end
143
143
 
144
144
  it "includes any http_options provided" do
145
145
  opts = {:c => 3, :d => "a"}
146
- @api.should_receive(:rest_call).with(anything, anything, opts, anything)
146
+ expect(@api).to receive(:rest_call).with(anything, anything, opts, anything)
147
147
  @api.set_app_properties({}, {}, opts)
148
148
  end
149
149
 
150
150
  it "makes a POST" do
151
- @api.should_receive(:rest_call).with(anything, anything, anything, "post")
151
+ expect(@api).to receive(:rest_call).with(anything, anything, anything, "post")
152
152
  @api.set_app_properties({})
153
153
  end
154
154
 
@@ -156,14 +156,13 @@ shared_examples_for "Koala RestAPI with an access token" do
156
156
  oauth = Koala::Facebook::OAuth.new(KoalaTest.app_id, KoalaTest.secret)
157
157
  app_token = oauth.get_app_access_token
158
158
  @app_api = Koala::Facebook::API.new(app_token)
159
- @app_api.set_app_properties(KoalaTest.app_properties).should be_true
159
+ expect(@app_api.set_app_properties(KoalaTest.app_properties)).to be_truthy
160
160
  end
161
161
  end
162
162
  end
163
163
 
164
-
165
164
  shared_examples_for "Koala RestAPI without an access token" do
166
165
  it "can't use set_app_properties" do
167
- lambda { @api.set_app_properties(:desktop => 0) }.should raise_error(Koala::Facebook::AuthenticationError)
166
+ expect { @api.set_app_properties(:desktop => 0) }.to raise_error(Koala::Facebook::AuthenticationError)
168
167
  end
169
168
  end
@@ -8,21 +8,21 @@ shared_examples_for "MIME::Types can't return results" do
8
8
  it "should properly get content types for #{extension} using basic analysis" do
9
9
  path = "filename.#{extension}"
10
10
  if @koala_io_params[0].is_a?(File)
11
- @koala_io_params[0].stub(:path).and_return(path)
11
+ allow(@koala_io_params[0]).to receive(:path).and_return(path)
12
12
  else
13
13
  @koala_io_params[0] = path
14
14
  end
15
- Koala::UploadableIO.new(*@koala_io_params).content_type.should == mime_type
15
+ expect(Koala::UploadableIO.new(*@koala_io_params).content_type).to eq(mime_type)
16
16
  end
17
17
 
18
18
  it "should get content types for #{extension} using basic analysis with file names with more than one dot" do
19
19
  path = "file.name.#{extension}"
20
20
  if @koala_io_params[0].is_a?(File)
21
- @koala_io_params[0].stub(:path).and_return(path)
21
+ allow(@koala_io_params[0]).to receive(:path).and_return(path)
22
22
  else
23
23
  @koala_io_params[0] = path
24
24
  end
25
- Koala::UploadableIO.new(*@koala_io_params).content_type.should == mime_type
25
+ expect(Koala::UploadableIO.new(*@koala_io_params).content_type).to eq(mime_type)
26
26
  end
27
27
  end
28
28
 
@@ -30,14 +30,14 @@ shared_examples_for "MIME::Types can't return results" do
30
30
  before :each do
31
31
  path = "badfile.badextension"
32
32
  if @koala_io_params[0].is_a?(File)
33
- @koala_io_params[0].stub(:path).and_return(path)
33
+ allow(@koala_io_params[0]).to receive(:path).and_return(path)
34
34
  else
35
35
  @koala_io_params[0] = path
36
36
  end
37
37
  end
38
38
 
39
39
  it "should throw an exception" do
40
- lambda { Koala::UploadableIO.new(*@koala_io_params) }.should raise_exception(Koala::KoalaError)
40
+ expect { Koala::UploadableIO.new(*@koala_io_params) }.to raise_exception(Koala::KoalaError)
41
41
  end
42
42
  end
43
43
  end
@@ -46,15 +46,15 @@ shared_examples_for "determining a mime type" do
46
46
  describe "if MIME::Types is available" do
47
47
  it "should return an UploadIO with MIME::Types-determined type if the type exists" do
48
48
  type_result = ["type"]
49
- Koala::MIME::Types.stub(:type_for).and_return(type_result)
50
- Koala::UploadableIO.new(*@koala_io_params).content_type.should == type_result.first
49
+ allow(Koala::MIME::Types).to receive(:type_for).and_return(type_result)
50
+ expect(Koala::UploadableIO.new(*@koala_io_params).content_type).to eq(type_result.first)
51
51
  end
52
52
  end
53
53
 
54
54
  describe "if MIME::Types is unavailable" do
55
55
  before :each do
56
56
  # fake that MIME::Types doesn't exist
57
- Koala::MIME::Types.stub(:type_for).and_raise(NameError)
57
+ allow(Koala::MIME::Types).to receive(:type_for).and_raise(NameError)
58
58
  end
59
59
  it_should_behave_like "MIME::Types can't return results"
60
60
  end
@@ -62,7 +62,7 @@ shared_examples_for "determining a mime type" do
62
62
  describe "if MIME::Types can't find the result" do
63
63
  before :each do
64
64
  # fake that MIME::Types doesn't exist
65
- Koala::MIME::Types.stub(:type_for).and_return([])
65
+ allow(Koala::MIME::Types).to receive(:type_for).and_return([])
66
66
  end
67
67
 
68
68
  it_should_behave_like "MIME::Types can't return results"
metadata CHANGED
@@ -1,83 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: koala
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.9.0rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Koppel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-23 00:00:00.000000000 Z
11
+ date: 2014-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: addressable
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '>='
52
+ - - ">="
81
53
  - !ruby/object:Gem::Version
82
54
  version: '0'
83
55
  description: Koala is a lightweight, flexible Ruby SDK for Facebook. It allows read/write
@@ -92,11 +64,11 @@ extra_rdoc_files:
92
64
  - readme.md
93
65
  - changelog.md
94
66
  files:
95
- - .autotest
96
- - .gitignore
97
- - .rspec
98
- - .travis.yml
99
- - .yardopts
67
+ - ".autotest"
68
+ - ".gitignore"
69
+ - ".rspec"
70
+ - ".travis.yml"
71
+ - ".yardopts"
100
72
  - Gemfile
101
73
  - Guardfile
102
74
  - LICENSE
@@ -148,7 +120,6 @@ files:
148
120
  - spec/support/graph_api_shared_examples.rb
149
121
  - spec/support/koala_test.rb
150
122
  - spec/support/mock_http_service.rb
151
- - spec/support/ordered_hash.rb
152
123
  - spec/support/rest_api_shared_examples.rb
153
124
  - spec/support/uploadable_io_shared_examples.rb
154
125
  homepage: http://github.com/arsduo/koala
@@ -156,25 +127,25 @@ licenses: []
156
127
  metadata: {}
157
128
  post_install_message:
158
129
  rdoc_options:
159
- - --line-numbers
160
- - --inline-source
161
- - --title
130
+ - "--line-numbers"
131
+ - "--inline-source"
132
+ - "--title"
162
133
  - Koala
163
134
  require_paths:
164
135
  - lib
165
136
  required_ruby_version: !ruby/object:Gem::Requirement
166
137
  requirements:
167
- - - '>='
138
+ - - ">="
168
139
  - !ruby/object:Gem::Version
169
140
  version: '0'
170
141
  required_rubygems_version: !ruby/object:Gem::Requirement
171
142
  requirements:
172
- - - '>='
143
+ - - ">"
173
144
  - !ruby/object:Gem::Version
174
- version: '0'
145
+ version: 1.3.1
175
146
  requirements: []
176
147
  rubyforge_project:
177
- rubygems_version: 2.0.6
148
+ rubygems_version: 2.2.1
178
149
  signing_key:
179
150
  specification_version: 4
180
151
  summary: A lightweight, flexible library for Facebook with support for the Graph API,
@@ -204,7 +175,6 @@ test_files:
204
175
  - spec/support/graph_api_shared_examples.rb
205
176
  - spec/support/koala_test.rb
206
177
  - spec/support/mock_http_service.rb
207
- - spec/support/ordered_hash.rb
208
178
  - spec/support/rest_api_shared_examples.rb
209
179
  - spec/support/uploadable_io_shared_examples.rb
210
180
  has_rdoc:
@@ -1,201 +0,0 @@
1
- module KoalaTest
2
- # directly taken from Rails 3.1's OrderedHash
3
- # see https://github.com/rails/rails/blob/master/activesupport/lib/active_support/ordered_hash.rb
4
-
5
- # The order of iteration over hashes in Ruby 1.8 is undefined. For example, you do not know the
6
- # order in which +keys+ will return keys, or +each+ yield pairs. <tt>ActiveSupport::OrderedHash</tt>
7
- # implements a hash that preserves insertion order, as in Ruby 1.9:
8
- #
9
- # oh = ActiveSupport::OrderedHash.new
10
- # oh[:a] = 1
11
- # oh[:b] = 2
12
- # oh.keys # => [:a, :b], this order is guaranteed
13
- #
14
- # <tt>ActiveSupport::OrderedHash</tt> is namespaced to prevent conflicts with other implementations.
15
- class OrderedHash < ::Hash #:nodoc:
16
- def to_yaml_type
17
- "!tag:yaml.org,2002:omap"
18
- end
19
-
20
- def encode_with(coder)
21
- coder.represent_seq '!omap', map { |k,v| { k => v } }
22
- end
23
-
24
- def to_yaml(opts = {})
25
- if YAML.const_defined?(:ENGINE) && !YAML::ENGINE.syck?
26
- return super
27
- end
28
-
29
- YAML.quick_emit(self, opts) do |out|
30
- out.seq(taguri) do |seq|
31
- each do |k, v|
32
- seq.add(k => v)
33
- end
34
- end
35
- end
36
- end
37
-
38
- def nested_under_indifferent_access
39
- self
40
- end
41
-
42
- # Hash is ordered in Ruby 1.9!
43
- if RUBY_VERSION < '1.9'
44
-
45
- # In MRI the Hash class is core and written in C. In particular, methods are
46
- # programmed with explicit C function calls and polymorphism is not honored.
47
- #
48
- # For example, []= is crucial in this implementation to maintain the @keys
49
- # array but hash.c invokes rb_hash_aset() originally. This prevents method
50
- # reuse through inheritance and forces us to reimplement stuff.
51
- #
52
- # For instance, we cannot use the inherited #merge! because albeit the algorithm
53
- # itself would work, our []= is not being called at all by the C code.
54
-
55
- def initialize(*args, &block)
56
- super
57
- @keys = []
58
- end
59
-
60
- def self.[](*args)
61
- ordered_hash = new
62
-
63
- if (args.length == 1 && args.first.is_a?(Array))
64
- args.first.each do |key_value_pair|
65
- next unless (key_value_pair.is_a?(Array))
66
- ordered_hash[key_value_pair[0]] = key_value_pair[1]
67
- end
68
-
69
- return ordered_hash
70
- end
71
-
72
- unless (args.size % 2 == 0)
73
- raise ArgumentError.new("odd number of arguments for Hash")
74
- end
75
-
76
- args.each_with_index do |val, ind|
77
- next if (ind % 2 != 0)
78
- ordered_hash[val] = args[ind + 1]
79
- end
80
-
81
- ordered_hash
82
- end
83
-
84
- def initialize_copy(other)
85
- super
86
- # make a deep copy of keys
87
- @keys = other.keys
88
- end
89
-
90
- def []=(key, value)
91
- @keys << key unless has_key?(key)
92
- super
93
- end
94
-
95
- def delete(key)
96
- if has_key? key
97
- index = @keys.index(key)
98
- @keys.delete_at index
99
- end
100
- super
101
- end
102
-
103
- def delete_if
104
- super
105
- sync_keys!
106
- self
107
- end
108
-
109
- def reject!
110
- super
111
- sync_keys!
112
- self
113
- end
114
-
115
- def reject(&block)
116
- dup.reject!(&block)
117
- end
118
-
119
- def keys
120
- @keys.dup
121
- end
122
-
123
- def values
124
- @keys.collect { |key| self[key] }
125
- end
126
-
127
- def to_hash
128
- self
129
- end
130
-
131
- def to_a
132
- @keys.map { |key| [ key, self[key] ] }
133
- end
134
-
135
- def each_key
136
- return to_enum(:each_key) unless block_given?
137
- @keys.each { |key| yield key }
138
- self
139
- end
140
-
141
- def each_value
142
- return to_enum(:each_value) unless block_given?
143
- @keys.each { |key| yield self[key]}
144
- self
145
- end
146
-
147
- def each
148
- return to_enum(:each) unless block_given?
149
- @keys.each {|key| yield [key, self[key]]}
150
- self
151
- end
152
-
153
- alias_method :each_pair, :each
154
-
155
- alias_method :select, :find_all
156
-
157
- def clear
158
- super
159
- @keys.clear
160
- self
161
- end
162
-
163
- def shift
164
- k = @keys.first
165
- v = delete(k)
166
- [k, v]
167
- end
168
-
169
- def merge!(other_hash)
170
- if block_given?
171
- other_hash.each { |k, v| self[k] = key?(k) ? yield(k, self[k], v) : v }
172
- else
173
- other_hash.each { |k, v| self[k] = v }
174
- end
175
- self
176
- end
177
-
178
- alias_method :update, :merge!
179
-
180
- def merge(other_hash, &block)
181
- dup.merge!(other_hash, &block)
182
- end
183
-
184
- # When replacing with another hash, the initial order of our keys must come from the other hash -ordered or not.
185
- def replace(other)
186
- super
187
- @keys = other.keys
188
- self
189
- end
190
-
191
- def invert
192
- OrderedHash[self.to_a.map!{|key_value_pair| key_value_pair.reverse}]
193
- end
194
-
195
- private
196
- def sync_keys!
197
- @keys.delete_if {|k| !has_key?(k)}
198
- end
199
- end
200
- end
201
- end