legato 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,7 +1,16 @@
1
1
  # Legato: Google Analytics Model/Mapper #
2
+ [![Build Status](https://travis-ci.org/tpitale/legato.png)](https://travis-ci.org/tpitale/legato)
2
3
 
3
4
  ## [Check out the Wiki!](https://github.com/tpitale/legato/wiki) ##
4
5
 
6
+ If you've come here from Garb, welcome! There are a few changes from Garb, so you'll want to check out:
7
+
8
+ * [Model Data](https://github.com/tpitale/legato/wiki/Model-Data)
9
+ * [Query Parameters](https://github.com/tpitale/legato/wiki/Query-Parameters)
10
+ * And the biggest difference: [Filtering](https://github.com/tpitale/legato/wiki/Filtering)
11
+
12
+ If you're not able to upgrade quite yet, Garb has been maintained https://github.com/Sija/garb
13
+
5
14
  ## Google Analytics Management ##
6
15
 
7
16
  1. Get an OAuth2 Access Token from Google, Read about [OAuth2](https://github.com/tpitale/legato/wiki/OAuth2-and-Google)
@@ -15,7 +15,8 @@ module Legato
15
15
  end
16
16
 
17
17
  json = user.access_token.get(base_uri + path).body
18
- MultiJson.decode(json)['items'].map {|item| new(item, user)}
18
+ items = MultiJson.decode(json).fetch('items', [])
19
+ items.map {|item| new(item, user)}
19
20
  end
20
21
  end
21
22
  end
@@ -1,3 +1,3 @@
1
1
  module Legato
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties/~all/profiles","body":"","headers":{"Authorization":["Bearer ya29.AHES6ZSw3j6NfON_gJdtG6bHrU4bh3gPsRd945judH-Umg"]}},"response":{"status":{"code":200,"message":null},"headers":{"expires":["Mon, 12 Dec 2011 01:50:58 GMT"],"date":["Mon, 12 Dec 2011 01:50:58 GMT"],"cache-control":["private, max-age=0, must-revalidate, no-transform"],"etag":["\"0EbX2LGJDld9q3PnatPaRNNGQuE/b64HzQHPH7LaksA_n9YpboKT6LI\""],"content-type":["application/json; charset=UTF-8"],"x-content-type-options":["nosniff"],"x-frame-options":["SAMEORIGIN"],"x-xss-protection":["1; mode=block"],"server":["GSE"],"connection":["close"]},"body":"{\"kind\":\"analytics#profiles\",\"username\":\"tpitale@gmail.com\",\"totalResults\":0,\"startIndex\":1,\"itemsPerPage\":1000}","http_version":null},"recorded_at":"Mon, 12 Dec 2011 01:51:14 GMT"}],"recorded_with":"VCR 2.0.0.beta2"}
@@ -31,4 +31,13 @@ describe "Management" do
31
31
  profiles.map(&:id).include?("4506212").should == true
32
32
  end
33
33
  end
34
+
35
+ context "Management::Finder without results" do
36
+ use_vcr_cassette 'management/no_profiles'
37
+
38
+ it 'has no profiles' do
39
+ profiles = Legato::Management::Profile.all(@user)
40
+ profiles.map(&:id).should == []
41
+ end
42
+ end
34
43
  end
@@ -1,18 +1,29 @@
1
1
  shared_examples_for "a management finder" do
2
+ let(:response) { stub(:body => 'some json') }
3
+ let(:access_token) { access_token = stub(:get => response) }
4
+ let(:user) { stub(:access_token => access_token, :api_key => nil) }
5
+
6
+ after do
7
+ user.should have_received(:access_token)
8
+ access_token.should have_received(:get).with('https://www.googleapis.com/analytics/v3/management'+described_class.default_path)
9
+ response.should have_received(:body)
10
+ MultiJson.should have_received(:decode).with('some json')
11
+ end
12
+
2
13
  it "returns an array of all #{subject_class_name} available to a user" do
3
14
  MultiJson.stubs(:decode).returns({'items' => ['item1', 'item2']})
4
- response = stub(:body => 'some json')
5
- access_token = stub(:get => response)
6
- user = stub(:access_token => access_token, :api_key => nil)
7
15
  described_class.stubs(:new).returns('thing1', 'thing2')
8
16
 
9
17
  described_class.all(user).should == ['thing1', 'thing2']
10
18
 
11
- user.should have_received(:access_token)
12
- access_token.should have_received(:get).with('https://www.googleapis.com/analytics/v3/management'+described_class.default_path)
13
- response.should have_received(:body)
14
- MultiJson.should have_received(:decode).with('some json')
15
19
  described_class.should have_received(:new).with('item1', user)
16
20
  described_class.should have_received(:new).with('item2', user)
17
21
  end
18
- end
22
+
23
+ it "returns an empty array of #{subject_class_name} when there are no results" do
24
+ MultiJson.stubs(:decode).returns({})
25
+ described_class.all(user).should == []
26
+
27
+ described_class.should have_received(:new).never
28
+ end
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legato
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-18 00:00:00.000000000 Z
12
+ date: 2013-06-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -178,6 +178,7 @@ files:
178
178
  - lib/legato/user.rb
179
179
  - lib/legato/version.rb
180
180
  - spec/cassettes/management/accounts.json
181
+ - spec/cassettes/management/no_profiles.json
181
182
  - spec/cassettes/management/profiles.json
182
183
  - spec/cassettes/management/web_properties.json
183
184
  - spec/cassettes/model/basic.json
@@ -222,6 +223,7 @@ specification_version: 3
222
223
  summary: Access the Google Analytics API with Ruby
223
224
  test_files:
224
225
  - spec/cassettes/management/accounts.json
226
+ - spec/cassettes/management/no_profiles.json
225
227
  - spec/cassettes/management/profiles.json
226
228
  - spec/cassettes/management/web_properties.json
227
229
  - spec/cassettes/model/basic.json
@@ -240,4 +242,3 @@ test_files:
240
242
  - spec/spec_helper.rb
241
243
  - spec/support/examples/management_finder.rb
242
244
  - spec/support/macros/oauth.rb
243
- has_rdoc: