mirror42-freshbooks.rb 3.0.25

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.
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