quaderno 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +8 -8
  2. data/Gemfile +3 -2
  3. data/Gemfile.lock +27 -22
  4. data/README.md +7 -2
  5. data/Rakefile +5 -6
  6. data/VERSION +1 -1
  7. data/build_install.sh +1 -1
  8. data/changelog.md +5 -0
  9. data/lib/quaderno-ruby/base.rb +24 -8
  10. data/lib/quaderno-ruby/behavior/crud.rb +5 -5
  11. data/lib/quaderno-ruby/behavior/deliver.rb +1 -1
  12. data/lib/quaderno-ruby/behavior/payment.rb +2 -2
  13. data/quaderno.gemspec +8 -7
  14. data/test/fixtures/.DS_Store +0 -0
  15. data/test/fixtures/quaderno_cassettes/.DS_Store +0 -0
  16. data/test/fixtures/quaderno_cassettes/all_contacts.yml +44 -26
  17. data/test/fixtures/quaderno_cassettes/all_estimates.yml +29 -37
  18. data/test/fixtures/quaderno_cassettes/all_expenses.yml +30 -40
  19. data/test/fixtures/quaderno_cassettes/all_invoices.yml +108 -36
  20. data/test/fixtures/quaderno_cassettes/all_items.yml +27 -23
  21. data/test/fixtures/quaderno_cassettes/all_webhooks.yml +124 -104
  22. data/test/fixtures/quaderno_cassettes/deleted_contact.yml +135 -92
  23. data/test/fixtures/quaderno_cassettes/deleted_estimate.yml +125 -105
  24. data/test/fixtures/quaderno_cassettes/deleted_expense.yml +126 -108
  25. data/test/fixtures/quaderno_cassettes/deleted_invoice.yml +203 -104
  26. data/test/fixtures/quaderno_cassettes/deleted_item.yml +74 -62
  27. data/test/fixtures/quaderno_cassettes/deleted_webhook.yml +149 -125
  28. data/test/fixtures/quaderno_cassettes/delivered_estimate.yml +75 -75
  29. data/test/fixtures/quaderno_cassettes/delivered_invoice.yml +159 -77
  30. data/test/fixtures/quaderno_cassettes/found_contact.yml +71 -49
  31. data/test/fixtures/quaderno_cassettes/found_estimate.yml +59 -64
  32. data/test/fixtures/quaderno_cassettes/found_expense.yml +61 -71
  33. data/test/fixtures/quaderno_cassettes/found_invoice.yml +145 -66
  34. data/test/fixtures/quaderno_cassettes/found_item.yml +54 -46
  35. data/test/fixtures/quaderno_cassettes/found_webhook.yml +75 -63
  36. data/test/fixtures/quaderno_cassettes/new_contact.yml +28 -24
  37. data/test/fixtures/quaderno_cassettes/new_estimate.yml +97 -69
  38. data/test/fixtures/quaderno_cassettes/new_expense.yml +126 -108
  39. data/test/fixtures/quaderno_cassettes/new_invoice.yml +96 -69
  40. data/test/fixtures/quaderno_cassettes/new_item.yml +28 -24
  41. data/test/fixtures/quaderno_cassettes/new_webhook.yml +50 -42
  42. data/test/fixtures/quaderno_cassettes/paid_expense.yml +57 -63
  43. data/test/fixtures/quaderno_cassettes/paid_invoice.yml +135 -59
  44. data/test/fixtures/quaderno_cassettes/rate_limit.yml +24 -20
  45. data/test/fixtures/quaderno_cassettes/unpay_an_expense.yml +79 -81
  46. data/test/fixtures/quaderno_cassettes/unpay_an_invoice.yml +157 -77
  47. data/test/fixtures/quaderno_cassettes/updated_contact.yml +71 -49
  48. data/test/fixtures/quaderno_cassettes/updated_estimate.yml +126 -94
  49. data/test/fixtures/quaderno_cassettes/updated_expense.yml +125 -93
  50. data/test/fixtures/quaderno_cassettes/updated_invoice.yml +125 -94
  51. data/test/fixtures/quaderno_cassettes/updated_item.yml +54 -46
  52. data/test/fixtures/quaderno_cassettes/updated_webhook.yml +103 -87
  53. data/test/unit/test_quaderno_contacts.rb +5 -9
  54. data/test/unit/test_quaderno_estimates.rb +3 -3
  55. data/test/unit/test_quaderno_expenses.rb +3 -3
  56. data/test/unit/test_quaderno_invoices.rb +3 -3
  57. data/test/unit/test_quaderno_items.rb +6 -6
  58. data/test/unit/test_quaderno_webhooks.rb +14 -14
  59. metadata +8 -7
  60. data/test/test_quaderno-ruby.rb +0 -4
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTEyNDE3Njc3YzJlODc5ZmY5N2ZlNzhmZTgwZjJjNTBiY2NjNzQ4Zg==
4
+ MzA3ZDIzYmY5YjRhOTJmMGE3M2QzNWM2ZmM4ODgxN2M3ODA0NTk5Zg==
5
5
  data.tar.gz: !binary |-
