mirror42-freshbooks.rb 3.0.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +15 -0
  2. data/History.txt +8 -0
  3. data/LICENSE +10 -0
  4. data/Manifest.txt +45 -0
  5. data/README +58 -0
  6. data/Rakefile +27 -0
  7. data/lib/freshbooks.rb +95 -0
  8. data/lib/freshbooks/base.rb +176 -0
  9. data/lib/freshbooks/category.rb +11 -0
  10. data/lib/freshbooks/client.rb +23 -0
  11. data/lib/freshbooks/connection.rb +162 -0
  12. data/lib/freshbooks/estimate.rb +15 -0
  13. data/lib/freshbooks/expense.rb +12 -0
  14. data/lib/freshbooks/invoice.rb +22 -0
  15. data/lib/freshbooks/item.rb +11 -0
  16. data/lib/freshbooks/line.rb +11 -0
  17. data/lib/freshbooks/links.rb +7 -0
  18. data/lib/freshbooks/list_proxy.rb +80 -0
  19. data/lib/freshbooks/payment.rb +13 -0
  20. data/lib/freshbooks/project.rb +12 -0
  21. data/lib/freshbooks/recurring.rb +16 -0
  22. data/lib/freshbooks/response.rb +25 -0
  23. data/lib/freshbooks/schema/definition.rb +20 -0
  24. data/lib/freshbooks/schema/mixin.rb +40 -0
  25. data/lib/freshbooks/staff.rb +13 -0
  26. data/lib/freshbooks/task.rb +12 -0
  27. data/lib/freshbooks/time_entry.rb +12 -0
  28. data/lib/freshbooks/xml_serializer.rb +17 -0
  29. data/lib/freshbooks/xml_serializer/serializers.rb +116 -0
  30. data/script/console +10 -0
  31. data/script/destroy +14 -0
  32. data/script/generate +14 -0
  33. data/test/fixtures/freshbooks_credentials.sample.yml +3 -0
  34. data/test/fixtures/invoice_create_response.xml +4 -0
  35. data/test/fixtures/invoice_get_response.xml +54 -0
  36. data/test/fixtures/invoice_list_response.xml +109 -0
  37. data/test/fixtures/success_response.xml +2 -0
  38. data/test/mock_connection.rb +13 -0
  39. data/test/schema/test_definition.rb +36 -0
  40. data/test/schema/test_mixin.rb +39 -0
  41. data/test/test_base.rb +151 -0
  42. data/test/test_connection.rb +145 -0
  43. data/test/test_helper.rb +48 -0
  44. data/test/test_invoice.rb +125 -0
  45. data/test/test_list_proxy.rb +60 -0
  46. data/test/test_page.rb +50 -0
  47. metadata +157 -0
