chargebee 1.0.2 → 1.0.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.
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+ require 'rest_client'
3
+ require 'sample_response'
4
+
5
+ describe "chargebee" do
6
+
7
+ before(:all) do
8
+ @request = RestClient::Request
9
+ end
10
+
11
+ it "serialize should convert the hash to acceptable format" do
12
+ before = {
13
+ :id => "sub_KyVq7DNSNM7CSD",
14
+ :plan_id => "free",
15
+ :addons => [{:id => "monitor", :quantity => 2}, {:id => "ssl"}],
16
+ :card => {
17
+ :first_name => "Rajaraman",
18
+ :last_name => "Santhanam",
19
+ :number => "4111111111111111",
20
+ :expiry_month => "1",
21
+ :expiry_year => "2024",
22
+ :cvv => "007"
23
+ }
24
+ }
25
+ after = {
26
+ "id"=>"sub_KyVq7DNSNM7CSD",
27
+ "plan_id"=>"free",
28
+ "addons[id][0]"=>"monitor",
29
+ "addons[quantity][0]"=>2,
30
+ "addons[id][1]"=>"ssl",
31
+ "card[first_name]"=>"Rajaraman",
32
+ "card[last_name]"=>"Santhanam",
33
+ "card[number]"=>"4111111111111111",
34
+ "card[expiry_month]"=>"1",
35
+ "card[expiry_year]"=>"2024",
36
+ "card[cvv]"=>"007"}
37
+ ChargeBee::Util.serialize(before).should eq(after)
38
+ end
39
+
40
+ it "symbolize_keys should convert keys to symbols" do
41
+ before = {
42
+ 'id' => 'sub_KyVq4P__dev__NTWxbJx1',
43
+ 'plan_id' => 'basic',
44
+ 'addons' => [{ 'id' => 'ssl' }, {'id' => 'sms', 'quantity' => '10'}]
45
+ }
46
+ after = {
47
+ :id => 'sub_KyVq4P__dev__NTWxbJx1',
48
+ :plan_id => 'basic',
49
+ :addons => [{ :id => 'ssl' }, {:id => 'sms', :quantity => '10'}],
50
+ }
51
+ ChargeBee::Util.symbolize_keys(before).should eq(after)
52
+ end
53
+
54
+ it "should properly convert the response json into proper object" do
55
+ @request.expects(:execute).once.returns(mock_response(simple_subscription))
56
+ result = ChargeBee::Subscription.retrieve("simple_subscription")
57
+ s = result.subscription
58
+ s.id.should eq("simple_subscription")
59
+ s.plan_id.should eq('basic')
60
+ c = result.customer
61
+ c.first_name.should eq('simple')
62
+ c.last_name.should eq('subscription')
63
+ end
64
+
65
+ it "should properly convert the nested response json into proper object with sub types" do
66
+ @request.expects(:execute).once.returns(mock_response(nested_subscription))
67
+ result = ChargeBee::Subscription.retrieve("nested_subscription")
68
+ s = result.subscription
69
+ s.id.should eq("nested_subscription")
70
+ a = s.addons
71
+ a.length.should eq(2)
72
+ a[0].id.should eq("monitor")
73
+ a[0].quantity.should eq("10")
74
+ a[1].id.should eq("ssl")
75
+ end
76
+
77
+ it "should properly convert the list response json into proper result object" do
78
+ @request.expects(:execute).once.returns(mock_response(list_subscriptions))
79
+ result = ChargeBee::Subscription.list({:limit => 2})
80
+ result.length.should eq(2)
81
+ result.each do |i|
82
+ i.subscription.id.should eq('sample_subscription')
83
+ end
84
+ end
85
+
86
+ it "should parse event api response and provide the content properly" do
87
+ @request.expects(:execute).once.returns(mock_response(sample_event))
88
+ result = ChargeBee::Event.retrieve("sample_event")
89
+ event = result.event
90
+ s = event.content.subscription
91
+ event.id.should eq('ev_KyVqDX__dev__NTgtUgx1')
92
+ s.id.should eq('sample_subscription')
93
+ end
94
+
95
+ it "should raise APIError when error response is received" do
96
+ response = mock_response(sample_error, 400)
97
+ begin
98
+ @request.expects(:execute).once.raises(RestClient::ExceptionWithResponse.new(response, 400))
99
+ ChargeBee::Subscription.create({:id => "invalid_subscription"})
100
+ rescue ChargeBee::APIError => e
101
+ e.http_code.should eq(400)
102
+ end
103
+ end
104
+
105
+ end
106
+
@@ -0,0 +1,82 @@
1
+
2
+ def api_index_urls()
3
+ {
4
+ :urls => ["http://mannar-test.localcb.com:8080/api/v1/subscriptions",
5
+ "http://mannar-test.localcb.com:8080/api/v1/customers",
6
+ "http://mannar-test.localcb.com:8080/api/v1/cards",
7
+ "http://mannar-test.localcb.com:8080/api/v1/invoices",
8
+ "http://mannar-test.localcb.com:8080/api/v1/transactions",
9
+ "http://mannar-test.localcb.com:8080/api/v1/hosted_pages",
10
+ "http://mannar-test.localcb.com:8080/api/v1/events"],
11
+ :version => "v1"
12
+ }
13
+ end
14
+
15
+ def simple_subscription
16
+ {
17
+ :subscription => {
18
+ :id => 'simple_subscription',
19
+ :plan_id => 'basic'
20
+ },
21
+ :customer => {
22
+ :first_name => 'simple',
23
+ :last_name => 'subscription'
24
+ }
25
+ }
26
+ end
27
+
28
+ def nested_subscription
29
+ {
30
+ :subscription => {
31
+ :id => 'nested_subscription',
32
+ :plan_id => 'basic',
33
+ :addons => [
34
+ {:id => 'monitor', :quantity => '10'},
35
+ {:id => 'ssl'}
36
+ ]
37
+ }
38
+ }
39
+ end
40
+
41
+ def test_subscription
42
+ {
43
+ :subscription => {
44
+ :id => "sample_subscription",
45
+ :plan_id => "basic"
46
+ }
47
+ }
48
+ end
49
+
50
+ def list_subscriptions()
51
+ {:list => [test_subscription, test_subscription]}
52
+ end
53
+
54
+ def sample_event()
55
+ {:event => {
56
+ :id => 'ev_KyVqDX__dev__NTgtUgx1',
57
+ :occurred_at => 1325356232,
58
+ :event_type => "payment_collected",
59
+ :webhook_status => "succeeded",
60
+ :content => {
61
+ :subscription => {
62
+ :id => 'sample_subscription',
63
+ :plan_id => 'basic',
64
+ :plan_quantity=> 1,
65
+ },
66
+ :customer => {
67
+ :first_name => "Sample",
68
+ :last_name => "Subscription",
69
+ },
70
+ }
71
+ }
72
+ }
73
+ end
74
+
75
+ def sample_error
76
+ {
77
+ :http_code => "400",
78
+ :error_code => "param_not_present",
79
+ :message => "plan_id is not present",
80
+ :param => "plan_id"
81
+ }
82
+ end
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__) + '/../lib/chargebee'
2
+
3
+ require 'rspec'
4
+ require 'pp'
5
+ require 'mocha'
6
+ require 'json'
7
+
8
+ RSpec.configure do |config|
9
+ config.mock_with :mocha
10
+ end
11
+
12
+ def mock_response(body, code=200)
13
+ body = body.to_json if !(body.kind_of? String)
14
+ m = mock
15
+ m.instance_variable_set('@resp_values', { :body => body, :code => code })
16
+ def m.body; @resp_values[:body]; end
17
+ def m.code; @resp_values[:code]; end
18
+ m
19
+ end
20
+
21
+ ChargeBee.configure(
22
+ :api_key => "dummy_api_key",
23
+ :site => "dummy_site"
24
+ )
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: chargebee
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.2
5
+ version: 1.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Rajaraman S
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2012-05-16 00:00:00 Z
14
+ date: 2012-05-26 00:00:00 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: json_pure
@@ -57,7 +57,7 @@ dependencies:
57
57
  version: "0"
