statraptor 0.2.2 → 0.2.3

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.
data/CHANGELOG.md CHANGED
@@ -14,3 +14,17 @@
14
14
  * All other errors are raised as a generic StatRaptor::Error
15
15
  * Errors now include a nice parsed error message if one exists in the StatRaptor response
16
16
  * All public methods now return a hash on success instead of JSON
17
+
18
+ ## 0.2.1 (February 29, 2012)
19
+
20
+ * Use RestClient as the default HTTP library
21
+ * Typhoeus bug forced this change: https://github.com/dbalatero/typhoeus/issues/96
22
+ * Set a User-Agent header for all HTTP requests
23
+
24
+ ## 0.2.2 (February 29, 2012)
25
+
26
+ * Small change to depend on an earlier release of RestClient to improve gem compatibility
27
+
28
+ ## 0.2.3 (March 1, 2012)
29
+
30
+ * Add suppoort for `client.find_or_create_user`
data/README.md CHANGED
@@ -16,6 +16,7 @@ client = StatRaptor::Client.new
16
16
 
17
17
  # Manage users
18
18
  client.create_user(:email => "timmy@example.com", :chargify_api_key => "XYZ456")
19
+ client.find_or_create_user(:email => "timmy@example.com", :chargify_api_key => "XYZ456")
19
20
  client.delete_user("akskd8328389281728918")
20
21
  client.get_users
21
22
 
@@ -12,6 +12,18 @@ module StatRaptor
12
12
  def get_users
13
13
  get("/api/v1/users.json")
14
14
  end
15
+
16
+ def find_or_create_user(params = {})
17
+ users = get_users
18
+ user = users.detect{|u| (u['email'] == params[:email]) && (u['chargify_api_key'] == params[:chargify_api_key])}
19
+ !!user ? user : create_user(params)
20
+ end
21
+
22
+ # This StatRaptor API endpoint isn't available yet
23
+ def get_user(user_credentials)
24
+ raise NotImplementedError
25
+ get("/api/v1/users/#{user_credentials}.json")
26
+ end
15
27
  end
16
28
  end
17
29
  end
@@ -1,3 +1,3 @@
1
1
  module StatRaptor
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -16,6 +16,7 @@ RSpec.configure do |config|
16
16
  config.filter_run :focused => true
17
17
  config.run_all_when_everything_filtered = true
18
18
  config.alias_example_to :fit, :focused => true
19
+ config.alias_example_to :xit, :disabled => true
19
20
  config.color_enabled = true
20
21
 
21
22
  # so we can use `:vcr` rathaner than `:vcr => true`;
@@ -36,6 +37,7 @@ VCR.configure do |config|
36
37
  config.cassette_library_dir = 'spec/cassettes'
37
38
  config.configure_rspec_metadata!
38
39
  config.default_cassette_options = {:record => :new_episodes, :match_requests_on => [:uri, :body, :headers]}
40
+ config.allow_http_connections_when_no_cassette = true
39
41
  end
40
42
 
41
43
  def platform_credentials
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe StatRaptor::Client::Users do
4
4
  let(:client) { StatRaptor::Client.new }
5
5
 
6
- context "#create", :vcr do
6
+ describe "#create_user", :vcr do
7
7
  it "returns a user hash on success" do
8
8
  email = random_email
9
9
  user = client.create_user(:email => email, :chargify_api_key => "ABC123")
@@ -13,7 +13,7 @@ describe StatRaptor::Client::Users do
13
13
  end
14
14
  end
15
15
 
16
- context "#delete_user", :vcr do
16
+ describe "#delete_user", :vcr do
17
17
  it "returns the user hash on success" do
18
18
  email = random_email
19
19
  user = client.create_user(:email => email, :chargify_api_key => "XYZ123")
@@ -24,7 +24,7 @@ describe StatRaptor::Client::Users do
24
24
  end
25
25
  end
26
26
 
27
- context "#get_users", :vcr do
27
+ describe "#get_users", :vcr do
28
28
  it "returns an array of hashes" do
29
29
  users = client.get_users
30
30
  users.count.should > 1
@@ -32,4 +32,50 @@ describe StatRaptor::Client::Users do
32
32
  users.first.should be_a(Hash)
33
33
  end
34
34
  end
35
+
36
+ describe "#find_or_create_user" do
37
+ it "returns the user hash if the user already exists" do
38
+ email = random_email
39
+ user = client.create_user(:email => email, :chargify_api_key => "ABCDEF")
40
+
41
+ lambda {
42
+ @user = client.find_or_create_user(:email => email, :chargify_api_key => "ABCDEF")
43
+ }.should_not raise_error(StatRaptor::Error)
44
+
45
+ @user['user_credentials'].should == user['user_credentials']
46
+ @user['chargify_api_key'].should == user['chargify_api_key']
47
+ @user['email'].should == user['email']
48
+ end
49
+
50
+ it "creates a new user if the user does not exist" do
51
+ email = random_email
52
+ user = client.find_or_create_user(:email => email, :chargify_api_key => "123456")
53
+ user["user_credentials"].should_not be_nil
54
+ user['chargify_api_key'].should == "123456"
55
+ user['email'].should == email
56
+ end
57
+ end
58
+
59
+ describe "#get_user", :vcr do
60
+ it "raises a NotImplementedError" do
61
+ lambda {
62
+ client.get_user('leroy-jenkins')
63
+ }.should raise_error(NotImplementedError)
64
+ end
65
+
66
+ it "raises a StatRaptor::Error::NotFound if the user doesn't exist", :pending => true do
67
+ lambda {
68
+ client.get_user("silly-fake-user")
69
+ }.should raise_error(StatRaptor::Error::NotFound)
70
+ end
71
+
72
+ it "returns a user hash if the user is found", :pending => true do
73
+ email = random_email
74
+ existing_user = client.create_user(:email => email, :chargify_api_key => "foobar-123")
75
+ user = client.get_user(existing_user["user_credentials"])
76
+ user['user_credentials'].should == existing_user["user_credentials"]
77
+ user['chargify_api_key'].should == 'foobar-123'
78
+ user['email'].should == email
79
+ end
80
+ end
35
81
  end
data/statraptor.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.name = "statraptor"
9
9
  s.version = StatRaptor::VERSION
10
10
  s.platform = Gem::Platform::RUBY
11
- s.date = "2012-02-29"
11
+ s.date = "2012-03-01"
12
12
  s.authors = ["Shay Frendt"]
13
13
  s.email = "shay.frendt@gmail.com"
14
14
  s.homepage = "http://github.com/chargify/statraptor"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statraptor
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 2
10
- version: 0.2.2
9
+ - 3
10
+ version: 0.2.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Shay Frendt
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-29 00:00:00 -05:00
18
+ date: 2012-03-01 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -122,7 +122,7 @@ dependencies:
122
122
  requirements:
123
123
  - - "="
124
124
  - !ruby/object:Gem::Version
125
- hash: 274304057
125
+ hash: 3403259733
126
126
  segments:
127
127
  - 2
128
128
  - 0