quaderno 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/.document +5 -0
  2. data/Gemfile +23 -0
  3. data/Gemfile.lock +53 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.md +264 -0
  6. data/Rakefile +53 -0
  7. data/VERSION +1 -0
  8. data/build_install.sh +2 -0
  9. data/lib/quaderno-ruby/base.rb +71 -0
  10. data/lib/quaderno-ruby/behavior/crud.rb +83 -0
  11. data/lib/quaderno-ruby/behavior/deliver.rb +18 -0
  12. data/lib/quaderno-ruby/behavior/payment.rb +38 -0
  13. data/lib/quaderno-ruby/contact.rb +8 -0
  14. data/lib/quaderno-ruby/estimate.rb +8 -0
  15. data/lib/quaderno-ruby/exceptions/exceptions.rb +42 -0
  16. data/lib/quaderno-ruby/expense.rb +8 -0
  17. data/lib/quaderno-ruby/invoice.rb +9 -0
  18. data/lib/quaderno-ruby/item.rb +4 -0
  19. data/lib/quaderno-ruby/payment.rb +6 -0
  20. data/lib/quaderno-ruby.rb +11 -0
  21. data/quaderno-ruby.gemspec +114 -0
  22. data/test/fixtures/quaderno_cassettes/all_contacts.yml +46 -0
  23. data/test/fixtures/quaderno_cassettes/all_estimates.yml +44 -0
  24. data/test/fixtures/quaderno_cassettes/all_expenses.yml +44 -0
  25. data/test/fixtures/quaderno_cassettes/all_invoices.yml +44 -0
  26. data/test/fixtures/quaderno_cassettes/deleted_contact.yml +127 -0
  27. data/test/fixtures/quaderno_cassettes/deleted_estimate.yml +123 -0
  28. data/test/fixtures/quaderno_cassettes/deleted_expense.yml +123 -0
  29. data/test/fixtures/quaderno_cassettes/deleted_invoice.yml +124 -0
  30. data/test/fixtures/quaderno_cassettes/delivered_estimate.yml +127 -0
  31. data/test/fixtures/quaderno_cassettes/delivered_invoice.yml +127 -0
  32. data/test/fixtures/quaderno_cassettes/found_contact.yml +87 -0
  33. data/test/fixtures/quaderno_cassettes/found_estimate.yml +85 -0
  34. data/test/fixtures/quaderno_cassettes/found_expense.yml +85 -0
  35. data/test/fixtures/quaderno_cassettes/found_invoice.yml +85 -0
  36. data/test/fixtures/quaderno_cassettes/new_contact.yml +44 -0
  37. data/test/fixtures/quaderno_cassettes/new_estimate.yml +87 -0
  38. data/test/fixtures/quaderno_cassettes/new_expense.yml +128 -0
  39. data/test/fixtures/quaderno_cassettes/new_invoice.yml +87 -0
  40. data/test/fixtures/quaderno_cassettes/paid_expense.yml +85 -0
  41. data/test/fixtures/quaderno_cassettes/paid_invoice.yml +86 -0
  42. data/test/fixtures/quaderno_cassettes/rate_limit.yml +44 -0
  43. data/test/fixtures/quaderno_cassettes/unpay_an_expense.yml +123 -0
  44. data/test/fixtures/quaderno_cassettes/unpay_an_invoice.yml +123 -0
  45. data/test/fixtures/quaderno_cassettes/updated_contact.yml +87 -0
  46. data/test/fixtures/quaderno_cassettes/updated_estimate.yml +86 -0
  47. data/test/fixtures/quaderno_cassettes/updated_expense.yml +85 -0
  48. data/test/fixtures/quaderno_cassettes/updated_invoice.yml +86 -0
  49. data/test/helper.rb +27 -0
  50. data/test/test_quaderno-ruby.rb +4 -0
  51. data/test/unit/test_quaderno_contacts.rb +86 -0
  52. data/test/unit/test_quaderno_estimates.rb +99 -0
  53. data/test/unit/test_quaderno_expenses.rb +110 -0
  54. data/test/unit/test_quaderno_invoices.rb +121 -0
  55. metadata +232 -0
