freeagent_api 0.1.0 → 0.2.0

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,223 @@
1
+ HTTP/1.1 200 OK
2
+ Status: 200
3
+ Content-Type: application/xml; charset=utf-8
4
+
5
+ <?xml version="1.0" encoding="UTF-8"?>
6
+ <timeslips type="array">
7
+ <timeslip>
8
+ <comment></comment>
9
+ <dated-on type="datetime">2009-09-09T00:00:00Z</dated-on>
10
+ <hours type="decimal">3.75</hours>
11
+ <id type="integer">74814</id>
12
+ <task-id type="integer">13161</task-id>
13
+ <updated-at type="datetime">2009-09-14T19:56:37Z</updated-at>
14
+ <user-id type="integer">5193</user-id>
15
+ </timeslip>
16
+ <timeslip>
17
+ <comment></comment>
18
+ <dated-on type="datetime">2009-09-09T00:00:00Z</dated-on>
19
+ <hours type="decimal">3.75</hours>
20
+ <id type="integer">74815</id>
21
+ <task-id type="integer">12684</task-id>
22
+ <updated-at type="datetime">2009-09-14T19:56:37Z</updated-at>
23
+ <user-id type="integer">5193</user-id>
24
+ </timeslip>
25
+ <timeslip>
26
+ <comment></comment>
27
+ <dated-on type="datetime">2009-09-10T00:00:00Z</dated-on>
28
+ <hours type="decimal">3.75</hours>
29
+ <id type="integer">75967</id>
30
+ <task-id type="integer">12683</task-id>
31
+ <updated-at type="datetime">2009-09-14T19:56:36Z</updated-at>
32
+ <user-id type="integer">5193</user-id>
33
+ </timeslip>
34
+ <timeslip>
35
+ <comment></comment>
36
+ <dated-on type="datetime">2009-09-10T00:00:00Z</dated-on>
37
+ <hours type="decimal">3.75</hours>
38
+ <id type="integer">75966</id>
39
+ <task-id type="integer">13161</task-id>
40
+ <updated-at type="datetime">2009-09-14T19:56:37Z</updated-at>
41
+ <user-id type="integer">5193</user-id>
42
+ </timeslip>
43
+ <timeslip>
44
+ <comment></comment>
45
+ <dated-on type="datetime">2009-09-11T00:00:00Z</dated-on>
46
+ <hours type="decimal">7.5</hours>
47
+ <id type="integer">75968</id>
48
+ <task-id type="integer">13161</task-id>
49
+ <updated-at type="datetime">2009-09-14T19:56:37Z</updated-at>
50
+ <user-id type="integer">5193</user-id>
51
+ </timeslip>
52
+ <timeslip>
53
+ <comment></comment>
54
+ <dated-on type="datetime">2009-09-14T00:00:00Z</dated-on>
55
+ <hours type="decimal">7.5</hours>
56
+ <id type="integer">76010</id>
57
+ <task-id type="integer">13161</task-id>
58
+ <updated-at type="datetime">2009-09-14T22:33:55Z</updated-at>
59
+ <user-id type="integer">5193</user-id>
60
+ </timeslip>
61
+ <timeslip>
62
+ <comment></comment>
63
+ <dated-on type="datetime">2009-09-15T00:00:00Z</dated-on>
64
+ <hours type="decimal">3.75</hours>
65
+ <id type="integer">76292</id>
66
+ <task-id type="integer">13161</task-id>
67
+ <updated-at type="datetime">2009-09-15T20:13:10Z</updated-at>
68
+ <user-id type="integer">5193</user-id>
69
+ </timeslip>
70
+ <timeslip>
71
+ <comment></comment>
72
+ <dated-on type="datetime">2009-09-16T00:00:00Z</dated-on>
73
+ <hours type="decimal">7.5</hours>
74
+ <id type="integer">78004</id>
75
+ <task-id type="integer">12683</task-id>
76
+ <updated-at type="datetime">2009-09-20T11:39:39Z</updated-at>
77
+ <user-id type="integer">5193</user-id>
78
+ </timeslip>
79
+ <timeslip>
80
+ <comment></comment>
81
+ <dated-on type="datetime">2009-09-17T00:00:00Z</dated-on>
82
+ <hours type="decimal">7.5</hours>
83
+ <id type="integer">78005</id>
84
+ <task-id type="integer">12683</task-id>
85
+ <updated-at type="datetime">2009-09-20T11:39:47Z</updated-at>
86
+ <user-id type="integer">5193</user-id>
87
+ </timeslip>
88
+ <timeslip>
89
+ <comment></comment>
90
+ <dated-on type="datetime">2009-09-18T00:00:00Z</dated-on>
91
+ <hours type="decimal">7.5</hours>
92
+ <id type="integer">78006</id>
93
+ <task-id type="integer">12683</task-id>
94
+ <updated-at type="datetime">2009-09-20T11:39:55Z</updated-at>
95
+ <user-id type="integer">5193</user-id>
96
+ </timeslip>
97
+ <timeslip>
98
+ <comment></comment>
99
+ <dated-on type="datetime">2009-09-21T00:00:00Z</dated-on>
100
+ <hours type="decimal">7.5</hours>
101
+ <id type="integer">78793</id>
102
+ <task-id type="integer">12683</task-id>
103
+ <updated-at type="datetime">2009-09-22T15:52:37Z</updated-at>
104
+ <user-id type="integer">5193</user-id>
105
+ </timeslip>
106
+ <timeslip>
107
+ <comment></comment>
108
+ <dated-on type="datetime">2009-09-22T00:00:00Z</dated-on>
109
+ <hours type="decimal">3.75</hours>
110
+ <id type="integer">78794</id>
111
+ <task-id type="integer">12683</task-id>
112
+ <updated-at type="datetime">2009-09-22T15:52:46Z</updated-at>
113
+ <user-id type="integer">5193</user-id>
114
+ </timeslip>
115
+ <timeslip>
116
+ <comment></comment>
117
+ <dated-on type="datetime">2009-09-23T00:00:00Z</dated-on>
118
+ <hours type="decimal">7.5</hours>
119
+ <id type="integer">79115</id>
120
+ <task-id type="integer">12683</task-id>
121
+ <updated-at type="datetime">2009-09-23T19:12:53Z</updated-at>
122
+ <user-id type="integer">5193</user-id>
123
+ </timeslip>
124
+ <timeslip>
125
+ <comment></comment>
126
+ <dated-on type="datetime">2009-09-24T00:00:00Z</dated-on>
127
+ <hours type="decimal">7.5</hours>
128
+ <id type="integer">79691</id>
129
+ <task-id type="integer">12683</task-id>
130
+ <updated-at type="datetime">2009-09-24T18:58:44Z</updated-at>
131
+ <user-id type="integer">5193</user-id>
132
+ </timeslip>
133
+ <timeslip>
134
+ <comment></comment>
135
+ <dated-on type="datetime">2009-09-25T00:00:00Z</dated-on>
136
+ <hours type="decimal">7.5</hours>
137
+ <id type="integer">80083</id>
138
+ <task-id type="integer">12684</task-id>
139
+ <updated-at type="datetime">2009-09-25T17:45:32Z</updated-at>
140
+ <user-id type="integer">5193</user-id>
141
+ </timeslip>
142
+ <timeslip>
143
+ <comment></comment>
144
+ <dated-on type="datetime">2009-09-28T00:00:00Z</dated-on>
145
+ <hours type="decimal">7.5</hours>
146
+ <id type="integer">82076</id>
147
+ <task-id type="integer">12684</task-id>
148
+ <updated-at type="datetime">2009-10-01T18:59:36Z</updated-at>
149
+ <user-id type="integer">5193</user-id>
150
+ </timeslip>
151
+ <timeslip>
152
+ <comment></comment>
153
+ <dated-on type="datetime">2009-09-29T00:00:00Z</dated-on>
154
+ <hours type="decimal">3.75</hours>
155
+ <id type="integer">82077</id>
156
+ <task-id type="integer">12684</task-id>
157
+ <updated-at type="datetime">2009-10-01T18:59:44Z</updated-at>
158
+ <user-id type="integer">5193</user-id>
159
+ </timeslip>
160
+ <timeslip>
161
+ <comment></comment>
162
+ <dated-on type="datetime">2009-09-29T00:00:00Z</dated-on>
163
+ <hours type="decimal">3.75</hours>
164
+ <id type="integer">82078</id>
165
+ <task-id type="integer">12683</task-id>
166
+ <updated-at type="datetime">2009-10-01T18:59:55Z</updated-at>
167
+ <user-id type="integer">5193</user-id>
168
+ </timeslip>
169
+ <timeslip>
170
+ <comment></comment>
171
+ <dated-on type="datetime">2009-09-30T00:00:00Z</dated-on>
172
+ <hours type="decimal">7.5</hours>
173
+ <id type="integer">82079</id>
174
+ <task-id type="integer">12683</task-id>
175
+ <updated-at type="datetime">2009-10-01T19:00:08Z</updated-at>
176
+ <user-id type="integer">5193</user-id>
177
+ </timeslip>
178
+ <timeslip>
179
+ <comment></comment>
180
+ <dated-on type="datetime">2009-10-01T00:00:00Z</dated-on>
181
+ <hours type="decimal">7.5</hours>
182
+ <id type="integer">82080</id>
183
+ <task-id type="integer">12683</task-id>
184
+ <updated-at type="datetime">2009-10-01T19:00:15Z</updated-at>
185
+ <user-id type="integer">5193</user-id>
186
+ </timeslip>
187
+ <timeslip>
188
+ <comment></comment>
189
+ <dated-on type="datetime">2009-10-02T00:00:00Z</dated-on>
190
+ <hours type="decimal">7.5</hours>
191
+ <id type="integer">82575</id>
192
+ <task-id type="integer">12684</task-id>
193
+ <updated-at type="datetime">2009-10-04T00:47:46Z</updated-at>
194
+ <user-id type="integer">5193</user-id>
195
+ </timeslip>
196
+ <timeslip>
197
+ <comment></comment>
198
+ <dated-on type="datetime">2009-10-05T00:00:00Z</dated-on>
199
+ <hours type="decimal">7.5</hours>
200
+ <id type="integer">84445</id>
201
+ <task-id type="integer">12683</task-id>
202
+ <updated-at type="datetime">2009-10-08T15:29:30Z</updated-at>
203
+ <user-id type="integer">5193</user-id>
204
+ </timeslip>
205
+ <timeslip>
206
+ <comment></comment>
207
+ <dated-on type="datetime">2009-10-06T00:00:00Z</dated-on>
208
+ <hours type="decimal">7.5</hours>
209
+ <id type="integer">84446</id>
210
+ <task-id type="integer">15291</task-id>
211
+ <updated-at type="datetime">2009-10-08T15:29:47Z</updated-at>
212
+ <user-id type="integer">5193</user-id>
213
+ </timeslip>
214
+ <timeslip>
215
+ <comment></comment>
216
+ <dated-on type="datetime">2009-10-08T00:00:00Z</dated-on>
217
+ <hours type="decimal">3.75</hours>
218
+ <id type="integer">84447</id>
219
+ <task-id type="integer">12683</task-id>
220
+ <updated-at type="datetime">2009-10-08T15:29:59Z</updated-at>
221
+ <user-id type="integer">5193</user-id>
222
+ </timeslip>
223
+ </timeslips>
@@ -0,0 +1,42 @@
1
+ HTTP/1.1 200 OK
2
+ Status: 200
3
+ Content-Type: application/xml; charset=utf-8
4
+
5
+ <?xml version="1.0" encoding="UTF-8"?>
6
+ <tasks type="array">
7
+ <task>
8
+ <id type="integer">12683</id>
9
+ <name>Back end development</name>
10
+ <project-id type="integer">17820</project-id>
11
+ </task>
12
+ <task>
13
+ <id type="integer">12685</id>
14
+ <name>Briefing and research</name>
15
+ <project-id type="integer">17820</project-id>
16
+ </task>
17
+ <task>
18
+ <id type="integer">15291</id>
19
+ <name>Documentation</name>
20
+ <project-id type="integer">17820</project-id>
21
+ </task>
22
+ <task>
23
+ <id type="integer">12684</id>
24
+ <name>Front end development</name>
25
+ <project-id type="integer">17820</project-id>
26
+ </task>
27
+ <task>
28
+ <id type="integer">12921</id>
29
+ <name>Photography project</name>
30
+ <project-id type="integer">17820</project-id>
31
+ </task>
32
+ <task>
33
+ <id type="integer">12841</id>
34
+ <name>Game website development</name>
35
+ <project-id type="integer">17820</project-id>
36
+ </task>
37
+ <task>
38
+ <id type="integer">13161</id>
39
+ <name>Mobile website development</name>
40
+ <project-id type="integer">17820</project-id>
41
+ </task>
42
+ </tasks>
@@ -0,0 +1,10 @@
1
+ HTTP/1.1 200 OK
2
+ Status: 200
3
+ Content-Type: application/xml; charset=utf-8
4
+
5
+ <?xml version="1.0" encoding="UTF-8"?>
6
+ <task>
7
+ <id type="integer">13161</id>
8
+ <name>Mobile website development</name>
9
+ <project-id type="integer">17820</project-id>
10
+ </task>
@@ -0,0 +1,52 @@
1
+ HTTP/1.1 200 OK
2
+ Status: 200
3
+ Content-Type: application/xml; charset=utf-8
4
+
5
+ <?xml version="1.0" encoding="UTF-8"?>
6
+ <timeslips type="array">
7
+ <timeslip>
8
+ <comment></comment>
9
+ <dated-on type="datetime">2009-10-01T00:00:00Z</dated-on>
10
+ <hours type="decimal">7.5</hours>
11
+ <id type="integer">82080</id>
12
+ <task-id type="integer">12683</task-id>
13
+ <updated-at type="datetime">2009-10-01T19:00:15Z</updated-at>
14
+ <user-id type="integer">5193</user-id>
15
+ </timeslip>
16
+ <timeslip>
17
+ <comment></comment>
18
+ <dated-on type="datetime">2009-10-02T00:00:00Z</dated-on>
19
+ <hours type="decimal">7.5</hours>
20
+ <id type="integer">82575</id>
21
+ <task-id type="integer">12684</task-id>
22
+ <updated-at type="datetime">2009-10-04T00:47:46Z</updated-at>
23
+ <user-id type="integer">5193</user-id>
24
+ </timeslip>
25
+ <timeslip>
26
+ <comment></comment>
27
+ <dated-on type="datetime">2009-10-05T00:00:00Z</dated-on>
28
+ <hours type="decimal">7.5</hours>
29
+ <id type="integer">84445</id>
30
+ <task-id type="integer">12683</task-id>
31
+ <updated-at type="datetime">2009-10-08T15:29:30Z</updated-at>
32
+ <user-id type="integer">5193</user-id>
33
+ </timeslip>
34
+ <timeslip>
35
+ <comment></comment>
36
+ <dated-on type="datetime">2009-10-06T00:00:00Z</dated-on>
37
+ <hours type="decimal">7.5</hours>
38
+ <id type="integer">84446</id>
39
+ <task-id type="integer">15291</task-id>
40
+ <updated-at type="datetime">2009-10-08T15:29:47Z</updated-at>
41
+ <user-id type="integer">5193</user-id>
42
+ </timeslip>
43
+ <timeslip>
44
+ <comment></comment>
45
+ <dated-on type="datetime">2009-10-08T00:00:00Z</dated-on>
46
+ <hours type="decimal">3.75</hours>
47
+ <id type="integer">84447</id>
48
+ <task-id type="integer">12683</task-id>
49
+ <updated-at type="datetime">2009-10-08T15:29:59Z</updated-at>
50
+ <user-id type="integer">5193</user-id>
51
+ </timeslip>
52
+ </timeslips>
@@ -0,0 +1,14 @@
1
+ HTTP/1.1 200 OK
2
+ Status: 200
3
+ Content-Type: application/xml; charset=utf-8
4
+
5
+ <?xml version="1.0" encoding="UTF-8"?>
6
+ <timeslip>
7
+ <comment></comment>
8
+ <dated-on type="datetime">2009-10-05T00:00:00Z</dated-on>
9
+ <hours type="decimal">7.5</hours>
10
+ <id type="integer">84445</id>
11
+ <task-id type="integer">12683</task-id>
12
+ <updated-at type="datetime">2009-10-08T15:29:30Z</updated-at>
13
+ <user-id type="integer">5193</user-id>
14
+ </timeslip>
data/test/task_test.rb ADDED
@@ -0,0 +1,60 @@
1
+ require 'test_helper'
2
+
3
+ class TaskTest < Test::Unit::TestCase
4
+
5
+ context "Task class" do
6
+ should "have correct collection path" do
7
+ assert_equal '/projects/1000/tasks.xml', Task.collection_path(:project_id => 1000)
8
+ end
9
+ should "have correct element path" do
10
+ assert_equal '/projects/1000/tasks/first.xml', Task.element_path(:first, :project_id => 1000)
11
+ assert_equal '/projects/1000/tasks/1000.xml', Task.element_path(1000, :project_id => 1000)
12
+ end
13
+ end
14
+
15
+ context "Tasks" do
16
+ setup do
17
+ @tasks = Task.find :all, :params => {:project_id => 17820}
18
+ end
19
+ should "return an array" do
20
+ assert @tasks.is_a? Array
21
+ end
22
+ should "return Tasks" do
23
+ assert_equal 7, @tasks.size
24
+ assert @tasks.first.is_a? Task
25
+ end
26
+ end
27
+
28
+ context "Task" do
29
+ setup do
30
+ @task = Task.find 13161, :params => {:project_id => 17820}
31
+ end
32
+ should "return a Invoice" do
33
+ assert @task.is_a? Task
34
+ end
35
+ should "update and save" do
36
+ @task.name = 'Development'
37
+ assert @task.save
38
+ end
39
+ should "be destroyed" do
40
+ assert @task.destroy
41
+ end
42
+ end
43
+
44
+ #TODO - Add test for invalid resource
45
+ # Need support from fakeweb in order to achieve this
46
+
47
+ context "New Task" do
48
+ setup do
49
+ params = {
50
+ :project_id => '17820',
51
+ :name => 'Creative design'
52
+ }
53
+ @task = Task.new params
54
+ end
55
+ should "validate and save" do
56
+ assert @task.save_with_validation
57
+ end
58
+ end
59
+
60
+ end
data/test/test_helper.rb CHANGED
@@ -1,10 +1,93 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
3
  require 'shoulda'