6
- OTVkOGQ3NWI3NWE0YjI1Mzk2ZDNhMDlhNzMyM2ZkYzQ4NTQwMjAwYw==
6
+ Nzg1ZjkyM2M3ODUxM2IyZmVhMDBiZDU3ZTExZDVhYzA4MDc3Y2E2YQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YWI2OGRiZTM2YjkyNzhhYTkyZjBiN2ZlMDE2MGEzZjQ1YmM0MGVhMjRlNzdh
10
- ZTNjZGI2NmQ5Y2Y0ZTRkZTdhZmQxZTUxNzcwNmQyMzI3YjE0ZjIwMDQ4N2Ew
11
- ZWQ0NDQ1YTQ3N2NmOWIxZTI1NDU0MDM4MzI0ZmI2MmIxZTU4ODI=
9
+ Y2NiZWY3YjE2NThhYTViYjQzOTFjZTcwMTBhYzVmZjEwZTRhZTE0NWU5OTI4
10
+ ZWVlZTc1Mjk4YWI2NGMyYmFhZTIwNDcwMGQyMzFmMGRiNDMzMmQxYTg4NTM2
11
+ NDJlM2M0ZTg1ODFhZDhmZWI3M2IwZjg2Y2M5MmQyYWQzMzZmMDU=
12
12
  data.tar.gz: !binary |-
13
- MjU0N2I0NmQ0ZGFlYjM2ZDc4Y2RiMWMwOTUxMTg5NGNkMDhjY2NhNDA4MWM1
14
- MDNmZmQ3ODI3MTAzZDU5NTJhZDU3YThjZTBiNTcxNThmNmVlNmFiZTZmOTUy
15
- OWE0ZDgyMjc1NTE0YTE5MTQ2MTJhYjkxNzkxN2RlMjExNjQyZjQ=
13
+ MzA0Nzc5ODM0NDIzNTllYjU5YmIyNDlhNzY1YTk2OGZiNDI3MzE3NDhhODIw
14
+ NjYxZTkxYzA0NTZhMWYxZjFhOTUwMmYyYzZiNDUyN2U3MTAwNzBmZDc3NzY4
15
+ YzllYTU4NjgxMTJhNzdlMDMyOWFjNGUyNzAxNTQ5MTQ2NDc2MDg=
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ source "http://rubygems.org"
5
5
 
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
- gem 'httparty'
8
+ gem 'httparty', '~> 0.13.1'
9
9
  gem "rdoc", "~> 3.12"
10
10
 
11
11
  group :development do
@@ -15,7 +15,8 @@ end
15
15
  group :test do
16
16
  gem "bundler", ">= 1.0.0"
17
17
  gem 'fakeweb'
18
- gem "rcov", "~> 0.9.11"
18
+ gem 'minitest', '~> 4.7.5 '
19
+ gem "simplecov", ">= 0"
19
20
  gem "shoulda", ">= 0"
20
21
  gem 'vcr', :require => 'vcr'
21
22
  end