data/test/helper.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ require 'ruby-debug'
4
+ require 'vcr'
5
+
6
+ VCR.configure do |c|
7
+ c.cassette_library_dir = 'test/fixtures/quaderno_cassettes'
8
+ c.ignore_localhost = false
9
+ c.hook_into :fakeweb
10
+ end
11
+
12
+ begin
13
+ Bundler.setup(:default, :development)
14
+ rescue Bundler::BundlerError => e
15
+ $stderr.puts e.message
16
+ $stderr.puts "Run `bundle install` to install missing gems"
17
+ exit e.status_code
18
+ end
19
+ require 'test/unit'
20
+ require 'shoulda'
21
+
22
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
23
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
24
+ require 'quaderno-ruby'
25
+
26
+ class Test::Unit::TestCase
27
+ end
@@ -0,0 +1,4 @@
1
+ require 'helper'
2
+
3
+ class TestQuadernoContact < Test::Unit::TestCase
4
+ end
@@ -0,0 +1,86 @@
1
+ require 'helper'
2
+
3
+ class TestQuadernoContact < Test::Unit::TestCase
4
+ context "A user with an authenticate token with contacts" do
5
+
6
+ setup do
7
+ Quaderno::Base.configure do |config|
8
+ config.auth_token = 'xiZvifX5hwsxAiymYPk2'
9
+ config.subdomain = 'recrea'
10
+ end
11
+ end
12
+
13
+ should "get exception if pass wrong arguments" do
14
+ assert_raise ArgumentError do
15
+ VCR.use_cassette('all contacts') do
16
+ Quaderno::Contact.all 1
17
+ end
18
+ end
19
+ assert_raise ArgumentError do
20
+ VCR.use_cassette('found contact') do
21
+ Quaderno::Contact.find
22
+ end
23
+ end
24
+ end
25
+
26
+ should "get all contacts (populated db)" do
27
+ VCR.use_cassette('all contacts') do
28
+ contacts = Quaderno::Contact.all
29
+ assert_not_nil contacts
30
+ assert_kind_of Array, contacts
31
+ contacts.each do |contact|
32
+ assert_kind_of Quaderno::Contact, contact
33
+ end
34
+ end
35
+ end
36
+
37
+ should "find a contact" do
38
+ VCR.use_cassette('found contact') do
39
+ contacts = Quaderno::Contact.all
40
+ contact = Quaderno::Contact.find contacts[2].id
41
+ assert_kind_of Quaderno::Contact, contact
42
+ assert_equal contacts[2].id, contact.id
43
+ end
44
+ end
45
+
46
+ should "create a contact" do
47
+ VCR.use_cassette('new contact') do
48
+ contact = Quaderno::Contact.create(kind: 'company', first_name: 'Test_Skynet', email: 'my_little@po.ny')
49
+ assert_kind_of Quaderno::Contact, contact
50
+ assert_equal 'company', contact.kind
51
+ assert_equal 'Test_Skynet', contact.full_name
52
+ end
53
+ end
54
+
55
+ should "update a contact" do
56
+ VCR.use_cassette('updated contact') do
57
+ contacts = Quaderno::Contact.all
58
+ contact = Quaderno::Contact.update(contacts[2].id, first_name: 'Test_OCP', email: 'dont@stop.believing')
59
+ assert_kind_of Quaderno::Contact, contact
60
+ if contact.kind == 'company'
61
+ assert_equal 'Test_OCP', contact.full_name
62
+ else
63
+ assert_equal 'Test_OCP', contact.first_name
64
+ end
65
+ end
66
+ end
67
+
68
+ should "delete a contact" do
69
+ VCR.use_cassette('deleted contact') do
70
+ contacts_before = Quaderno::Contact.all
71
+ contact_id = contacts_before[10].id
72
+ Quaderno::Contact.delete contact_id
73
+ contacts_after = Quaderno::Contact.all
74
+ assert_not_equal contacts_after[10].id, contact_id
75
+ end
76
+ end
77
+
78
+ should "know the rate limit" do
79
+ VCR.use_cassette('rate limit') do
80
+ rate_limit_info = Quaderno::Base.rate_limit_info
81
+ assert_equal 1000, rate_limit_info[:limit]
82
+ assert_operator rate_limit_info[:remaining], :< ,1000
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,99 @@
1
+ require 'helper'
2
+
3
+ class TestQuadernoEstimate < Test::Unit::TestCase
4
+ context 'A user with an authenticate token with estimates' do
5
+
6
+ setup do
7
+ Quaderno::Base.configure do |config|
8
+ config.auth_token = 'xiZvifX5hwsxAiymYPk2'
9
+ config.subdomain = 'recrea'
10
+ end
11
+ end
12
+
13
+ should 'get exception if pass wrong arguments' do
14
+ assert_raise ArgumentError do
15
+ VCR.use_cassette('all estimates') do
16
+ Quaderno::Estimate.all 1
17
+ end
18
+ end
19
+ assert_raise ArgumentError do
20
+ VCR.use_cassette('found estimate') do
21
+ Quaderno::Estimate.find
22
+ end
23
+ end
24
+ end
25
+
26
+ should 'get all estimates (populated db)' do
27
+ VCR.use_cassette('all estimates') do
28
+ estimates = Quaderno::Estimate.all
29
+ assert_not_nil estimates
30
+ assert_kind_of Array, estimates
31
+ estimates.each do |estimate|
32
+ assert_kind_of Quaderno::Estimate, estimate
33
+ end
34
+ end
35
+ end
36
+
37
+ should 'find an estimate' do
38
+ VCR.use_cassette('found estimate') do
39
+ estimates = Quaderno::Estimate.all
40
+ estimate = Quaderno::Estimate.find estimates.first.id
41
+ assert_kind_of Quaderno::Estimate, estimate
42
+ assert_equal estimates.first.id, estimate.id
43
+ end
44
+ end
45
+
46
+ should 'create an estimate' do
47
+ VCR.use_cassette('new estimate') do
48
+ contacts = Quaderno::Contact.all
49
+ estimate = Quaderno::Estimate.create(contact_id: contacts.first.id ,
50
+ contact_name: contacts.first.full_name,
51
+ currency: 'EUR',
52
+ items: [
53
+ {
54
+ description: 'Aircraft',
55
+ quantity: '1.0',
56
+ unit_price: '0.0'
57
+ }
58
+ ],
59
+ tags: 'tnt', payment_details: '',
60
+ notes: '')
61
+ assert_kind_of Quaderno::Estimate, estimate
62
+ assert_equal contacts.first.id, estimate.contact.id
63
+ assert_equal 'Aircraft', estimate.items.first.description
64
+ end
65
+ end
66
+
67
+ should 'update an estimate' do
68
+ VCR.use_cassette('updated estimate') do
69
+ estimates = Quaderno::Estimate.all
70
+ estimate = Quaderno::Estimate.update(estimates.first.id, payment_details: 'Show me the moneeeeeeeyy!!!!')
71
+ assert_kind_of Quaderno::Estimate, estimate
72
+ assert_equal 'Show me the moneeeeeeeyy!!!!', estimate.payment_details
73
+ end
74
+ end
75
+
76
+ should 'delete an estimate' do
77
+ VCR.use_cassette('deleted estimate') do
78
+ estimates = Quaderno::Estimate.all
79
+ estimate_id = estimates.first.id
80
+ Quaderno::Estimate.delete estimate_id
81
+ estimates = Quaderno::Estimate.all
82
+ assert_not_equal estimates.first.id, estimate_id
83
+ end
84
+ end
85
+
86
+ should 'deliver an estimate' do
87
+ VCR.use_cassette('delivered estimate') do
88
+ estimates = Quaderno::Estimate.all
89
+ rate_limit_before = Quaderno::Base.rate_limit_info
90
+ begin
91
+ rate_limit_after = estimates.first.deliver
92
+ rescue Quaderno::Exceptions::RequiredFieldsEmpty
93
+ rate_limit_after = { remaining: (rate_limit_before[:remaining] - 1) }
94
+ end
95
+ assert_equal rate_limit_before[:remaining]-1, rate_limit_after[:remaining]
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,110 @@
1
+ require 'helper'
2
+
3
+ class TestQuadernoExpense < Test::Unit::TestCase
4
+ context 'A user with an authenticate token with expenses' do
5
+
6
+ setup do
7
+ Quaderno::Base.configure do |config|
8
+ config.auth_token = 'xiZvifX5hwsxAiymYPk2'
9
+ config.subdomain = 'recrea'
10
+ end
11
+ end
12
+
13
+ should 'get exception if pass wrong arguments' do
14
+ assert_raise ArgumentError do
15
+ VCR.use_cassette('all expenses') do
16
+ Quaderno::Expense.all 1
17
+ end
18
+ end
19
+ assert_raise ArgumentError do
20
+ VCR.use_cassette('found expense') do
21
+ Quaderno::Expense.find
22
+ end
23
+ end
24
+ end
25
+
26
+ should 'get all expenses (populated db)' do
27
+ VCR.use_cassette('all expenses') do
28
+ expenses = Quaderno::Expense.all
29
+ assert_not_nil expenses
30
+ assert_kind_of Array, expenses
31
+ expenses.each do |expense|
32
+ assert_kind_of Quaderno::Expense, expense
33
+ end
34
+ end
35
+ end
36
+
37
+ should 'find a expense' do
38
+ VCR.use_cassette('found expense') do
39
+ expenses = Quaderno::Expense.all
40
+ expense = Quaderno::Expense.find expenses.first.id
41
+ assert_kind_of Quaderno::Expense, expense
42
+ assert_equal expenses.first.id, expense.id
43
+ end
44
+ end
45
+
46
+ should 'create a expense' do
47
+ VCR.use_cassette('new expense') do
48
+ expenses = Quaderno::Expense.all
49
+ contacts = Quaderno::Contact.all
50
+ expense = Quaderno::Expense.create(number: "#{ expenses.length + 1 }",
51
+ contact_id: contacts.first.id ,
52
+ contact_name: contacts.first.full_name,
53
+ currency: 'EUR',
54
+ items: [
55
+ {
56
+ description: 'Aircraft',
57
+ quantity: '1.0',
58
+ unit_price: '0.0'
59
+ }
60
+ ],
61
+ tags: 'tnt', payment_details: '',
62
+ notes: '')
63
+ assert_kind_of Quaderno::Expense, expense
64
+ assert_equal contacts.first.id, expense.contact.id
65
+ assert_equal 'Aircraft', expense.items.first.description
66
+ end
67
+ end
68
+
69
+ should 'update an expense' do
70
+ VCR.use_cassette('updated expense') do
71
+ expenses = Quaderno::Expense.all
72
+ expense = Quaderno::Expense.update(expenses[2].id, currency: 'USD')
73
+ assert_kind_of Quaderno::Expense, expense
74
+ assert_equal 'USD', expense.currency
75
+ end
76
+ end
77
+
78
+ should 'delete an expense' do
79
+ VCR.use_cassette('deleted expense') do
80
+ expenses = Quaderno::Expense.all
81
+ expense_id = expenses.first.id
82
+ Quaderno::Expense.delete expense_id
83
+ expenses = Quaderno::Expense.all
84
+ assert_not_equal expenses.first.id, expense_id
85
+ end
86
+ end
87
+
88
+ should 'add a payment' do
89
+ VCR.use_cassette('paid expense') do
90
+ expenses = Quaderno::Expense.all
91
+ payment = expenses.first.add_payment(payment_method: "cash", number: "100000000")
92
+ assert_kind_of Quaderno::Payment, payment
93
+ assert_equal "cash", payment.payment_method
94
+ assert_equal "100,000,000.00", payment.amount[1..-1]
95
+ assert_equal expenses.first.payments.last.id, payment.id
96
+ end
97
+ end
98
+
99
+ should 'remove a payment' do
100
+ VCR.use_cassette('unpay an expense') do
101
+ expenses = Quaderno::Expense.all
102
+ expenses.first.add_payment(payment_method: "cash", number: "100000000")
103
+ payment = expenses.first.payments.last
104
+ array_length = expenses.first.payments.length
105
+ expenses.first.remove_payment(payment.id) unless payment.nil?
106
+ assert_equal (array_length.zero? ? array_length : array_length-1), expenses.first.payments.length
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,121 @@
1
+ require 'helper'
2
+
3
+ class TestQuadernoInvoice < Test::Unit::TestCase
4
+ context 'A user with an authenticate token with invoices' do
5
+
6
+ setup do
7
+ Quaderno::Base.configure do |config|
8
+ config.auth_token = 'xiZvifX5hwsxAiymYPk2'
9
+ config.subdomain = 'recrea'
10
+ end
11
+ end
12
+
13
+ should 'get exception if pass wrong arguments' do
14
+ assert_raise ArgumentError do
15
+ VCR.use_cassette('all invoices') do
16
+ Quaderno::Invoice.all 1
17
+ end
18
+ end
19
+ assert_raise ArgumentError do
20
+ VCR.use_cassette('found invoice') do
21
+ Quaderno::Invoice.find
22
+ end
23
+ end
24
+ end
25
+
26
+ should 'get all invoices (populated db)' do
27
+ VCR.use_cassette('all invoices') do
28
+ invoices = Quaderno::Invoice.all
29
+ assert_not_nil invoices
30
+ assert_kind_of Array, invoices
31
+ invoices.each do |invoice|
32
+ assert_kind_of Quaderno::Invoice, invoice
33
+ end
34
+ end
35
+ end
36
+
37
+ should 'find a invoice' do
38
+ VCR.use_cassette('found invoice') do
39
+ invoices = Quaderno::Invoice.all
40
+ invoice = Quaderno::Invoice.find invoices.first.id
41
+ assert_kind_of Quaderno::Invoice, invoice
42
+ assert_equal invoices.first.id, invoice.id
43
+ end
44
+ end
45
+
46
+ should 'create a invoice' do
47
+ VCR.use_cassette('new invoice') do
48
+ contacts = Quaderno::Contact.all
49
+ invoice = Quaderno::Invoice.create(contact_id: contacts[0].id ,
50
+ contact_name: contacts[0].full_name,
51
+ currency: 'EUR',
52
+ items: [
53
+ {
54
+ description: 'Aircraft',
55
+ quantity: '1.0',
56
+ unit_price: '0.0'
57
+ }
58
+ ],
59
+ tags: 'tnt', payment_details: '',
60
+ notes: '')
61
+ assert_kind_of Quaderno::Invoice, invoice
62
+ assert_equal contacts[0].id, invoice.contact.id
63
+ assert_equal 'Aircraft', invoice.items[0].description
64
+ end
65
+ end
66
+
67
+ should 'update an invoice' do
68
+ VCR.use_cassette('updated invoice') do
69
+ invoices = Quaderno::Invoice.all
70
+ invoice = Quaderno::Invoice.update(invoices.first.id, payment_details: 'Show me the moneeeeeeeyy!!!!')
71
+ assert_kind_of Quaderno::Invoice, invoice
72
+ assert_equal 'Show me the moneeeeeeeyy!!!!', invoice.payment_details
73
+ end
74
+ end
75
+
76
+ should 'delete an invoice' do
77
+ VCR.use_cassette('deleted invoice') do
78
+ invoices = Quaderno::Invoice.all
79
+ invoice_id = invoices.first.id
80
+ Quaderno::Invoice.delete invoice_id
81
+ invoices = Quaderno::Invoice.all
82
+ assert_not_equal invoices.first.id, invoice_id
83
+ end
84
+ end
85
+
86
+ should 'deliver an invoice' do
87
+ VCR.use_cassette('delivered invoice') do
88
+ invoices = Quaderno::Invoice.all
89
+ rate_limit_before = Quaderno::Base.rate_limit_info
90
+ begin
91
+ rate_limit_after = invoices.first.deliver
92
+ rescue Quaderno::Exceptions::RequiredFieldsEmpty
93
+ rate_limit_after = { remaining: (rate_limit_before[:remaining] - 1) }
94
+ end
95
+ assert_equal rate_limit_before[:remaining]-1, rate_limit_after[:remaining]
96
+ end
97
+ end
98
+
99
+ should 'add a payment' do
100
+ VCR.use_cassette('paid invoice') do
101
+ invoices = Quaderno::Invoice.all
102
+ payment = invoices.first.add_payment(payment_method: "cash", number: "100000000")
103
+ assert_kind_of Quaderno::Payment, payment
104
+ assert_equal "cash", payment.payment_method
105
+ assert_equal "100,000,000.00", payment.amount[1..-1]
106
+ assert_equal invoices.first.payments.last.id, payment.id
107
+ end
108
+ end
109
+
110
+ should 'remove a payment' do
111
+ VCR.use_cassette('unpay an invoice') do
112
+ invoices = Quaderno::Invoice.all
113
+ invoices.first.add_payment(payment_method: "cash", number: "100000000")
114
+ payment = invoices.first.payments.last
115
+ array_length = invoices.first.payments.length
116
+ invoices.first.remove_payment(payment.id) unless payment.nil?
117
+ assert_equal (array_length.zero? ? array_length : array_length-1), invoices.first.payments.length
118
+ end
119
+ end
120
+ end
121
+ end
metadata ADDED
@@ -0,0 +1,232 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: quaderno
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Recrea
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-05-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.0
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: debugger
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: httparty
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: jeweler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.8.4
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.8.4
78
+ - !ruby/object:Gem::Dependency
79
+ name: shoulda
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rcov
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 0.9.11
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.9.11
110
+ - !ruby/object:Gem::Dependency
111
+ name: rdoc
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '3.12'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '3.12'
126
+ - !ruby/object:Gem::Dependency
127
+ name: vcr
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ description: longer description of your gem
143
+ email: carlos@recrea.es
144
+ executables: []
145
+ extensions: []
146
+ extra_rdoc_files:
147
+ - LICENSE.txt
148
+ - README.md
149
+ files:
150
+ - .document
151
+ - Gemfile
152
+ - Gemfile.lock
153
+ - LICENSE.txt
154
+ - README.md
155
+ - Rakefile
156
+ - VERSION
157
+ - build_install.sh
158
+ - lib/quaderno-ruby.rb
159
+ - lib/quaderno-ruby/base.rb
160
+ - lib/quaderno-ruby/behavior/crud.rb
161
+ - lib/quaderno-ruby/behavior/deliver.rb
162
+ - lib/quaderno-ruby/behavior/payment.rb
163
+ - lib/quaderno-ruby/contact.rb
164
+ - lib/quaderno-ruby/estimate.rb
165
+ - lib/quaderno-ruby/exceptions/exceptions.rb
166
+ - lib/quaderno-ruby/expense.rb
167
+ - lib/quaderno-ruby/invoice.rb
168
+ - lib/quaderno-ruby/item.rb
169
+ - lib/quaderno-ruby/payment.rb
170
+ - quaderno-ruby.gemspec
171
+ - test/fixtures/quaderno_cassettes/all_contacts.yml
172
+ - test/fixtures/quaderno_cassettes/all_estimates.yml
173
+ - test/fixtures/quaderno_cassettes/all_expenses.yml
174
+ - test/fixtures/quaderno_cassettes/all_invoices.yml
175
+ - test/fixtures/quaderno_cassettes/deleted_contact.yml
176
+ - test/fixtures/quaderno_cassettes/deleted_estimate.yml
177
+ - test/fixtures/quaderno_cassettes/deleted_expense.yml
178
+ - test/fixtures/quaderno_cassettes/deleted_invoice.yml
179
+ - test/fixtures/quaderno_cassettes/delivered_estimate.yml
180
+ - test/fixtures/quaderno_cassettes/delivered_invoice.yml
181
+ - test/fixtures/quaderno_cassettes/found_contact.yml
182
+ - test/fixtures/quaderno_cassettes/found_estimate.yml
183
+ - test/fixtures/quaderno_cassettes/found_expense.yml
184
+ - test/fixtures/quaderno_cassettes/found_invoice.yml
185
+ - test/fixtures/quaderno_cassettes/new_contact.yml
186
+ - test/fixtures/quaderno_cassettes/new_estimate.yml
187
+ - test/fixtures/quaderno_cassettes/new_expense.yml
188
+ - test/fixtures/quaderno_cassettes/new_invoice.yml
189
+ - test/fixtures/quaderno_cassettes/paid_expense.yml
190
+ - test/fixtures/quaderno_cassettes/paid_invoice.yml
191
+ - test/fixtures/quaderno_cassettes/rate_limit.yml
192
+ - test/fixtures/quaderno_cassettes/unpay_an_expense.yml
193
+ - test/fixtures/quaderno_cassettes/unpay_an_invoice.yml
194
+ - test/fixtures/quaderno_cassettes/updated_contact.yml
195
+ - test/fixtures/quaderno_cassettes/updated_estimate.yml
196
+ - test/fixtures/quaderno_cassettes/updated_expense.yml
197
+ - test/fixtures/quaderno_cassettes/updated_invoice.yml
198
+ - test/helper.rb
199
+ - test/test_quaderno-ruby.rb
200
+ - test/unit/test_quaderno_contacts.rb
201
+ - test/unit/test_quaderno_estimates.rb
202
+ - test/unit/test_quaderno_expenses.rb
203
+ - test/unit/test_quaderno_invoices.rb
204
+ homepage: http://github.com/recrea/quaderno-ruby
205
+ licenses:
206
+ - MIT
207
+ post_install_message:
208
+ rdoc_options: []
209
+ require_paths:
210
+ - lib
211
+ required_ruby_version: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ! '>='
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ segments:
218
+ - 0
219
+ hash: 2884457760108531416
220
+ required_rubygems_version: !ruby/object:Gem::Requirement
221
+ none: false
222
+ requirements:
223
+ - - ! '>='
224
+ - !ruby/object:Gem::Version
225
+ version: '0'
226
+ requirements: []
227
+ rubyforge_project:
228
+ rubygems_version: 1.8.24
229
+ signing_key:
230
+ specification_version: 3
231
+ summary: one-line summary of your gem
232
+ test_files: []