4
+ require 'fakeweb'
5
+ require 'pp'
4
6
 
5
7
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
8
  $LOAD_PATH.unshift(File.dirname(__FILE__))
9
+
7
10
  require 'freeagent_api'
11
+ include Freeagent
12
+
13
+ Freeagent.authenticate({
14
+ :domain => 'testuser.freeagentcentral.com',
15
+ :username => 'testuser',
16
+ :password => 'testpass'})
17
+
18
+ FakeWeb.allow_net_connect = false
19
+
20
+ def stub_file(path)
21
+ File.join(File.dirname(__FILE__), 'stubs', path)
22
+ end
23
+
24
+ def fake_it_all
25
+ FakeWeb.clean_registry
26
+
27
+ site_url = 'https://testuser:testpass@testuser.freeagentcentral.com'
28
+
29
+ # GET URLs
30
+ { '/company/invoice_timeline.xml' => File.join('company', 'invoice_timeline'),
31
+ '/company/tax_timeline.xml' => File.join('company', 'tax_timeline'),
32
+ '/contacts.xml' => File.join('contacts', 'find_all'),
33
+ '/contacts/27309.xml' => File.join('contacts', 'find_single'),
34
+ '/projects.xml' => File.join('projects', 'find_all'),
35
+ '/projects/17820.xml' => File.join('projects', 'find_single'),
36
+ '/projects/17820/tasks.xml' => File.join('tasks', 'find_all'),
37
+ '/projects/17820/tasks/13161.xml' => File.join('tasks', 'find_single'),
38
+ '/invoices.xml' => File.join('invoices', 'find_all'),
39
+ '/invoices/73867.xml' => File.join('invoices', 'find_single'),
40
+ '/projects/17820/invoices.xml' => File.join('projects', 'invoices'),
41
+ '/invoices/73867/invoice_items.xml' => File.join('invoice_items', 'find_all'),
42
+ '/invoices/73867/invoice_items/169399.xml' => File.join('invoice_items', 'find_single'),
43
+ '/timeslips.xml?view=2009-10-01_2009-10-10' => File.join('timeslips', 'find_all'),
44
+ '/timeslips/84445.xml' => File.join('timeslips', 'find_single'),
45
+ '/projects/17820/timeslips.xml' => File.join('projects', 'timeslips'),
46
+ }.each do |path, stub|
47
+ FakeWeb.register_uri(:get, site_url+path, :response => stub_file(stub))
48
+ end
49
+
50
+ # POST URLs
51
+ { '/contacts.xml' => File.join('http', '201'),
52
+ '/projects.xml' => File.join('http', '201'),
53
+ '/projects/17820/tasks.xml' => File.join('http', '201'),
54
+ '/invoices.xml' => File.join('http', '201'),
55
+ '/invoices/73867/invoice_items.xml' => File.join('http', '201'),
56
+ '/timeslips.xml' => File.join('http', '201'),
57
+ }.each do |path, stub|
58
+ FakeWeb.register_uri(:post, site_url+path, :response => stub_file(stub))
59
+ end
60
+
61
+ # PUT URLs
62
+ { '/contacts/27309.xml' => File.join('http', '200'),
63
+ '/projects/17820.xml' => File.join('http', '200'),
64
+ '/projects/17820/tasks/13161.xml' => File.join('http', '200'),
65
+ '/invoices/73867.xml' => File.join('http', '200'),
66
+ '/invoices/73867/mark_as_draft.xml' => File.join('http', '200'),
67
+ '/invoices/73867/mark_as_sent.xml' => File.join('http', '200'),
68
+ '/invoices/73867/mark_as_cancelled.xml' => File.join('http', '200'),
69
+ '/invoices/66913.xml' => File.join('http', '200'),
70
+ '/invoices/73867/invoice_items/169399.xml' => File.join('http', '200'),
71
+ '/timeslips/84445.xml' => File.join('http', '200'),
72
+ '/timeslips/74814.xml' => File.join('http', '200'),
73
+ }.each do |path, stub|
74
+ FakeWeb.register_uri(:put, site_url+path, :response => stub_file(stub))
75
+ end
76
+
77
+ # DELETE URLs
78
+ { '/contacts/27309.xml' => File.join('http', '200'),
79
+ '/projects/17820.xml' => File.join('http', '200'),
80
+ '/projects/17820/tasks/13161.xml' => File.join('http', '200'),
81
+ '/invoices/73867.xml' => File.join('http', '200'),
82
+ '/invoices/66913.xml' => File.join('http', '200'),
83
+ '/invoices/73867/invoice_items/169399.xml' => File.join('http', '200'),
84
+ '/timeslips/84445.xml' => File.join('http', '200'),
85
+ '/timeslips/74814.xml' => File.join('http', '200'),
86
+ }.each do |path, stub|
87
+ FakeWeb.register_uri(:delete, site_url+path, :response => stub_file(stub))
88
+ end
89
+
90
+ end
8
91
 