@@ -0,0 +1,60 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestListProxy < Test::Unit::TestCase
4
+ def test_size__should_be_total_size_of_results
5
+ list_proxy = FreshBooks::ListProxy.new(create_proc(1, 2, 3))
6
+ assert_equal 3, list_proxy.size
7
+ end
8
+
9
+ def test_reference_element
10
+ list_proxy = FreshBooks::ListProxy.new(create_proc(1, 2, 3))
11
+ assert_equal 0, list_proxy[0]
12
+ assert_equal 1, list_proxy[1]
13
+ assert_equal 2, list_proxy[2]
14
+ end
15
+
16
+ def test_each
17
+ list_proxy = FreshBooks::ListProxy.new(create_proc(1, 2, 3))
18
+ count = 0
19
+ list_proxy.each_with_index do |item, i|
20
+ assert_equal i, item, "Incorrect item on iteration #{i}"
21
+ count += 1
22
+ end
23
+ assert_equal count, list_proxy.size
24
+ end
25
+
26
+ def test_each__no_pages_and_items
27
+ list_proxy = FreshBooks::ListProxy.new(create_proc(0, 0, 0))
28
+ count = 0
29
+ list_proxy.each_with_index do |item, i|
30
+ count += 1
31
+ end
32
+ assert_equal 0, list_proxy.size
33
+ assert_equal 0, count
34
+ end
35
+
36
+ def test_each__response_doesnt_have_pagination_but_returns_items
37
+ list_proxy = FreshBooks::ListProxy.new(create_proc(0, 0, 0, 3))
38
+ count = 0
39
+ list_proxy.each_with_index do |item, i|
40
+ count += 1
41
+ end
42
+ assert_equal 3, list_proxy.size
43
+ assert_equal 3, count
44
+ end
45
+
46
+ private
47
+
48
+ def create_proc(page, per_page, total, total_in_array = total)
49
+ get_page_proc = proc do |page|
50
+ start_num = (page - 1) * per_page
51
+ end_num = start_num + per_page
52
+ if end_num >= total_in_array || end_num == 0
53
+ end_num = total_in_array
54
+ end
55
+
56
+ array = Range.new(start_num, end_num, true).to_a
57
+ [array, FreshBooks::Page.new(page, per_page, total, total_in_array)]
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,50 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestPage < Test::Unit::TestCase
4
+ def test_pages
5
+ page = FreshBooks::Page.new(1, 2, 1)
6
+ assert_equal 1, page.pages
7
+
8
+ page = FreshBooks::Page.new(1, 2, 2)
9
+ assert_equal 1, page.pages
10
+
11
+ page = FreshBooks::Page.new(1, 2, 3)
12
+ assert_equal 2, page.pages
13
+
14
+ page = FreshBooks::Page.new(1, 2, 4)
15
+ assert_equal 2, page.pages
16
+ end
17
+
18
+ def test_next_page?
19
+ list_proxy = FreshBooks::Page.new(1, 2, 1)
20
+ assert !list_proxy.next_page?
21
+
22
+ list_proxy = FreshBooks::Page.new(1, 2, 3)
23
+ assert list_proxy.next_page?
24
+
25
+ list_proxy = FreshBooks::Page.new(2, 2, 3)
26
+ assert !list_proxy.next_page?
27
+ end
28
+
29
+ def test_page_number
30
+ list_proxy = FreshBooks::Page.new(1, 2, 1)
31
+ assert_equal 1, list_proxy.page_number(0)
32
+
33
+ list_proxy = FreshBooks::Page.new(1, 2, 3)
34
+ assert_equal 1, list_proxy.page_number(1)
35
+
36
+ list_proxy = FreshBooks::Page.new(1, 2, 3)
37
+ assert_equal 2, list_proxy.page_number(2)
38
+ end
39
+
40
+ def test_position_number
41
+ list_proxy = FreshBooks::Page.new(1, 2, 1)
42
+ assert_equal 0, list_proxy.position_number(0)
43
+
44
+ list_proxy = FreshBooks::Page.new(1, 2, 3)
45
+ assert_equal 1, list_proxy.position_number(1)
46
+
47
+ list_proxy = FreshBooks::Page.new(2, 2, 3)
48
+ assert_equal 0, list_proxy.position_number(2)
49
+ end
50
+ end
metadata ADDED
@@ -0,0 +1,157 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mirror42-freshbooks.rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.0.25
5
+ platform: ruby
6
+ authors:
7
+ - Ben Curren
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2010-10-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: newgem
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.2.3
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.2.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: mocha
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.9.4
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.4
55
+ - !ruby/object:Gem::Dependency
56
+ name: hoe
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.8.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.8.0
69
+ description: FreshBooks.rb is a Ruby interface to the FreshBooks API. It exposes easy-to-use
70
+ classes and methods for interacting with your FreshBooks account.
71
+ email:
72
+ - ben@outright.com
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files:
76
+ - History.txt
77
+ - Manifest.txt
78
+ files:
79
+ - History.txt
80
+ - LICENSE
81
+ - Manifest.txt
82
+ - README
83
+ - Rakefile
84
+ - lib/freshbooks.rb
85
+ - lib/freshbooks/base.rb
86
+ - lib/freshbooks/category.rb
87
+ - lib/freshbooks/client.rb
88
+ - lib/freshbooks/connection.rb
89
+ - lib/freshbooks/estimate.rb
90
+ - lib/freshbooks/expense.rb
91
+ - lib/freshbooks/invoice.rb
92
+ - lib/freshbooks/item.rb
93
+ - lib/freshbooks/line.rb
94
+ - lib/freshbooks/links.rb
95
+ - lib/freshbooks/list_proxy.rb
96
+ - lib/freshbooks/payment.rb
97
+ - lib/freshbooks/project.rb
98
+ - lib/freshbooks/recurring.rb
99
+ - lib/freshbooks/response.rb
100
+ - lib/freshbooks/schema/definition.rb
101
+ - lib/freshbooks/schema/mixin.rb
102
+ - lib/freshbooks/staff.rb
103
+ - lib/freshbooks/task.rb
104
+ - lib/freshbooks/time_entry.rb
105
+ - lib/freshbooks/xml_serializer.rb
106
+ - lib/freshbooks/xml_serializer/serializers.rb
107
+ - script/console
108
+ - script/destroy
109
+ - script/generate
110
+ - test/fixtures/freshbooks_credentials.sample.yml
111
+ - test/fixtures/invoice_create_response.xml
112
+ - test/fixtures/invoice_get_response.xml
113
+ - test/fixtures/invoice_list_response.xml
114
+ - test/fixtures/success_response.xml
115
+ - test/mock_connection.rb
116
+ - test/schema/test_definition.rb
117
+ - test/schema/test_mixin.rb
118
+ - test/test_base.rb
119
+ - test/test_connection.rb
120
+ - test/test_helper.rb
121
+ - test/test_invoice.rb
122
+ - test/test_list_proxy.rb
123
+ - test/test_page.rb
124
+ homepage: ''
125
+ licenses: []
126
+ metadata: {}
127
+ post_install_message:
128
+ rdoc_options:
129
+ - --main
130
+ - README
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ! '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubyforge_project: freshbooks.rb
145
+ rubygems_version: 2.0.3
146
+ signing_key:
147
+ specification_version: 2
148
+ summary: ''
149
+ test_files:
150
+ - test/schema/test_definition.rb
151
+ - test/schema/test_mixin.rb
152
+ - test/test_base.rb
153
+ - test/test_connection.rb
154
+ - test/test_helper.rb
155
+ - test/test_invoice.rb
156
+ - test/test_list_proxy.rb
157
+ - test/test_page.rb