58
58
  type: :development
59
59
  version_requirements: *id004
60
- description: Subscription Billing - Simple. Secure. Affordable. More details at www.chargebee.com
60
+ description: Subscription Billing - Simple. Secure. Affordable. More details at www.chargebee.com.
61
61
  email:
62
62
  - rr@chargebee.com
63
63
  - thiyagu@chargebee.com
@@ -65,14 +65,20 @@ executables: []
65
65
 
66
66
  extensions: []
67
67
 
68
- extra_rdoc_files: []
69
-
70
- files:
68
+ extra_rdoc_files:
71
69
  - README.rdoc
72
70
  - LICENSE
71
+ files:
72
+ - LICENSE
73
+ - README.rdoc
74
+ - Rakefile
75
+ - chargebee.gemspec
76
+ - lib/chargebee.rb
73
77
  - lib/chargebee/api_error.rb
74
78
  - lib/chargebee/environment.rb
75
79
  - lib/chargebee/list_result.rb
80
+ - lib/chargebee/model.rb
81
+ - lib/chargebee/models/address.rb
76
82
  - lib/chargebee/models/card.rb
77
83
  - lib/chargebee/models/customer.rb
78
84
  - lib/chargebee/models/event.rb
@@ -86,14 +92,16 @@ files:
86
92
  - lib/chargebee/result.rb
87
93
  - lib/chargebee/util.rb
88
94
  - lib/chargebee/version.rb
89
- - lib/chargebee.rb
90
- - chargebee.gemspec
91
- homepage: http://github.com/chargebee/chargebee-ruby
95
+ - lib/ssl/ca-certs.crt
96
+ - spec/chargebee_spec.rb
97
+ - spec/sample_response.rb
98
+ - spec/spec_helper.rb
99
+ homepage: https://apidocs.chargebee.com/api/docs?lang=ruby
92
100
  licenses: []
93
101
 
94
102
  post_install_message:
95
- rdoc_options: []
96
-
103
+ rdoc_options:
104
+ - --charset=UTF-8
97
105
  require_paths:
98
106
  - lib
99
107
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -113,7 +121,9 @@ requirements: []
113
121
  rubyforge_project:
114
122
  rubygems_version: 1.8.15
115
123
  signing_key:
116
- specification_version: 3
117
- summary: Ruby client for Chargebee API
118
- test_files: []
119
-
124
+ specification_version: 2
125
+ summary: Ruby client for Chargebee API.
126
+ test_files:
127
+ - spec/chargebee_spec.rb
128
+ - spec/sample_response.rb
129
+ - spec/spec_helper.rb