9
92
  class Test::Unit::TestCase
10
93
  end
@@ -0,0 +1,62 @@
1
+ require 'test_helper'
2
+
3
+ class TimeslipTest < Test::Unit::TestCase
4
+
5
+ context "Timeslip class" do
6
+ should "have correct collection path" do
7
+ assert_equal '/timeslips.xml', Timeslip.collection_path
8
+ end
9
+ should "have correct element path" do
10
+ assert_equal '/timeslips/first.xml', Timeslip.element_path(:first)
11
+ assert_equal '/timeslips/1000.xml', Timeslip.element_path(1000)
12
+ end
13
+ end
14
+
15
+ context "Timeslips" do
16
+ setup do
17
+ @timeslips = Timeslip.find :all, :params => {:from => '2009-10-01', :to => '2009-10-10'}
18
+ end
19
+ should "return an array" do
20
+ assert @timeslips.is_a? Array
21
+ end
22
+ should "return Timeslips" do
23
+ assert_equal 5, @timeslips.size
24
+ assert @timeslips.first.is_a? Timeslip
25
+ end
26
+ end
27
+
28
+ context "Timeslip" do
29
+ setup do
30
+ @timeslip = Timeslip.find 84445
31
+ end
32
+ should "return a Invoice" do
33
+ assert @timeslip.is_a? Timeslip
34
+ end
35
+ should "update and save" do
36
+ @timeslip.hours = '10'
37
+ assert @timeslip.save
38
+ end
39
+ should "be destroyed" do
40
+ assert @timeslip.destroy
41
+ end
42
+ end
43
+
44
+ #TODO - Add test for invalid resource
45
+ # Need support from fakeweb in order to achieve this
46
+
47
+ context "New Timeslip" do
48
+ setup do
49
+ params = {
50
+ :user_id => '5193',
51
+ :hours => '4',
52
+ :dated_on => '2009-10-05T00:00:00Z',
53
+ :task_id => '12683',
54
+ }
55
+ @timeslip = Timeslip.new params
56
+ end
57
+ should "validate and save" do
58
+ assert @timeslip.save_with_validation
59
+ end
60
+ end
61
+
62
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freeagent_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Russell
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-14 00:00:00 +01:00
12
+ date: 2009-10-27 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -23,18 +23,8 @@ dependencies:
23
23
  version: "0"
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
- name: activesupport
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
34
- version:
35
- - !ruby/object:Gem::Dependency
36
- name: nokogiri
37
- type: :runtime
26
+ name: fakeweb
27
+ type: :development
38
28
  version_requirement:
