freelancer 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (205) hide show
  1. data/.gitignore +3 -0
  2. data/Gemfile +14 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +56 -0
  5. data/Rakefile +34 -0
  6. data/VERSION +1 -0
  7. data/freelancer.gemspec +299 -0
  8. data/init.rb +2 -0
  9. data/lib/freelancer.rb +59 -0
  10. data/lib/freelancer/api.rb +20 -0
  11. data/lib/freelancer/api/common.rb +58 -0
  12. data/lib/freelancer/api/employer.rb +56 -0
  13. data/lib/freelancer/api/freelancer.rb +36 -0
  14. data/lib/freelancer/api/job.rb +46 -0
  15. data/lib/freelancer/api/message.rb +89 -0
  16. data/lib/freelancer/api/notification.rb +25 -0
  17. data/lib/freelancer/api/payment.rb +123 -0
  18. data/lib/freelancer/api/profile.rb +30 -0
  19. data/lib/freelancer/api/project.rb +133 -0
  20. data/lib/freelancer/api/user.rb +86 -0
  21. data/lib/freelancer/client.rb +152 -0
  22. data/lib/freelancer/extensions/hash.rb +11 -0
  23. data/lib/freelancer/models/address.rb +46 -0
  24. data/lib/freelancer/models/balance.rb +22 -0
  25. data/lib/freelancer/models/bid.rb +41 -0
  26. data/lib/freelancer/models/config_version.rb +21 -0
  27. data/lib/freelancer/models/eligibility.rb +23 -0
  28. data/lib/freelancer/models/job.rb +33 -0
  29. data/lib/freelancer/models/job_category.rb +18 -0
  30. data/lib/freelancer/models/message.rb +32 -0
  31. data/lib/freelancer/models/milestone.rb +57 -0
  32. data/lib/freelancer/models/news.rb +15 -0
  33. data/lib/freelancer/models/notification.rb +15 -0
  34. data/lib/freelancer/models/notification_status.rb +45 -0
  35. data/lib/freelancer/models/project.rb +116 -0
  36. data/lib/freelancer/models/project_budget.rb +21 -0
  37. data/lib/freelancer/models/project_fee.rb +18 -0
  38. data/lib/freelancer/models/project_options.rb +34 -0
  39. data/lib/freelancer/models/rating.rb +21 -0
  40. data/lib/freelancer/models/review.rb +87 -0
  41. data/lib/freelancer/models/transaction.rb +39 -0
  42. data/lib/freelancer/models/user.rb +225 -0
  43. data/lib/freelancer/models/withdrawal.rb +51 -0
  44. data/lib/freelancer/models/withdrawal_fee.rb +39 -0
  45. data/lib/freelancer/support/json_mapper.rb +95 -0
  46. data/test/fixtures/common/get_config_version.json +1 -0
  47. data/test/fixtures/common/get_config_version.xml +5 -0
  48. data/test/fixtures/common/get_pending_feedback.json +1 -0
  49. data/test/fixtures/common/get_pending_feedback.xml +20 -0
  50. data/test/fixtures/common/get_terms.json +1 -0
  51. data/test/fixtures/common/get_terms.xml +4 -0
  52. data/test/fixtures/common/post_feedback.json +1 -0
  53. data/test/fixtures/common/post_feedback.xml +4 -0
  54. data/test/fixtures/common/post_reply_for_feedback.json +1 -0
  55. data/test/fixtures/common/post_reply_for_feedback.xml +4 -0
  56. data/test/fixtures/common/request_cancel_project.json +1 -0
  57. data/test/fixtures/common/request_cancel_project.xml +4 -0
  58. data/test/fixtures/common/request_withdraw_feedback.json +1 -0
  59. data/test/fixtures/common/request_withdraw_feedback.xml +4 -0
  60. data/test/fixtures/employer/choose_winner_for_project.json +1 -0
  61. data/test/fixtures/employer/choose_winner_for_project.xml +3 -0
  62. data/test/fixtures/employer/delete_draft_project.json +1 -0
  63. data/test/fixtures/employer/delete_draft_project.xml +4 -0
  64. data/test/fixtures/employer/eligible_for_trial_project.json +1 -0
  65. data/test/fixtures/employer/eligible_for_trial_project.xml +5 -0
  66. data/test/fixtures/employer/get_posted_project_list.json +1 -0
  67. data/test/fixtures/employer/get_posted_project_list.xml +38 -0
  68. data/test/fixtures/employer/invite_user_for_project.json +1 -0
  69. data/test/fixtures/employer/invite_user_for_project.xml +4 -0
  70. data/test/fixtures/employer/post_new_draft_project.json +1 -0
  71. data/test/fixtures/employer/post_new_draft_project.xml +5 -0
  72. data/test/fixtures/employer/post_new_project.json +1 -0
  73. data/test/fixtures/employer/post_new_project.xml +5 -0
  74. data/test/fixtures/employer/post_new_trial_project.json +1 -0
  75. data/test/fixtures/employer/post_new_trial_project.xml +5 -0
  76. data/test/fixtures/employer/publish_draft_project.json +1 -0
  77. data/test/fixtures/employer/publish_draft_project.xml +4 -0
  78. data/test/fixtures/employer/update_project_details.json +1 -0
  79. data/test/fixtures/employer/update_project_details.xml +4 -0
  80. data/test/fixtures/employer/upgrade_trial_project.json +1 -0
  81. data/test/fixtures/employer/upgrade_trial_project.xml +4 -0
  82. data/test/fixtures/freelancer/accept_bid_won.json +1 -0
  83. data/test/fixtures/freelancer/accept_bid_won.xml +4 -0
  84. data/test/fixtures/freelancer/get_project_list_for_placed_bids.json +1 -0
  85. data/test/fixtures/freelancer/get_project_list_for_placed_bids.xml +16 -0
  86. data/test/fixtures/freelancer/place_bid_on_project.json +1 -0
  87. data/test/fixtures/freelancer/place_bid_on_project.xml +4 -0
  88. data/test/fixtures/freelancer/retract_bid_from_project.json +1 -0
  89. data/test/fixtures/freelancer/retract_bid_from_project.xml +4 -0
  90. data/test/fixtures/job/get_category_job_list.json +1 -0
  91. data/test/fixtures/job/get_category_job_list.xml +34 -0
  92. data/test/fixtures/job/get_job_list.json +1 -0
  93. data/test/fixtures/job/get_job_list.xml +17 -0
  94. data/test/fixtures/job/get_my_job_list.json +1 -0
  95. data/test/fixtures/job/get_my_job_list.xml +11 -0
  96. data/test/fixtures/message/get_inbox_messages.json +1 -0
  97. data/test/fixtures/message/get_inbox_messages.xml +22 -0
  98. data/test/fixtures/message/get_sent_messages.json +1 -0
  99. data/test/fixtures/message/get_sent_messages.xml +22 -0
  100. data/test/fixtures/message/get_unread_count.json +1 -0
  101. data/test/fixtures/message/get_unread_count.xml +4 -0
  102. data/test/fixtures/message/load_message_thread.json +1 -0
  103. data/test/fixtures/message/load_message_thread.xml +54 -0
  104. data/test/fixtures/message/mark_message_as_read.json +1 -0
  105. data/test/fixtures/message/mark_message_as_read.xml +4 -0
  106. data/test/fixtures/message/send_message.json +1 -0
  107. data/test/fixtures/message/send_message.xml +4 -0
  108. data/test/fixtures/notification/get_news.json +1 -0
  109. data/test/fixtures/notification/get_news.xml +14 -0
  110. data/test/fixtures/notification/get_notification.json +1 -0
  111. data/test/fixtures/notification/get_notification.xml +10 -0
  112. data/test/fixtures/payment/cancel_milestone.json +1 -0
  113. data/test/fixtures/payment/cancel_milestone.xml +4 -0
  114. data/test/fixtures/payment/create_milestone_payment.json +1 -0
  115. data/test/fixtures/payment/create_milestone_payment.xml +4 -0
  116. data/test/fixtures/payment/get_account_balance_status.json +1 -0
  117. data/test/fixtures/payment/get_account_balance_status.xml +12 -0
  118. data/test/fixtures/payment/get_account_milestone_list.json +1 -0
  119. data/test/fixtures/payment/get_account_milestone_list.xml +30 -0
  120. data/test/fixtures/payment/get_account_transaction_list.json +1 -0
  121. data/test/fixtures/payment/get_account_transaction_list.xml +57 -0
  122. data/test/fixtures/payment/get_account_withdrawal_list.json +1 -0
  123. data/test/fixtures/payment/get_account_withdrawal_list.xml +42 -0
  124. data/test/fixtures/payment/get_balance.json +1 -0
  125. data/test/fixtures/payment/get_balance.xml +4 -0
  126. data/test/fixtures/payment/get_project_list_for_transfer.json +1 -0
  127. data/test/fixtures/payment/get_project_list_for_transfer.xml +52 -0
  128. data/test/fixtures/payment/get_withdrawal_fees.json +1 -0
  129. data/test/fixtures/payment/get_withdrawal_fees.xml +41 -0
  130. data/test/fixtures/payment/prepare_transfer.json +1 -0
  131. data/test/fixtures/payment/prepare_transfer.xml +4 -0
  132. data/test/fixtures/payment/release_milestone.json +1 -0
  133. data/test/fixtures/payment/release_milestone.xml +4 -0
  134. data/test/fixtures/payment/request_cancel_withdrawal.json +1 -0
  135. data/test/fixtures/payment/request_cancel_withdrawal.xml +4 -0
  136. data/test/fixtures/payment/request_release_milestone.json +1 -0
  137. data/test/fixtures/payment/request_release_milestone.xml +4 -0
  138. data/test/fixtures/payment/request_withdrawal.json +1 -0
  139. data/test/fixtures/payment/request_withdrawal.xml +6 -0
  140. data/test/fixtures/payment/transfer_money.json +1 -0
  141. data/test/fixtures/payment/transfer_money.xml +4 -0
  142. data/test/fixtures/profile/get_account_details.json +1 -0
  143. data/test/fixtures/profile/get_account_details.xml +71 -0
  144. data/test/fixtures/profile/get_profile_info.json +1 -0
  145. data/test/fixtures/profile/get_profile_info.xml +53 -0
  146. data/test/fixtures/profile/set_profile_info.json +1 -0
  147. data/test/fixtures/profile/set_profile_info.xml +4 -0
  148. data/test/fixtures/project/get_bids_details.json +1 -0
  149. data/test/fixtures/project/get_bids_details.xml +19 -0
  150. data/test/fixtures/project/get_project_budget_config.json +1 -0
  151. data/test/fixtures/project/get_project_budget_config.xml +42 -0
  152. data/test/fixtures/project/get_project_details.json +1 -0
  153. data/test/fixtures/project/get_project_details.xml +78 -0
  154. data/test/fixtures/project/get_project_fees.json +1 -0
  155. data/test/fixtures/project/get_project_fees.xml +31 -0
  156. data/test/fixtures/project/get_public_messages.json +1 -0
  157. data/test/fixtures/project/get_public_messages.xml +27 -0
  158. data/test/fixtures/project/get_sent_messages.xml +22 -0
  159. data/test/fixtures/project/get_unread_count.xml +4 -0
  160. data/test/fixtures/project/load_message_thread.xml +54 -0
  161. data/test/fixtures/project/mark_message_as_read.xml +4 -0
  162. data/test/fixtures/project/post_public_message.json +1 -0
  163. data/test/fixtures/project/post_public_message.xml +4 -0
  164. data/test/fixtures/project/search_projects.json +1 -0
  165. data/test/fixtures/project/search_projects.xml +37 -0
  166. data/test/fixtures/project/send_message.xml +4 -0
  167. data/test/fixtures/user/get_user_details.json +1 -0
  168. data/test/fixtures/user/get_user_details.xml +32 -0
  169. data/test/fixtures/user/get_user_feedback.json +1 -0
  170. data/test/fixtures/user/get_user_feedback.xml +58 -0
  171. data/test/fixtures/user/get_users_by_search.json +1 -0
  172. data/test/fixtures/user/get_users_by_search.xml +26 -0
  173. data/test/freelancer/api/common_api_test.rb +82 -0
  174. data/test/freelancer/api/employer_api_test.rb +105 -0
  175. data/test/freelancer/api/freelancer_api_test.rb +72 -0
  176. data/test/freelancer/api/job_api_test.rb +76 -0
  177. data/test/freelancer/api/message_api_test.rb +144 -0
  178. data/test/freelancer/api/notification_api_test.rb +56 -0
  179. data/test/freelancer/api/payment_api_test.rb +225 -0
  180. data/test/freelancer/api/profile_api_test.rb +54 -0
  181. data/test/freelancer/api/project_api_test.rb +229 -0
  182. data/test/freelancer/api/user_api_test.rb +153 -0
  183. data/test/freelancer/client_test.rb +5 -0
  184. data/test/freelancer/models/balance_test.rb +24 -0
  185. data/test/freelancer/models/bid_test.rb +25 -0
  186. data/test/freelancer/models/config_version.rb +14 -0
  187. data/test/freelancer/models/eligibility_test.rb +14 -0
  188. data/test/freelancer/models/job_category_test.rb +16 -0
  189. data/test/freelancer/models/job_test.rb +19 -0
  190. data/test/freelancer/models/message_test.rb +42 -0
  191. data/test/freelancer/models/milestone_test.rb +21 -0
  192. data/test/freelancer/models/news_test.rb +15 -0
  193. data/test/freelancer/models/notification_test.rb +15 -0
  194. data/test/freelancer/models/project_budget_test.rb +18 -0
  195. data/test/freelancer/models/project_fee_test.rb +17 -0
  196. data/test/freelancer/models/project_test.rb +97 -0
  197. data/test/freelancer/models/review_test.rb +36 -0
  198. data/test/freelancer/models/transaction_test.rb +29 -0
  199. data/test/freelancer/models/user_test.rb +94 -0
  200. data/test/freelancer/models/withdrawal_fee_test.rb +19 -0
  201. data/test/freelancer/models/withdrawal_test.rb +20 -0
  202. data/test/freelancer/oauth_test.rb +112 -0
  203. data/test/freelancer_test.rb +1 -0
  204. data/test/test_helper.rb +42 -0
  205. metadata +427 -0
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
3
+ <count>2</count>
4
+ <items>
5
+ <message>
6
+ <projectid>658028</projectid>
7
+ <tousername>shaneyls</messagetousername>
8
+ <touserid>1289625</messagetouserid>
9
+ <datetime>2010-04-20 22:19:59</messagedatetime>
10
+ <message>posted by API</message>
11
+ <attachmentlink />
12
+ </message>
13
+ <message>
14
+ <projectid>658028</projectid>
15
+ <tousername>shaneyls</messagetousername>
16
+ <touserid>1289625</messagetouserid>
17
+ <datetime>2010-04-14 21:01:13</messagedatetime>
18
+ <message>posted by API</message>
19
+ <attachmentlink />
20
+ </message>
21
+ </items>
22
+ </xml-result>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
3
+ <unreadcount>2</unreadcount>
4
+ </xml-result>
@@ -0,0 +1,54 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
3
+ <count>4</count>
4
+ <items>
5
+ <message>
6
+ <id>13156760</id>
7
+ <projectid>585507</projectid>
8
+ <fromusername>lishengYul</fromusername>
9
+ <fromuserid>1346994</fromuserid>
10
+ <tousername>lyux</tousername>
11
+ <touserid>1289625</touserid>
12
+ <datetime>2010-01-08 02:45:05</datetime>
13
+ <text>Message text 1</text>
14
+ <new>0</new>
15
+ <attachmentlink />
16
+ </message>
17
+ <message>
18
+ <id>13156757</id>
19
+ <projectid>585507</projectid>
20
+ <fromusername>lishengYul</fromusername>
21
+ <fromuserid>1346994</fromuserid>
22
+ <tousername>lyux</tousername>
23
+ <touserid>1289625</touserid>
24
+ <datetime>2010-01-08 02:45:02</datetime>
25
+ <text>Message text 2</text>
26
+ <new>0</new>
27
+ <attachmentlink />
28
+ </message>
29
+ <message>
30
+ <id>13156140</id>
31
+ <projectid>585507</projectid>
32
+ <fromusername>lyux</fromusername>
33
+ <fromuserid>1289625</fromuserid>
34
+ <tousername>lishengYul</tousername>
35
+ <touserid>1346994</touserid>
36
+ <datetime>2010-01-08 01:58:19</datetime>
37
+ <text>Message text 3</text>
38
+ <new>0</new>
39
+ <attachmentlink />
40
+ </message>
41
+ <message>
42
+ <id>13156123</id>
43
+ <projectid>585507</projectid>
44
+ <fromusername>lyux</fromusername>
45
+ <fromuserid>1289625</fromuserid>
46
+ <tousername>lishengYul</tousername>
47
+ <touserid>1346994</touserid>
48
+ <datetime />
49
+ <text>Message text 4</text>
50
+ <new>0</new>
51
+ <attachmentlink />
52
+ </message>
53
+ </items>
54
+ </xml-result>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"count":2,"items":[{"projectid":150,"projectname":"Test Freelancer API2","bids":0,"averagebid":false,"jobtypecsv":".NET","startdate":"2010-06-06 19:08:32","timeleft":"-3 days and -4 hours","projecturl":"http://www.sandbox.freelancer.com/projects/150.html"},{"projectid":31,"projectname":"SnowTtigerLib test project1273451999","bids":0,"averagebid":false,"jobtypecsv":"CakePHP,PHP","startdate":"2010-05-10 00:39:35","timeleft":"-89 days and -22 hours","projecturl":"http://www.sandbox.freelancer.com/projects/31.html"}],"results_count":"52"}}
@@ -0,0 +1,37 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
3
+ <count>3</count>
4
+ <items>
5
+ <project>
6
+ <projectid>589171</projectid>
7
+ <projectname>rick+2 project 8</projectname>
8
+ <bids>0</bids>
9
+ <averagebid />
10
+ <jobtypecsv>.NET</jobtypecsv>
11
+ <startdate>2010-03-23 22:53:15</startdate>
12
+ <timeleft>44 days and 2 hours</timeleft>
13
+ <projecturl>http://www.lisheng.staging.getafreelancer.com/projects/589171.html</projecturl>
14
+ </project>
15
+ <project>
16
+ <projectid>589143</projectid>
17
+ <projectname>wxc2008 project 13</projectname>
18
+ <bids>0</bids>
19
+ <averagebid />
20
+ <jobtypecsv>.NET,Java</jobtypecsv>
21
+ <startdate>2010-03-22 02:14:29</startdate>
22
+ <timeleft>42 days and 5 hours</timeleft>
23
+ <projecturl>http://www.lisheng.staging.getafreelancer.com/projects/Java-NET/wxc-project.html</projecturl>
24
+ </project>
25
+ <project>
26
+ <projectid>589125</projectid>
27
+ <projectname>wxc2008 project 12</projectname>
28
+ <bids>0</bids>
29
+ <averagebid />
30
+ <jobtypecsv>.NET</jobtypecsv>
31
+ <startdate>2010-03-22 02:10:18</startdate>
32
+ <timeleft>42 days and 5 hours</timeleft>
33
+ <projecturl>http://www.lisheng.staging.getafreelancer.com/projects/589125.html</projecturl>
34
+ </project>
35
+ </items>
36
+ <results_count>144</results_count>
37
+ </xml-result>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"user":{"url":"http://www.sandbox.freelancer.com/users/123456.html","id":123456,"username":"test-user","logo_url":false,"profile_logo_url":"../../img/unknown.png","reg_unixtime":1275687444,"reg_date":"Fri, 04 Jun 2010 17:37:24 -0400","company":"Test Company","gold":1,"address":{"country":"Norway","city":"Oslo"},"hourlyrate":20,"rating":{"avg":"0","count":0},"provider_rating":{"avg":"0","count":0},"buyer_rating":{"avg":"0","count":0},"jobs":["JSP","Perl","PHP","Ruby &amp; Ruby on Rails"]}}
@@ -0,0 +1,32 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <User xmlns="http://api.freelancer.com/schemas/xml-0.1">
3
+ <url>http://www.sandbox.freelancer.com/users/1353594.html</url>
4
+ <id>1353594</id>
5
+ <username>lsy001</username>
6
+ <logo_url />
7
+ <reg_unixtime>1265161755</reg_unixtime>
8
+ <reg_date>Tue, 02 Feb 2010 20:49:15 -0500</reg_date>
9
+ <company>freelancer.com</company>
10
+ <gold>1</gold>
11
+ <address>
12
+ <country>Australia</country>
13
+ <city>Sydney</city>
14
+ </address>
15
+ <hourlyrate />
16
+ <rating>
17
+ <avg>9.25</avg>
18
+ <count>4</count>
19
+ </rating>
20
+ <provider_rating>
21
+ <avg>0</avg>
22
+ <count>0</count>
23
+ </provider_rating>
24
+ <buyer_rating>
25
+ <avg />
26
+ <count>4</count>
27
+ </buyer_rating>
28
+ <jobs>
29
+ <job>.NET</job>
30
+ <job>Java</job>
31
+ </jobs>
32
+ </User>
@@ -0,0 +1 @@
1
+ {"user":{"Userid":123456,"totalreviews":{"totalcounts":1,"items":[{"reviewername":"test-username","revieweruserid":123456,"projectname":"Test project name","projectid":123,"winnerbid":"300","reviewdate":"2010-05-24 07:23:18","rating":9,"commenttext":"Test comment","userreplyoncomment":"Test reply"}]}}}
@@ -0,0 +1,58 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <User>
3
+ <Userid>1353594</Userid>
4
+ <totalreviews>
5
+ <totalcounts>3</totalcounts>
6
+ <item>
7
+ <reviewername>shaneyls</reviewername>
8
+ <revieweruserid>1289625</revieweruserid>
9
+ <projectname>test for milestone payment XI</projectname>
10
+ <projectid>588920</projectid>
11
+ <winnerbid>250</winnerbid>
12
+ <reviewdate>2010-02-04 23:49:20</reviewdate>
13
+ <rating>10</rating>
14
+ <commenttext>Comment Text</commenttext>
15
+ <userreplyoncomment/>
16
+ </item>
17
+ <item>
18
+ <reviewername>shaneyls</reviewername>
19
+ <revieweruserid>1289625</revieweruserid>
20
+ <projectname>Deleted project #588917</projectname>
21
+ <projectid>588917</projectid>
22
+ <winnerbid>250</winnerbid>
23
+ <reviewdate>2010-02-04 22:10:31</reviewdate>
24
+ <rating>10</rating>
25
+ <commenttext>Sample comment</commenttext>
26
+ <userreplyoncomment/>
27
+ </item>
28
+ <item>
29
+ <reviewername>shaneyls</reviewername>
30
+ <revieweruserid>1289625</revieweruserid>
31
+ <projectname>Deleted project #588916</projectname>
32
+ <projectid>588916</projectid>
33
+ <winnerbid>250</winnerbid>
34
+ <reviewdate>2010-02-04 21:54:44</reviewdate>
35
+ <rating>10</rating>
36
+ <commenttext>Sample comment</commenttext>
37
+ <userreplyoncomment/>
38
+ </item>
39
+ </totalreviews>
40
+ <insignia>
41
+ <item>
42
+ <insignianame>logo-g</insignianame>
43
+ <insigniadesc>Grandmaster Logo Designer</insigniadesc>
44
+ </item>
45
+ <item>
46
+ <insignianame>freelancer-white</insignianame>
47
+ <insigniadesc>The Freelancer.com Quartermaster</insigniadesc>
48
+ </item>
49
+ <item>
50
+ <insignianame>freelancer-black</insignianame>
51
+ <insigniadesc>Freelancer.com Admin</insigniadesc>
52
+ </item>
53
+ <item>
54
+ <insignianame>UKmember</insignianame>
55
+ <insigniadesc>Foundation Freelancer.co.uk Member</insigniadesc>
56
+ </item>
57
+ </insignia>
58
+ </User>
@@ -0,0 +1 @@
1
+ {"json-result":{"count":1,"items":[{"username":"test-username","userid":"123456","company":null,"address":{"country":null,"city":null},"averagepricing":null}]}}
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
3
+ <count>2</count>
4
+ <items>
5
+ <User>
6
+ <username>lsy001</username>
7
+ <userid>1353594</userid>
8
+ <company>freelancer.com</company>
9
+ <address>
10
+ <country>Australia</country>
11
+ <city>Sydney</city>
12
+ </address>
13
+ <averagepricing />
14
+ </User>
15
+ <user>
16
+ <username>NovaStudios</username>
17
+ <userid>276498</userid>
18
+ <company>Nova Studios</company>
19
+ <address>
20
+ <country>Croatia (Hrvatska)</country>
21
+ <city>Viinada</city>
22
+ </address>
23
+ <averagepricing>20</averagepricing>
24
+ </user>
25
+ </items>
26
+ </xml-result>
@@ -0,0 +1,82 @@
1
+ require "test_helper"
2
+
3
+ class CommonApiTest < Test::Unit::TestCase
4
+
5
+ context "common api" do
6
+
7
+ setup do
8
+ @freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
9
+ consumer = OAuth::Consumer.new("consumer_token", "consumer_secret", { :site => "http://api.sandbox.freelancer.com" })
10
+ @freelancer.stubs(:consumer).returns(consumer)
11
+ @freelancer.authorize_from_access("access_token", "access_secret")
12
+ end
13
+
14
+ context "pending feedback" do
15
+
16
+ should "be able to retrieve" do
17
+
18
+ @freelancer.expects(:api_get).with("/Common/getPendingFeedback.json", {})
19
+ @freelancer.pending_feedback
20
+
21
+ end
22
+
23
+ should "be able to retrieve by type" do
24
+
25
+ @freelancer.expects(:api_get).with("/Common/getPendingFeedback.json", { :type => "P" })
26
+ @freelancer.pending_feedback(:type => "P")
27
+
28
+ end
29
+
30
+ should "parse response into a collection of projects" do
31
+
32
+ stub_api_get("/Common/getPendingFeedback.json", "common/get_pending_feedback.json")
33
+ projects = @freelancer.pending_feedback
34
+ projects.size.should == 1
35
+ projects.first.id.should == 280
36
+
37
+ end
38
+
39
+ end
40
+
41
+ context "config version" do
42
+
43
+ should "be able to retrieve" do
44
+
45
+ @freelancer.expects(:api_get).with("/Common/getConfigVersion.json", { :function => "withdrawalfee" })
46
+ @freelancer.config_version(:function => "withdrawalfee")
47
+
48
+ end
49
+
50
+ should "parse response into a config version model" do
51
+
52
+ stub_api_get("/Common/getConfigVersion.json?function=withdrawalfee", "common/get_config_version.json")
53
+ version = @freelancer.config_version(:function => "withdrawalfee")
54
+ version.function.should == "withdrawalfee"
55
+ version.version.should == 1
56
+
57
+ end
58
+
59
+ end
60
+
61
+ context "terms" do
62
+
63
+ should "be able to retrieve" do
64
+
65
+ @freelancer.expects(:api_get).with("/Common/getTerms.json")
66
+ @freelancer.terms
67
+
68
+ end
69
+
70
+ should "return the terms as a string" do
71
+
72
+ stub_api_get("/Common/getTerms.json", "common/get_terms.json")
73
+ terms = @freelancer.terms
74
+ terms.should == "Test terms"
75
+
76
+ end
77
+
78
+ end
79
+
80
+ end
81
+
82
+ end
@@ -0,0 +1,105 @@
1
+ require "test_helper"
2
+
3
+ class EmployerApiTest < Test::Unit::TestCase
4
+
5
+ context "employer api" do
6
+
7
+ setup do
8
+ @freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
9
+ consumer = OAuth::Consumer.new("consumer_token", "consumer_secret", { :site => "http://api.sandbox.freelancer.com" })
10
+ @freelancer.stubs(:consumer).returns(consumer)
11
+ @freelancer.authorize_from_access("access_token", "access_secret")
12
+ end
13
+
14
+ context "posted project list" do
15
+
16
+ should "be able to retrieve" do
17
+
18
+ @freelancer.expects(:api_get).with("/Employer/getPostedProjectList.json", {})
19
+ @freelancer.posted_projects
20
+
21
+ end
22
+
23
+ should "be able to retrieve by status" do
24
+
25
+ @freelancer.expects(:api_get).with("/Employer/getPostedProjectList.json", { :status => 1 })
26
+ @freelancer.posted_projects(:status => 1)
27
+
28
+ end
29
+
30
+ should "be able to retrieve by user id" do
31
+
32
+ @freelancer.expects(:api_get).with("/Employer/getPostedProjectList.json", { :userid => 1 })
33
+ @freelancer.posted_projects(:user_id => 1)
34
+
35
+ end
36
+
37
+ should "be able to retrieve by project id" do
38
+
39
+ @freelancer.expects(:api_get).with("/Employer/getPostedProjectList.json", { :projectid => 1 })
40
+ @freelancer.posted_projects(:project_id => 1)
41
+
42
+ end
43
+
44
+ should "be able to retrieve by type" do
45
+
46
+ @freelancer.expects(:api_get).with("/Employer/getPostedProjectList.json", { :projectoption => "trial" })
47
+ @freelancer.posted_projects(:type => "trial")
48
+
49
+ end
50
+
51
+ should "remove type param if set to active" do
52
+
53
+ @freelancer.expects(:api_get).with("/Employer/getPostedProjectList.json", {})
54
+ @freelancer.posted_projects(:type => "active")
55
+
56
+ end
57
+
58
+ should "be able to change result count" do
59
+
60
+ @freelancer.expects(:api_get).with("/Employer/getPostedProjectList.json", { :count => 10 })
61
+ @freelancer.posted_projects(:count => 10)
62
+
63
+ end
64
+
65
+ should "be able to change result page" do
66
+
67
+ @freelancer.expects(:api_get).with("/Employer/getPostedProjectList.json", { :page => 2 })
68
+ @freelancer.posted_projects(:page => 2)
69
+
70
+ end
71
+
72
+ should "parse response into a collection of projects" do
73
+
74
+ stub_api_get("/Employer/getPostedProjectList.json", "employer/get_posted_project_list.json")
75
+ projects = @freelancer.posted_projects
76
+ projects.size.should == 2
77
+ projects.first.id.should == 279
78
+
79
+ end
80
+
81
+ end
82
+
83
+ context "trial project eligibility" do
84
+
85
+ should "be able to query" do
86
+
87
+ @freelancer.expects(:api_get).with("/Employer/eligibleForTrialProject.json")
88
+ @freelancer.eligible_for_trial_project?
89
+
90
+ end
91
+
92
+ should "parse response into a eligibility model" do
93
+
94
+ stub_api_get("/Employer/eligibleForTrialProject.json", "employer/eligible_for_trial_project.json")
95
+ eligibility = @freelancer.eligible_for_trial_project
96
+ eligibility.eligible?.should == false
97
+ eligibility.bonus_points.should == 0
98
+
99
+ end
100
+
101
+ end
102
+
103
+ end
104
+
105
+ end