data/Gemfile.lock CHANGED
@@ -1,20 +1,21 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activesupport (4.1.1)
4
+ activesupport (4.0.5)
5
5
  i18n (~> 0.6, >= 0.6.9)
6
- json (~> 1.7, >= 1.7.7)
7
- minitest (~> 5.1)
6
+ minitest (~> 4.2)
7
+ multi_json (~> 1.3)
8
8
  thread_safe (~> 0.1)
9
- tzinfo (~> 1.1)
9
+ tzinfo (~> 0.3.37)
10
10
  addressable (2.3.6)
11
11
  builder (3.2.2)
12
12
  descendants_tracker (0.0.4)
13
13
  thread_safe (~> 0.3, >= 0.3.1)
14
+ docile (1.1.4)
14
15
  fakeweb (1.3.0)
15
16
  faraday (0.9.0)
16
17
  multipart-post (>= 1.2, < 3)
17
- git (1.2.6)
18
+ git (1.2.7)
18
19
  github_api (0.11.3)
19
20
  addressable (~> 2.3)
20
21
  descendants_tracker (~> 0.0.1)
@@ -23,7 +24,7 @@ GEM
23
24
  multi_json (>= 1.7.5, < 2.0)
24
25
  nokogiri (~> 1.6.0)
25
26
  oauth2
26
- hashie (2.1.1)
27
+ hashie (3.0.0)
27
28
  highline (1.6.21)
28
29
  httparty (0.13.1)
29
30
  json (~> 1.8)
@@ -39,23 +40,22 @@ GEM
39
40
  rake
40
41
  rdoc
41
42
  json (1.8.1)
42
- jwt (0.1.12)
43
- mini_portile (0.5.3)
44
- minitest (5.3.3)
45
- multi_json (1.10.0)
43
+ jwt (1.0.0)
44
+ mini_portile (0.6.0)
45
+ minitest (4.7.5)
46
+ multi_json (1.10.1)
46
47
  multi_xml (0.5.5)
47
48
  multipart-post (2.0.0)
48
- nokogiri (1.6.1)
49
- mini_portile (~> 0.5.0)
50
- oauth2 (0.9.3)
49
+ nokogiri (1.6.2.1)
50
+ mini_portile (= 0.6.0)
51
+ oauth2 (0.9.4)
51
52
  faraday (>= 0.8, < 0.10)
52
- jwt (~> 0.1.8)
53
+ jwt (~> 1.0)
53
54
  multi_json (~> 1.3)
54
55
  multi_xml (~> 0.5)
55
56
  rack (~> 1.2)
56
57
  rack (1.5.2)
57
- rake (10.3.1)
58
- rcov (0.9.11)
58
+ rake (10.3.2)
59
59
  rdoc (3.12.2)
60
60
  json (~> 1.4)
61
61
  shoulda (3.5.0)
@@ -64,10 +64,14 @@ GEM
64
64
  shoulda-context (1.2.1)
65
65
  shoulda-matchers (2.6.1)
66
66
  activesupport (>= 3.0.0)
67
- thread_safe (0.3.3)
68
- tzinfo (1.1.0)
69
- thread_safe (~> 0.1)
70
- vcr (2.9.0)
67
+ simplecov (0.8.2)
68
+ docile (~> 1.1.0)
69
+ multi_json
70
+ simplecov-html (~> 0.8.0)
71
+ simplecov-html (0.8.0)
72
+ thread_safe (0.3.4)
73
+ tzinfo (0.3.39)
74
+ vcr (2.9.2)
71
75
 
72
76
  PLATFORMS
73
77
  ruby
@@ -75,9 +79,10 @@ PLATFORMS
75
79
  DEPENDENCIES
76
80
  bundler (>= 1.0.0)
77
81
  fakeweb
78
- httparty
82
+ httparty (~> 0.13.1)
79
83
  jeweler (~> 2.0.1)
80
- rcov (~> 0.9.11)
84
+ minitest (~> 4.7.5)
81
85
  rdoc (~> 3.12)
82
86
  shoulda
