aiaio-harvest 0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/HISTORY +3 -0
  2. data/LICENSE +23 -0
  3. data/README.rdoc +146 -0
  4. data/Rakefile +44 -0
  5. data/lib/harvest.rb +36 -0
  6. data/lib/harvest/base.rb +71 -0
  7. data/lib/harvest/harvest_resource.rb +15 -0
  8. data/lib/harvest/plugins/active_resource_inheritable_headers.rb +36 -0
  9. data/lib/harvest/plugins/toggleable.rb +12 -0
  10. data/lib/harvest/resources/client.rb +8 -0
  11. data/lib/harvest/resources/entry.rb +34 -0
  12. data/lib/harvest/resources/expense.rb +22 -0
  13. data/lib/harvest/resources/expense_category.rb +7 -0
  14. data/lib/harvest/resources/person.rb +44 -0
  15. data/lib/harvest/resources/project.rb +51 -0
  16. data/lib/harvest/resources/task.rb +8 -0
  17. data/lib/harvest/resources/task_assignment.rb +27 -0
  18. data/lib/harvest/resources/user_assignment.rb +27 -0
  19. data/test/integration/client_integration.rb +17 -0
  20. data/test/integration/client_teardown.rb +11 -0
  21. data/test/integration/expense_category_integration.rb +16 -0
  22. data/test/integration/expense_category_teardown.rb +12 -0
  23. data/test/integration/harvest_integration_test.rb +47 -0
  24. data/test/integration/project_teardown.rb +12 -0
  25. data/test/integration/task_integration.rb +19 -0
  26. data/test/integration/task_teardown.rb +12 -0
  27. data/test/test_helper.rb +51 -0
  28. data/test/unit/base_test.rb +71 -0
  29. data/test/unit/resources/client_test.rb +82 -0
  30. data/test/unit/resources/expense_category_test.rb +49 -0
  31. data/test/unit/resources/expense_test.rb +14 -0
  32. data/test/unit/resources/person_test.rb +151 -0
  33. data/test/unit/resources/project_test.rb +154 -0
  34. data/test/unit/resources/task_assignment_test.rb +72 -0
  35. data/test/unit/resources/task_test.rb +82 -0
  36. data/test/unit/resources/user_assignment_test.rb +71 -0
  37. metadata +106 -0