39
29
  version_requirements: !ruby/object:Gem::Requirement
40
30
  requirements:
@@ -43,7 +33,7 @@ dependencies:
43
33
  version: "0"
44
34
  version:
45
35
  - !ruby/object:Gem::Dependency
46
- name: api_cache
36
+ name: activeresource
47
37
  type: :runtime
48
38
  version_requirement:
49
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -52,7 +42,7 @@ dependencies:
52
42
  - !ruby/object:Gem::Version
53
43
  version: "0"
54
44
  version:
55
- description: This is an early development version of a Ruby wrapper for the Freeagent API. Currently this only supports GET requests (POST will follow shortly) and not all API methods are currently supported (more will follow).
45
+ description: "This is an ActiveResource Ruby wrapper for the Freeagent API. Currently supports the following API resources: Company, Contacts, Projects, Tasks, Invoices, Invoice Items, Timeslips (more will follow)."
56
46
  email: aaron@gc4.co.uk
57
47
  executables: []
58
48
 
@@ -70,8 +60,33 @@ files:
70
60
  - VERSION
71
61
  - freeagent_api.gemspec
72
62
  - lib/freeagent_api.rb
73
- - test/freeagent_api_test.rb
63
+ - test/authentication_test.rb
64
+ - test/company_test.rb
65
+ - test/contact_test.rb
66
+ - test/invoice_item_test.rb
67
+ - test/invoice_test.rb
68
+ - test/project_test.rb
69
+ - test/stubs/company/invoice_timeline
70
+ - test/stubs/company/tax_timeline
71
+ - test/stubs/contacts/find_all
72
+ - test/stubs/contacts/find_single
73
+ - test/stubs/http/200
74
+ - test/stubs/http/201
75
+ - test/stubs/invoice_items/find_all
76
+ - test/stubs/invoice_items/find_single
77
+ - test/stubs/invoices/find_all
78
+ - test/stubs/invoices/find_single
79
+ - test/stubs/projects/find_all
80
+ - test/stubs/projects/find_single
81
+ - test/stubs/projects/invoices
82
+ - test/stubs/projects/timeslips
83
+ - test/stubs/tasks/find_all
84
+ - test/stubs/tasks/find_single
85
+ - test/stubs/timeslips/find_all
86
+ - test/stubs/timeslips/find_single
87
+ - test/task_test.rb
74
88
  - test/test_helper.rb
89
+ - test/timeslip_test.rb
75
90
  has_rdoc: true
76
91
  homepage: http://github.com/aaronrussell/freeagent_api
77
92
  licenses: []
@@ -99,7 +114,14 @@ rubyforge_project:
99
114
  rubygems_version: 1.3.5
100
115
  signing_key:
101
116
  specification_version: 3
102
- summary: Simple Ruby interface to the Freeagent Central API.
117
+ summary: ActiveResource Ruby wrapper for the Freeagent Central API.
103
118
  test_files:
104
- - test/freeagent_api_test.rb
119
+ - test/authentication_test.rb
120
+ - test/company_test.rb
121
+ - test/contact_test.rb
122
+ - test/invoice_item_test.rb
123
+ - test/invoice_test.rb
124
+ - test/project_test.rb
125
+ - test/task_test.rb
105
126
  - test/test_helper.rb
127
+ - test/timeslip_test.rb