87
+ simplecov
83
88
  vcr
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Quaderno-ruby is a ruby wrapper for [quaderno api] (https://github.com/recrea/quaderno-api).
4
4
  As the API, it's mostly CRUD.
5
5
 
6
- Current version is 1.2.2. See the changelog [here](https://github.com/recrea/quaderno-ruby/blob/master/changelog.md)
6
+ Current version is 1.3.1. See the changelog [here](https://github.com/recrea/quaderno-ruby/blob/master/changelog.md)
7
7
 
8
8
  ## Installation & Configuration
9
9
 
@@ -19,18 +19,23 @@ To configure just add this to your initializers
19
19
  Quaderno::Base.configure do |config|
20
20
  config.auth_token = 'my_authenticate_token'
21
21
  config.subdomain = 'my_account_subdomain'
22
+ config.environment = :production
22
23
  end
23
24
  ```
24
25
 
26
+ The `environment` attribute is optional and set to `:production` by default. Optionally, you can set it to `:sandbox` in order to test your application before deploying it to production.
27
+
25
28
  ## Get authorization data
26
29
 
27
30
  You can get your account subdomain by grabbing it from your account url or by calling the authorization method with your personal api token.
28
31
 
29
32
  ```ruby
30
- Quaderno::Base.authorization 'my_authenticate_token'
33
+ Quaderno::Base.authorization 'my_authenticate_token', environment
31
34
  # => {"identity"=>{"id"=>737000, "name"=>"Walter White", "email"=>"cooking@br.bd", "href"=>"https://quadernoapp.com/my_account_subdomain/api/v1/"}}
32
35
  ```
33
36
 
37
+ `envirnment` is an optional argument. By passing `:sandbox`, you will retrieve your credentials for the sandbox environment and not for production.
38
+
34
39
  This will return a hash with the information about your api url, which includes the account subdomain.
35
40
 
36
41
  ## Ping the service
data/Rakefile CHANGED
@@ -32,14 +32,13 @@ Rake::TestTask.new(:test) do |test|
32
32
  test.verbose = true
33
33
  end
34
34
 
35
- require 'rcov/rcovtask'
36
- Rcov::RcovTask.new do |test|
37
- test.libs << 'test'
38
- test.pattern = 'test/**/test_*.rb'
39
- test.verbose = true
40
- test.rcov_opts << '--exclude "gems/*"'
35
+ desc "Code coverage detail"
36
+ task :simplecov do
37
+ ENV['COVERAGE'] = "true"
38
+ Rake::Task['test'].execute
41
39
  end
42
40
 
41
+
43
42
  task :default => :test
44
43
 
45
44
  require 'rdoc/task'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.0
1
+ 1.3.1
data/build_install.sh CHANGED
@@ -1,2 +1,2 @@
1
1
  gem build quaderno.gemspec
2
- gem install quaderno-1.3.0.gem
2
+ gem install quaderno-1.3.1.gem
data/changelog.md CHANGED
@@ -1,4 +1,9 @@
1
1
  #Changelog
2
+ ##1.3.1
3
+
4
+ * Added sandbox environment
5
+ * Added `to_hash` instance method
6
+
2
7
  ##1.3.0
3
8
 
4
9
  * Removed debug mode
@@ -10,8 +10,12 @@ module Quaderno
10
10
  @@auth_token = nil
11
11
  @@subdomain = nil
12
12
  @@rate_limit_info = nil
13
-
14
- self.base_uri 'https://quadernoapp.com/'
13
+ @@environment = :production
14
+ @@base_url = 'https://quadernoapp.com'
15
+
16
+ def to_hash
17
+ self.marshal_dump
18
+ end
15
19
 
16
20
  def self.api_model(klass)
17
21
  instance_eval <<-END
@@ -29,8 +33,14 @@ module Quaderno
29
33
  #Default way to configure the authenticata data
30
34
  def self.configure
31
35
  yield self
36
+
37
+ @@base_url = @@environment == :sandbox ? 'http://sandbox-quadernoapp.com' : 'https://quadernoapp.com'
32
38
  end
33
39
 
40
+ def self.environment=(mode)
41
+ @@environment = mode
42
+ end
43
+
34
44
  def self.auth_token=(auth_token)
35
45
  @@auth_token = auth_token
36
46
  end
@@ -39,11 +49,13 @@ module Quaderno
39
49
  @@subdomain = subdomain
40
50
  end
41
51
 
42
- def self.authorization(auth_token)
52
+ def self.authorization(auth_token, mode = nil)
43
53
  begin
44
- party_response = get("/subdomain/api/v1/authorization.json", basic_auth: { username: auth_token })
54
+ mode ||= @@environment
55
+ base_url = mode == :sandbox ? 'http://sandbox-quadernoapp.com' : 'https://quadernoapp.com'
56
+ party_response = get("#{base_url}/subdomain/api/v1/authorization.json", basic_auth: { username: auth_token })
45
57
  return JSON::parse party_response.body
46
- rescue Errno::ECONNREFUSED
58
+ rescue Exception
47
59
  return false
48
60
  end
49
61
  end
@@ -51,7 +63,7 @@ module Quaderno
51
63
  #Check the connection
52
64
  def self.ping
53
65
  begin
54
- party_response = get("/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
66
+ party_response = get("#{base_url}/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
55
67
  rescue Errno::ECONNREFUSED
56
68
  return false
57
69
  end
@@ -60,12 +72,16 @@ module Quaderno
60
72
 
61
73
  #Returns the rate limit information: limit and remaining requests
62
74
  def self.rate_limit_info
63
- party_response = get("/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
75
+ party_response = get("#{@@base_url}/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
64
76
  @@rate_limit_info = { limit: party_response.headers["x-ratelimit-limit"].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i }
65
77
  end
66
78
 
67
79
 
68
- private
80
+ private
81
+ def self.base_url
82
+ @@base_url
83
+ end
84
+
69
85
  def self.auth_token
70
86
  @@auth_token
71
87
  end
@@ -28,7 +28,7 @@ module Quaderno
28
28
  end
29
29
 
30
30
  def all(filter = nil)
31
- party_response = get("/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }.json", body: filter, basic_auth: { username: api_model.auth_token })
31
+ party_response = get("#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }.json", body: filter, basic_auth: { username: api_model.auth_token })
32
32
  check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true })
33
33
  array = JSON::parse party_response.body
34
34
  collection = []
@@ -42,7 +42,7 @@ module Quaderno
42
42
  end
43
43
 
44
44
  def find(id)
45
- party_response = get "/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
45
+ party_response = get "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
46
46
  check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true })
47
47
  hash = JSON::parse party_response.body
48
48
  if (api_model == Quaderno::Invoice) || (api_model == Quaderno::Estimate) || (api_model == Quaderno::Expense)
@@ -52,7 +52,7 @@ module Quaderno
52
52
  end
53
53
 
54
54
  def create(params)
55
- party_response = post "/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }.json", body: params, basic_auth: { username: api_model.auth_token }
55
+ party_response = post "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }.json", body: params, basic_auth: { username: api_model.auth_token }
56
56
  check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, required_fields: true })
57
57
  hash = JSON::parse party_response.body
58
58
  if (api_model == Quaderno::Invoice) || (api_model == Quaderno::Estimate) || (api_model == Quaderno::Expense)
@@ -62,7 +62,7 @@ module Quaderno
62
62
  end
63
63
 
64
64
  def update(id, params)
65
- party_response = put "/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", body: params, basic_auth: { username: api_model.auth_token }
65
+ party_response = put "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", body: params, basic_auth: { username: api_model.auth_token }
66
66
  check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true })
67
67
  hash = JSON::parse party_response.body
68
68
  if (api_model == Quaderno::Invoice) || (api_model == Quaderno::Estimate) || (api_model == Quaderno::Expense)
@@ -72,7 +72,7 @@ module Quaderno
72
72
  end
73
73
 
74
74
  def delete(id)
75
- party_response = HTTParty.delete "#{ api_model.base_uri }/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
75
+ party_response = HTTParty.delete "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
76
76
  check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true, has_documents: true })
77
77
  true
78
78
  end
@@ -8,7 +8,7 @@ module Quaderno
8
8
 
9
9
  module InstanceMethods
10
10
  def deliver
11
- party_response = api_model.get("/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/deliver.json", basic_auth: { username: api_model.auth_token })
11
+ party_response = api_model.get("#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/deliver.json", basic_auth: { username: api_model.auth_token })
12
12
  api_model.check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true, required_fields: true })
13
13
  { limit: party_response.headers["x-ratelimit-limit"].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i }
14
14
  end
@@ -11,7 +11,7 @@ module Quaderno
11
11
  end
12
12
 
13
13
  def add_payment(params)
14
- party_response = api_model.post "/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/payments.json", body: params, basic_auth: { username: api_model.auth_token }
14
+ party_response = api_model.post "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/payments.json", body: params, basic_auth: { username: api_model.auth_token }
15
15
  api_model.check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, required_fields: true })
16
16
  parsed = JSON::parse party_response.body
17
17
  instance = to_instance(Quaderno::Payment, parsed)
@@ -20,7 +20,7 @@ module Quaderno
20
20
  end
21
21
 
22
22
  def remove_payment(payment_id)
23
- party_response = HTTParty.delete "#{ api_model.base_uri }/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/payments/#{ payment_id }.json", basic_auth: { username: api_model.auth_token }
23
+ party_response = HTTParty.delete "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/payments/#{ payment_id }.json", basic_auth: { username: api_model.auth_token }
24
24
  to_delete = nil
25
25
  payments.each do |payment|
26
26
  if payment.id == payment_id
data/quaderno.gemspec CHANGED
@@ -2,15 +2,15 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: quaderno 1.3.0 ruby lib
5
+ # stub: quaderno 1.3.1 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "quaderno"
9
- s.version = "1.3.0"
9
+ s.version = "1.3.1"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.authors = ["Recrea"]
13
- s.date = "2014-05-07"
13
+ s.date = "2014-06-13"
14
14
  s.description = "longer description of your gem"
15
15
  s.email = "carlos@recrea.es"
16
16
  s.extra_rdoc_files = [
@@ -42,6 +42,8 @@ Gem::Specification.new do |s|
42
42
  "lib/quaderno-ruby/payment.rb",
43
43
  "lib/quaderno-ruby/webhook.rb",
44
44
  "quaderno.gemspec",
45
+ "test/fixtures/.DS_Store",
46
+ "test/fixtures/quaderno_cassettes/.DS_Store",
45
47
  "test/fixtures/quaderno_cassettes/all_contacts.yml",
46
48
  "test/fixtures/quaderno_cassettes/all_estimates.yml",
47
49
  "test/fixtures/quaderno_cassettes/all_expenses.yml",
@@ -80,7 +82,6 @@ Gem::Specification.new do |s|
80
82
  "test/fixtures/quaderno_cassettes/updated_item.yml",
81
83
  "test/fixtures/quaderno_cassettes/updated_webhook.yml",
82
84
  "test/helper.rb",
83
- "test/test_quaderno-ruby.rb",
84
85
  "test/unit/test_quaderno_contacts.rb",
85
86
  "test/unit/test_quaderno_estimates.rb",
86
87
  "test/unit/test_quaderno_expenses.rb",
@@ -98,16 +99,16 @@ Gem::Specification.new do |s|
98
99
  s.specification_version = 4
99
100
 
100
101
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
101
- s.add_runtime_dependency(%q<httparty>, [">= 0"])
102
+ s.add_runtime_dependency(%q<httparty>, ["~> 0.13.1"])
102
103
  s.add_runtime_dependency(%q<rdoc>, ["~> 3.12"])
103
104
  s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
104
105
  else
105
- s.add_dependency(%q<httparty>, [">= 0"])
106
+ s.add_dependency(%q<httparty>, ["~> 0.13.1"])
106
107
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
107
108
  s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
108
109
  end
109
110
  else
110
- s.add_dependency(%q<httparty>, [">= 0"])
111
+ s.add_dependency(%q<httparty>, ["~> 0.13.1"])
111
112
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
112
113
  s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
113
114
  end
Binary file
@@ -2,52 +2,70 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://1spyno1mbqbp3SFpg9uT@localhost:3000/recrea/api/v1/contacts.json
5
+ uri: http://kAppsMggGcw8psUwdZBV@sandbox-quadernoapp.com/ninive-688/api/v1/contacts.json
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
9
9
  headers:
10
10
  authorization:
11
- - Basic MXNweW5vMW1icWJwM1NGcGc5dVQ6
11
+ - Basic a0FwcHNNZ2dHY3c4cHNVd2RaQlY6
12
12
  response:
13
13
  status:
14
14
  code: 200
15
- message: ! 'OK '
15
+ message: OK
16
16
  headers:
17
+ server:
18
+ - nginx/1.4.5
19
+ date:
20
+ - Fri, 13 Jun 2014 12:33:05 GMT
21
+ content-type:
22
+ - application/json; charset=utf-8
23
+ transfer-encoding:
24
+ - chunked
25
+ connection:
26
+ - close
27
+ status:
28
+ - 200 OK
17
29
  x-ratelimit-limit:
18
30
  - '2000'
19
31
  x-ratelimit-remaining:
20
- - '1982'
32
+ - '1506'
21
33
  x-pages-currentpage:
22
34
  - '1'
23
35
  x-pages-totalpages:
24
- - '1'
25
- content-type:
26
- - application/json; charset=utf-8
36
+ - '6'
27
37
  x-ua-compatible:
28
- - IE=Edge
38
+ - IE=Edge,chrome=1
29
39
  etag:
30
- - ! '"71b79c1b45cfb58a71172c277dd004b5"'
40
+ - ! '"78987cdc82808337e2e0baa06f1a206c"'
31
41
  cache-control:
32
- - max-age=0, private, must-revalidate
42
+ - must-revalidate, private, max-age=0
33
43
  x-request-id:
34
- - 56b41dfe5bb0b1150503bbdacfca3706
44
+ - 39dab9a17986be2f75473a773948360f
35
45
  x-runtime:
36
- - '0.097376'
37
- server:
38
- - WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20)
39
- date:
40
- - Tue, 04 Feb 2014 14:39:43 GMT
41
- content-length:
42
- - '1879'
43
- connection:
44
- - close
46
+ - '0.142266'
47
+ x-rack-cache:
48
+ - miss
45
49
  body:
46
50
  encoding: US-ASCII
47
- string: ! '[{"id":2,"kind":"company","full_name":"Another Test Contact","contact_name":"","street_line_1":"Kamiya
48
- Kashin Ryu no Dojo","street_line_2":"","postal_code":"876-0854","city":"Tokyo","region":"Tokyo","country":"JP","phone_1":"","phone_2":"","fax":"","email":"","web":"","discount":null,"tax_id":"","language":"EN","notes":"","url":"http://localhost:3000/recrea/api/v1/contacts/2"},{"id":1,"kind":"company","full_name":"API
49
- Test Contact","contact_name":"","street_line_1":"Evergreen Terrace","street_line_2":"","postal_code":"K0A
50
- 1B0","city":"Springfield","region":"Canada","country":"ES","phone_1":"","phone_2":"","fax":"","email":"dummy@email.test","web":"","discount":null,"tax_id":"","bank_account":"","language":"ES","notes":"","url":"http://localhost:3000/recrea/api/v1/contacts/1"},{"id":4,"kind":"company","full_name":"Test_OCP","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"US","phone_1":null,"phone_2":null,"fax":null,"email":"dont@stop.believing","web":null,"discount":null,"tax_id":null,"language":"EN","notes":null,"url":"http://localhost:3000/recrea/api/v1/contacts/4"},{"id":6,"kind":"company","full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"US","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"language":"EN","notes":null,"url":"http://localhost:3000/recrea/api/v1/contacts/6"},{"id":3,"kind":"company","full_name":"TSM","contact_name":"Reginald","street_line_1":"","street_line_2":"","postal_code":"","city":"","region":"","country":"ES","phone_1":"","phone_2":"","fax":"","email":"reggie@tsm.com","web":"","discount":null,"tax_id":"","bank_account":"","language":"ES","notes":"","url":"http://localhost:3000/recrea/api/v1/contacts/3"}]'
51
+ string: ! '[{"id":760,"kind":"company","full_name":"\u0003 esatipa","contact_name":null,"street_line_1":"Torres
52
+ Quevedo","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"673832948","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/760"},{"id":113,"kind":"company","full_name":"100-499","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"totoro.estepario@gmail.com","web":null,"discount":null,"tax_id":"","bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/113"},{"id":694,"kind":"company","full_name":"Ale","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"+34650960183","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/694"},{"id":498,"kind":"company","full_name":"Alejandro","contact_name":"","street_line_1":"","street_line_2":"","postal_code":"","city":"","region":"","country":"ES","phone_1":"","phone_2":"","fax":"","email":"alexmanalopez@gmail.com","web":"","discount":null,"tax_id":"","bank_account":"","language":"ES","notes":"","url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/498"},{"id":744,"kind":"company","full_name":"Alejandro
53
+ Lopez Santos","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"alexmanalopez@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/744"},{"id":739,"kind":"company","full_name":"ANA","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"ana@vali2.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/739"},{"id":773,"kind":"company","full_name":"Angel
54
+ Ramos de Miguel","contact_name":null,"street_line_1":";;;Las Palmas de Gran
55
+ Canaria;;;Espa\u00f1a","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"668829133","phone_2":null,"fax":null,"email":"aramos.gcc@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/773"},{"id":717,"kind":"company","full_name":"Angel
56
+ Ramos de Miguel","contact_name":null,"street_line_1":";;;Las Palmas de Gran
57
+ Canaria;;;Espa\u00f1a","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"668829133","phone_2":null,"fax":null,"email":"aramos.gcc@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/717"},{"id":748,"kind":"company","full_name":"Antonio Brito","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"605100535","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/748"},{"id":752,"kind":"company","full_name":"Antonio
58
+ C. Dom\u00ednguez Brito","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"adominguez@iusiani.ulpgc.es","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/752"},{"id":733,"kind":"company","full_name":"aviso_llegada","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"avisollegada@adtpostales.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/733"},{"id":764,"kind":"company","full_name":"Aythami","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"678875767","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/764"},{"id":736,"kind":"company","full_name":"Borja
59
+ Santana Corvo","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"ahviel@hotmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/736"},{"id":713,"kind":"company","full_name":"Bycor","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"+34646675709","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/713"},{"id":728,"kind":"company","full_name":"Bycor
60
+ S\u00e1nchez","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"bycor1989@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/728"},{"id":729,"kind":"company","full_name":"Canal
61
+ Amena","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"2224","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/729"},{"id":755,"kind":"company","full_name":"Carlos
62
+ Hern\u00e1ndez","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"620815221","phone_2":null,"fax":null,"email":"carlos@recrea.es","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/755"},{"id":735,"kind":"company","full_name":"Carlos
63
+ Hern\u00e1ndez Medina","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"carlos@recrea.es","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/735"},{"id":686,"kind":"company","full_name":"Coolmod","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"902
64
+ 88 85 34","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/686"},{"id":749,"kind":"company","full_name":"Cristina","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"+34650756263","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/749"},{"id":726,"kind":"company","full_name":"Cruz
65
+ Roja","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"987795001","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/726"},{"id":763,"kind":"company","full_name":"Dalia","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"637
66
+ 22 08 60","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/763"},{"id":711,"kind":"company","full_name":"David","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"620453446","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/711"},{"id":673,"kind":"company","full_name":"David
67
+ Meli\u00e1n Godoy","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"dmg_dragon@hotmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/673"},{"id":756,"kind":"company","full_name":"David
68
+ Santiago","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"660608373","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/756"}]'
51
69
  http_version: '1.1'
52
- recorded_at: Tue, 04 Feb 2014 14:39:43 GMT
53
- recorded_with: VCR 2.3.0
70
+ recorded_at: Fri, 13 Jun 2014 12:33:05 GMT
71
+ recorded_with: VCR 2.9.2