@@ -0,0 +1,72 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ class ExpenseAssignmentTest < Test::Unit::TestCase
4
+
5
+ def setup_resources
6
+ @task_assignment = {:id => 1, :project_id => 5}.to_xml(:root => "task_assignment")
7
+ @task_assignments = [{:id => 1, :project_id => 5}].to_xml(:root => "task_assignments")
8
+ end
9
+
10
+ def mock_responses
11
+ ActiveResource::HttpMock.respond_to do |mock|
12
+ mock.get "/task_assignments.xml", {}, @task_assignments
13
+ mock.get "/task_assignments/1.xml", {}, @task_assignment
14
+ mock.post "/task_assignments.xml", {}, @task_assignment, 201, "Location" => "/task_assignments/5.xml"
15
+ mock.put "/task_assignments/1.xml", {}, nil, 200
16
+ mock.delete "/task_assignments/1.xml", {}, nil, 200
17
+ mock.put "/task_assignments/1/toggle.xml", {}, nil, 200
18
+ end
19
+ end
20
+
21
+ context "task_assignment actions" do
22
+ setup do
23
+ setup_resources
24
+ mock_responses
25
+ end
26
+
27
+ should "get index" do
28
+ Harvest::Resources::TaskAssignment.find(:all)
29
+ expected_request = ActiveResource::Request.new(:get, "/task_assignments.xml")
30
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
31
+ end
32
+
33
+ should "get a single task_assignment" do
34
+ Harvest::Resources::TaskAssignment.find(1)
35
+ expected_request = ActiveResource::Request.new(:get, "/task_assignments/1.xml")
36
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
37
+ end
38
+
39
+ should "create a new task_assignment" do
40
+ task_assignment = Harvest::Resources::TaskAssignment.new(:project_id => 5)
41
+ task_assignment.save
42
+ expected_request = ActiveResource::Request.new(:post, "/task_assignments.xml")
43
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
44
+ end
45
+
46
+ should "update an existing task_assignment" do
47
+ task_assignment = Harvest::Resources::TaskAssignment.find(1)
48
+ task_assignment.name = "Admin"
49
+ task_assignment.save
50
+ expected_request = ActiveResource::Request.new(:put, "/task_assignments/1.xml")
51
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
52
+ end
53
+
54
+ should "delete an existing task_assignment" do
55
+ Harvest::Resources::TaskAssignment.delete(1)
56
+ expected_request = ActiveResource::Request.new(:delete, "/task_assignments/1.xml")
57
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
58
+ end
59
+
60
+ end
61
+
62
+ context "TaskAssignment class" do
63
+
64
+ should "adjust the site setting when the project_id is set" do
65
+ task_class = Harvest::Resources::TaskAssignment.clone
66
+ task_class.project_id = 5
67
+ assert_equal "http://example.com/projects/5", task_class.site.to_s
68
+ end
69
+
70
+ end
71
+
72
+ end
@@ -0,0 +1,82 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ class TaskTest < Test::Unit::TestCase
4
+
5
+ def setup_resources
6
+ @task = {:id => 1, :name => "Admin"}.to_xml(:root => "task")
7
+ @tasks = [{:id => 1, :name => "Admin"}].to_xml(:root => "tasks")
8
+ end
9
+
10
+ def mock_responses
11
+ ActiveResource::HttpMock.respond_to do |mock|
12
+ mock.get "/tasks.xml", {}, @tasks
13
+ mock.get "/tasks/1.xml", {}, @task
14
+ mock.post "/tasks.xml", {}, @task, 201, "Location" => "/tasks/5.xml"
15
+ mock.put "/tasks/1.xml", {}, nil, 200
16
+ mock.delete "/tasks/1.xml", {}, nil, 200
17
+ mock.put "/tasks/1/toggle.xml", {}, nil, 200
18
+ end
19
+ end
20
+
21
+ context "Task actions" do
22
+ setup do
23
+ setup_resources
24
+ mock_responses
25
+ end
26
+
27
+ should "get index" do
28
+ Harvest::Resources::Task.find(:all)
29
+ expected_request = ActiveResource::Request.new(:get, "/tasks.xml")
30
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
31
+ end
32
+
33
+ should "get a single task" do
34
+ Harvest::Resources::Task.find(1)
35
+ expected_request = ActiveResource::Request.new(:get, "/tasks/1.xml")
36
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
37
+ end
38
+
39
+ should "create a new task" do
40
+ task = Harvest::Resources::Task.new(:name => "Admin")
41
+ task.save
42
+ expected_request = ActiveResource::Request.new(:post, "/tasks.xml")
43
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
44
+ end
45
+
46
+ should "update an existing task" do
47
+ task = Harvest::Resources::Task.find(1)
48
+ task.name = "Admin"
49
+ task.save
50
+ expected_request = ActiveResource::Request.new(:put, "/tasks/1.xml")
51
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
52
+ end
53
+
54
+ should "delete an existing task" do
55
+ Harvest::Resources::Task.delete(1)
56
+ expected_request = ActiveResource::Request.new(:delete, "/tasks/1.xml")
57
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
58
+ end
59
+
60
+ end
61
+
62
+ context "Toggling active/inactive status" do
63
+ setup do
64
+ setup_resources
65
+ mock_responses
66
+ end
67
+
68
+ should "hit the toggle method" do
69
+ task = Harvest::Resources::Task.find(1)
70
+ task.toggle
71
+ expected_request = ActiveResource::Request.new(:put, "/tasks/1/toggle.xml")
72
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
73
+ end
74
+
75
+ should "return 200 Success toggle method" do
76
+ task = Harvest::Resources::Task.find(1)
77
+ assert task.toggle.code == 200
78
+ end
79
+
80
+ end
81
+
82
+ end
@@ -0,0 +1,71 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ class UserAssignmentTest < Test::Unit::TestCase
4
+
5
+ def setup_resources
6
+ @user_assignment = {:id => 1, :project_id => 5}.to_xml(:root => "user_assignment")
7
+ @user_assignments = [{:id => 1, :project_id => 5}].to_xml(:root => "user_assignments")
8
+ end
9
+
10
+ def mock_responses
11
+ ActiveResource::HttpMock.respond_to do |mock|
12
+ mock.get "/user_assignments.xml", {}, @user_assignments
13
+ mock.get "/user_assignments/1.xml", {}, @user_assignment
14
+ mock.post "/user_assignments.xml", {}, @user_assignment, 201, "Location" => "/user_assignments/5.xml"
15
+ mock.put "/user_assignments/1.xml", {}, nil, 200
16
+ mock.delete "/user_assignments/1.xml", {}, nil, 200
17
+ mock.put "/user_assignments/1/toggle.xml", {}, nil, 200
18
+ end
19
+ end
20
+
21
+ context "user_assignment actions" do
22
+ setup do
23
+ setup_resources
24
+ mock_responses
25
+ end
26
+
27
+ should "get index" do
28
+ Harvest::Resources::UserAssignment.find(:all)
29
+ expected_request = ActiveResource::Request.new(:get, "/user_assignments.xml")
30
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
31
+ end
32
+
33
+ should "get a single user_assignment" do
34
+ Harvest::Resources::UserAssignment.find(1)
35
+ expected_request = ActiveResource::Request.new(:get, "/user_assignments/1.xml")
36
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
37
+ end
38
+
39
+ should "create a new user_assignment" do
40
+ user_assignment = Harvest::Resources::UserAssignment.new(:project_id => 5)
41
+ user_assignment.save
42
+ expected_request = ActiveResource::Request.new(:post, "/user_assignments.xml")
43
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
44
+ end
45
+
46
+ should "update an existing user_assignment" do
47
+ user_assignment = Harvest::Resources::UserAssignment.find(1)
48
+ user_assignment.name = "Admin"
49
+ user_assignment.save
50
+ expected_request = ActiveResource::Request.new(:put, "/user_assignments/1.xml")
51
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
52
+ end
53
+
54
+ should "delete an existing user_assignment" do
55
+ Harvest::Resources::UserAssignment.delete(1)
56
+ expected_request = ActiveResource::Request.new(:delete, "/user_assignments/1.xml")
57
+ assert ActiveResource::HttpMock.requests.include?(expected_request)
58
+ end
59
+
60
+ end
61
+
62
+ context "UserAssignment class" do
63
+
64
+ should "adjust the site setting when the project_id is set" do
65
+ user_class = Harvest::Resources::UserAssignment.clone
66
+ user_class.project_id = 5
67
+ assert_equal "http://example.com/projects/5", user_class.site.to_s
68
+ end
69
+
70
+ end
71
+ end
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aiaio-harvest
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.8"
5
+ platform: ruby
6
+ authors:
7
+ - Kyle Banker
8
+ - Alexander Interactive, Inc.
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2008-12-17 00:00:00 -08:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: activeresource
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "2.1"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: aiaio-active_resource_throttle
27
+ version_requirement:
28
+ version_requirements: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: "1.0"
33
+ version:
34
+ description:
35
+ email: knb@alexanderinteractive.com
36
+ executables: []
37
+
38
+ extensions: []
39
+
40
+ extra_rdoc_files:
41
+ - README.rdoc
42
+ files:
43
+ - HISTORY
44
+ - LICENSE
45
+ - Rakefile
46
+ - README.rdoc
47
+ - lib/harvest/plugins/active_resource_inheritable_headers.rb
48
+ - lib/harvest/plugins/toggleable.rb
49
+ - lib/harvest/resources/client.rb
50
+ - lib/harvest/resources/entry.rb
51
+ - lib/harvest/resources/expense.rb
52
+ - lib/harvest/resources/expense_category.rb
53
+ - lib/harvest/resources/person.rb
54
+ - lib/harvest/resources/project.rb
55
+ - lib/harvest/resources/task.rb
56
+ - lib/harvest/resources/task_assignment.rb
57
+ - lib/harvest/resources/user_assignment.rb
58
+ - lib/harvest/base.rb
59
+ - lib/harvest/harvest_resource.rb
60
+ - lib/harvest.rb
61
+ has_rdoc: true
62
+ homepage: http://github.com/aiaio/harvest
63
+ post_install_message:
64
+ rdoc_options:
65
+ - --main
66
+ - README.rdoc
67
+ require_paths:
68
+ - lib
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: "0"
80
+ version:
81
+ requirements: []
82
+
83
+ rubyforge_project:
84
+ rubygems_version: 1.2.0
85
+ signing_key:
86
+ specification_version: 2
87
+ summary: A wrapper for the Harvest Api. See http://getharvest.com/api for details.
88
+ test_files:
89
+ - test/test_helper.rb
90
+ - test/unit/base_test.rb
91
+ - test/unit/resources/client_test.rb
92
+ - test/unit/resources/expense_test.rb
93
+ - test/unit/resources/expense_category_test.rb
94
+ - test/unit/resources/person_test.rb
95
+ - test/unit/resources/project_test.rb
96
+ - test/unit/resources/task_test.rb
97
+ - test/unit/resources/task_assignment_test.rb
98
+ - test/unit/resources/user_assignment_test.rb
99
+ - test/integration/client_integration.rb
100
+ - test/integration/task_integration.rb
101
+ - test/integration/expense_category_integration.rb
102
+ - test/integration/harvest_integration_test.rb
103
+ - test/integration/client_teardown.rb
104
+ - test/integration/expense_category_teardown.rb
105
+ - test/integration/project_teardown.rb
106
+ - test/integration/task_teardown.rb