quickeebooks 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (189) hide show
  1. data/lib/quickeebooks.rb +3 -1
  2. data/lib/quickeebooks/common/online_entity_model.rb +0 -3
  3. data/lib/quickeebooks/common/service_crud.rb +1 -1
  4. data/lib/quickeebooks/online/model/account.rb +1 -6
  5. data/lib/quickeebooks/online/model/address.rb +3 -2
  6. data/lib/quickeebooks/online/model/clazz.rb +60 -0
  7. data/lib/quickeebooks/online/model/intuit_type.rb +9 -4
  8. data/lib/quickeebooks/online/model/item.rb +3 -1
  9. data/lib/quickeebooks/online/service/account.rb +1 -41
  10. data/lib/quickeebooks/online/service/clazz.rb +12 -0
  11. data/lib/quickeebooks/online/service/employee.rb +2 -4
  12. data/lib/quickeebooks/online/service/invoice.rb +8 -58
  13. data/lib/quickeebooks/online/service/item.rb +1 -41
  14. data/lib/quickeebooks/online/service/service_base.rb +2 -2
  15. data/lib/quickeebooks/shared/service/access_token.rb +1 -0
  16. data/lib/quickeebooks/version.rb +1 -1
  17. metadata +8 -178
  18. data/Gemfile +0 -3
  19. data/Gemfile.lock +0 -86
  20. data/Guardfile +0 -8
  21. data/HISTORY.md +0 -44
  22. data/MIT-LICENSE +0 -9
  23. data/README.md +0 -451
  24. data/Rakefile +0 -17
  25. data/coverage/assets/0.7.1/application.css +0 -1110
  26. data/coverage/assets/0.7.1/application.js +0 -626
  27. data/coverage/assets/0.7.1/fancybox/blank.gif +0 -0
  28. data/coverage/assets/0.7.1/fancybox/fancy_close.png +0 -0
  29. data/coverage/assets/0.7.1/fancybox/fancy_loading.png +0 -0
  30. data/coverage/assets/0.7.1/fancybox/fancy_nav_left.png +0 -0
  31. data/coverage/assets/0.7.1/fancybox/fancy_nav_right.png +0 -0
  32. data/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png +0 -0
  33. data/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png +0 -0
  34. data/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png +0 -0
  35. data/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png +0 -0
  36. data/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png +0 -0
  37. data/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png +0 -0
  38. data/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png +0 -0
  39. data/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png +0 -0
  40. data/coverage/assets/0.7.1/fancybox/fancy_title_left.png +0 -0
  41. data/coverage/assets/0.7.1/fancybox/fancy_title_main.png +0 -0
  42. data/coverage/assets/0.7.1/fancybox/fancy_title_over.png +0 -0
  43. data/coverage/assets/0.7.1/fancybox/fancy_title_right.png +0 -0
  44. data/coverage/assets/0.7.1/fancybox/fancybox-x.png +0 -0
  45. data/coverage/assets/0.7.1/fancybox/fancybox-y.png +0 -0
  46. data/coverage/assets/0.7.1/fancybox/fancybox.png +0 -0
  47. data/coverage/assets/0.7.1/favicon_green.png +0 -0
  48. data/coverage/assets/0.7.1/favicon_red.png +0 -0
  49. data/coverage/assets/0.7.1/favicon_yellow.png +0 -0
  50. data/coverage/assets/0.7.1/loading.gif +0 -0
  51. data/coverage/assets/0.7.1/magnify.png +0 -0
  52. data/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  53. data/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  54. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  55. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  56. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  57. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  58. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  59. data/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  60. data/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
  61. data/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  62. data/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
  63. data/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
  64. data/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  65. data/coverage/index.html +0 -39346
  66. data/quickeebooks.gemspec +0 -30
  67. data/spec/mocks/oauth_consumer_mock.rb +0 -2
  68. data/spec/quickeebooks/common/online_line_item_model_methods_spec.rb +0 -41
  69. data/spec/quickeebooks/common/service_crud_spec.rb +0 -41
  70. data/spec/quickeebooks/online/account_spec.rb +0 -37
  71. data/spec/quickeebooks/online/bill_payment_spec.rb +0 -18
  72. data/spec/quickeebooks/online/bill_spec.rb +0 -17
  73. data/spec/quickeebooks/online/company_meta_data_spec.rb +0 -27
  74. data/spec/quickeebooks/online/customer_spec.rb +0 -48
  75. data/spec/quickeebooks/online/employee_spec.rb +0 -31
  76. data/spec/quickeebooks/online/id_spec.rb +0 -18
  77. data/spec/quickeebooks/online/invoice_spec.rb +0 -12
  78. data/spec/quickeebooks/online/journal_entry_spec.rb +0 -26
  79. data/spec/quickeebooks/online/payment_spec.rb +0 -19
  80. data/spec/quickeebooks/online/sales_receipt_spec.rb +0 -18
  81. data/spec/quickeebooks/online/services/account_spec.rb +0 -82
  82. data/spec/quickeebooks/online/services/bill_payment_spec.rb +0 -69
  83. data/spec/quickeebooks/online/services/bill_spec.rb +0 -61
  84. data/spec/quickeebooks/online/services/company_meta_data_spec.rb +0 -30
  85. data/spec/quickeebooks/online/services/customer_spec.rb +0 -93
  86. data/spec/quickeebooks/online/services/employee_spec.rb +0 -83
  87. data/spec/quickeebooks/online/services/filter_spec.rb +0 -53
  88. data/spec/quickeebooks/online/services/invoice_spec.rb +0 -54
  89. data/spec/quickeebooks/online/services/journal_entry_spec.rb +0 -75
  90. data/spec/quickeebooks/online/services/payment_spec.rb +0 -63
  91. data/spec/quickeebooks/online/services/sales_receipt_spec.rb +0 -64
  92. data/spec/quickeebooks/online/services/service_base_spec.rb +0 -150
  93. data/spec/quickeebooks/online/services/time_activity_spec.rb +0 -89
  94. data/spec/quickeebooks/online/services/tracking_class_spec.rb +0 -99
  95. data/spec/quickeebooks/online/services/vendor_spec.rb +0 -85
  96. data/spec/quickeebooks/online/time_activity_spec.rb +0 -18
  97. data/spec/quickeebooks/online/tracking_class_spec.rb +0 -32
  98. data/spec/quickeebooks/online/vendor_spec.rb +0 -33
  99. data/spec/quickeebooks/shared/access_token_spec.rb +0 -129
  100. data/spec/quickeebooks/shared/filter_spec.rb +0 -159
  101. data/spec/quickeebooks/shared/sort_spec.rb +0 -17
  102. data/spec/quickeebooks/windows/customer_spec.rb +0 -45
  103. data/spec/quickeebooks/windows/id_spec.rb +0 -18
  104. data/spec/quickeebooks/windows/services/class_spec.rb +0 -33
  105. data/spec/quickeebooks/windows/services/company_meta_data_spec.rb +0 -29
  106. data/spec/quickeebooks/windows/services/customer_spec.rb +0 -173
  107. data/spec/quickeebooks/windows/services/employee_spec.rb +0 -42
  108. data/spec/quickeebooks/windows/services/invoice_spec.rb +0 -127
  109. data/spec/quickeebooks/windows/services/job_spec.rb +0 -74
  110. data/spec/quickeebooks/windows/services/payment_method_spec.rb +0 -36
  111. data/spec/quickeebooks/windows/services/payment_spec.rb +0 -72
  112. data/spec/quickeebooks/windows/services/sales_rep_spec.rb +0 -42
  113. data/spec/quickeebooks/windows/services/sales_taxes_spec.rb +0 -36
  114. data/spec/quickeebooks/windows/services/service_base_spec.rb +0 -95
  115. data/spec/quickeebooks/windows/services/ship_method_spec.rb +0 -33
  116. data/spec/quickeebooks/windows/services/sync_activity_spec.rb +0 -42
  117. data/spec/quickeebooks/windows/services/sync_status_spec.rb +0 -35
  118. data/spec/quickeebooks/windows/services/time_activity_spec.rb +0 -38
  119. data/spec/quickeebooks_spec.rb +0 -8
  120. data/spec/spec_helper.rb +0 -48
  121. data/spec/support/oauth.rb +0 -20
  122. data/spec/xml/online/account.xml +0 -13
  123. data/spec/xml/online/accounts.xml +0 -108
  124. data/spec/xml/online/api_error.xml +0 -6
  125. data/spec/xml/online/bill.xml +0 -32
  126. data/spec/xml/online/bill2.xml +0 -32
  127. data/spec/xml/online/bill_payment.xml +0 -20
  128. data/spec/xml/online/bill_payment2.xml +0 -20
  129. data/spec/xml/online/bill_payments.xml +0 -26
  130. data/spec/xml/online/bills.xml +0 -33
  131. data/spec/xml/online/company_meta_data.xml +0 -37
  132. data/spec/xml/online/customer.xml +0 -77
  133. data/spec/xml/online/customer2.xml +0 -63
  134. data/spec/xml/online/customers.xml +0 -125
  135. data/spec/xml/online/deleted_invoice.xml +0 -2
  136. data/spec/xml/online/determine_base_url.xml +0 -10
  137. data/spec/xml/online/employee.xml +0 -31
  138. data/spec/xml/online/employee2.xml +0 -31
  139. data/spec/xml/online/employees.xml +0 -36
  140. data/spec/xml/online/invalid_user.xml +0 -7
  141. data/spec/xml/online/invoice.xml +0 -28
  142. data/spec/xml/online/journal_entries.xml +0 -38
  143. data/spec/xml/online/journal_entry.xml +0 -32
  144. data/spec/xml/online/journal_entry2.xml +0 -32
  145. data/spec/xml/online/payment.xml +0 -24
  146. data/spec/xml/online/payment2.xml +0 -24
  147. data/spec/xml/online/payments.xml +0 -30
  148. data/spec/xml/online/sales_receipt.xml +0 -36
  149. data/spec/xml/online/sales_receipt2.xml +0 -36
  150. data/spec/xml/online/sales_receipts.xml +0 -39
  151. data/spec/xml/online/time_activities.xml +0 -27
  152. data/spec/xml/online/time_activity.xml +0 -21
  153. data/spec/xml/online/time_activity2.xml +0 -21
  154. data/spec/xml/online/tracking_class.xml +0 -11
  155. data/spec/xml/online/tracking_class_updated.xml +0 -11
  156. data/spec/xml/online/tracking_classes.xml +0 -26
  157. data/spec/xml/online/user.xml +0 -11
  158. data/spec/xml/online/vendor.xml +0 -34
  159. data/spec/xml/online/vendor2.xml +0 -34
  160. data/spec/xml/online/vendors.xml +0 -67
  161. data/spec/xml/shared/disconnect_invalid.xml +0 -6
  162. data/spec/xml/shared/disconnect_success.xml +0 -5
  163. data/spec/xml/shared/reconnect_error_expired.xml +0 -6
  164. data/spec/xml/shared/reconnect_error_not_approved.xml +0 -6
  165. data/spec/xml/shared/reconnect_error_out_of_bounds.xml +0 -6
  166. data/spec/xml/shared/reconnect_success.xml +0 -8
  167. data/spec/xml/windows/classes.xml +0 -41
  168. data/spec/xml/windows/company_meta_data.xml +0 -30
  169. data/spec/xml/windows/customer.xml +0 -56
  170. data/spec/xml/windows/customer_create_success.xml +0 -13
  171. data/spec/xml/windows/customer_update_success.xml +0 -13
  172. data/spec/xml/windows/customers.xml +0 -137
  173. data/spec/xml/windows/employees.xml +0 -36
  174. data/spec/xml/windows/fetch_customer_by_id.xml +0 -53
  175. data/spec/xml/windows/http_401.xml +0 -8
  176. data/spec/xml/windows/invoice_success_create.xml +0 -11
  177. data/spec/xml/windows/invoices.xml +0 -436
  178. data/spec/xml/windows/job_list_error_invalid_filter_ordering.xml +0 -9
  179. data/spec/xml/windows/jobs.xml +0 -71
  180. data/spec/xml/windows/payment_create_success.xml +0 -11
  181. data/spec/xml/windows/payment_methods.xml +0 -121
  182. data/spec/xml/windows/payments.xml +0 -39
  183. data/spec/xml/windows/sales_reps.xml +0 -204
  184. data/spec/xml/windows/sales_taxes.xml +0 -34
  185. data/spec/xml/windows/ship_methods.xml +0 -139
  186. data/spec/xml/windows/sync_activity_responses.xml +0 -20
  187. data/spec/xml/windows/sync_status_responses.xml +0 -186
  188. data/spec/xml/windows/time_activities.xml +0 -30
  189. data/tmp/console.rb +0 -10
@@ -1,85 +0,0 @@
1
- describe "Quickeebooks::Online::Service::Vendor" do
2
- before(:all) do
3
- construct_oauth_service :vendor
4
- end
5
-
6
- it "can fetch a list of vendors" do
7
- xml = onlineFixture("vendors.xml")
8
- url = @service.url_for_resource(Quickeebooks::Online::Model::Vendor.resource_for_collection)
9
- FakeWeb.register_uri(:post, url, :status => ["200", "OK"], :body => xml)
10
- accounts = @service.list
11
- accounts.current_page.should == 1
12
- accounts.entries.count.should == 2
13
- accounts.entries.first.name.should == "Digital"
14
- end
15
-
16
- it "can create a vendor" do
17
- xml = onlineFixture("vendor.xml")
18
- url = @service.url_for_resource(Quickeebooks::Online::Model::Vendor.resource_for_singular)
19
- FakeWeb.register_uri(:post, url, :status => ["200", "OK"], :body => xml)
20
- vendor = Quickeebooks::Online::Model::Vendor.new
21
- vendor.name = "Digital"
22
- vendor.is_1099 = true
23
- result = @service.create(vendor)
24
- result.id.value.to_i.should > 0
25
- result.is_1099?.should be_true
26
- end
27
-
28
- it "can delete a vendor" do
29
- url = "#{@service.url_for_resource(Quickeebooks::Online::Model::Vendor.resource_for_singular)}/11?methodx=delete"
30
- FakeWeb.register_uri(:post, url, :status => ["200", "OK"])
31
- vendor = Quickeebooks::Online::Model::Vendor.new
32
- vendor.id = Quickeebooks::Online::Model::Id.new("11")
33
- vendor.sync_token = 0
34
- result = @service.delete(vendor)
35
- result.should == true
36
- end
37
-
38
- it "cannot delete a vendor with missing required fields for deletion" do
39
- vendor = Quickeebooks::Online::Model::Vendor.new
40
- expect { @service.delete(vendor) }.to raise_exception(InvalidModelException, "Missing required parameters for delete")
41
- end
42
-
43
- it "exception is raised when we try to create an invalid account" do
44
- vendor = Quickeebooks::Online::Model::Vendor.new
45
- expect { @service.create(vendor) }.to raise_exception InvalidModelException
46
- end
47
-
48
- it "cannot update an invalid vendor" do
49
- vendor = Quickeebooks::Online::Model::Vendor.new
50
- vendor.name = "John Bilby"
51
- expect { @service.update(vendor) }.to raise_exception InvalidModelException
52
- end
53
-
54
- it "can fetch a vendor by id" do
55
- xml = onlineFixture("vendor.xml")
56
- url = "#{@service.url_for_resource(Quickeebooks::Online::Model::Vendor.resource_for_singular)}/11"
57
- FakeWeb.register_uri(:get, url, :status => ["200", "OK"], :body => xml)
58
- vendor = @service.fetch_by_id(11)
59
- vendor.name.should == "Digital"
60
- end
61
-
62
- it "can update a vendor" do
63
- xml2 = onlineFixture("vendor2.xml")
64
- vendor = Quickeebooks::Online::Model::Vendor.new
65
- vendor.name = "Digital NYC"
66
- vendor.id = Quickeebooks::Online::Model::Id.new("1")
67
- vendor.sync_token = 2
68
-
69
- url = "#{@service.url_for_resource(Quickeebooks::Online::Model::Vendor.resource_for_singular)}/#{vendor.id.value}"
70
- FakeWeb.register_uri(:post, url, :status => ["200", "OK"], :body => xml2)
71
- updated = @service.update(vendor)
72
- updated.name.should == "Digital NYC"
73
- end
74
-
75
- it 'Can update a fetched vendor' do
76
- xml = onlineFixture("vendor.xml")
77
- url = "#{@service.url_for_resource(Quickeebooks::Online::Model::Vendor.resource_for_singular)}/11"
78
- FakeWeb.register_uri(:get, url, :status => ["200", "OK"], :body => xml)
79
- vendor = @service.fetch_by_id(11)
80
- url = "#{@service.url_for_resource(Quickeebooks::Online::Model::Vendor.resource_for_singular)}/#{vendor.id.value}"
81
- FakeWeb.register_uri(:post, url, :status => ["200", "OK"], :body => xml)
82
- updated = @service.update(vendor)
83
- end
84
-
85
- end
@@ -1,18 +0,0 @@
1
- describe "Quickeebooks::Online::Model::TimeActivity" do
2
-
3
- describe "parse time_activity from XML" do
4
- xml = onlineFixture("time_activity.xml")
5
- time_activity = Quickeebooks::Online::Model::TimeActivity.from_xml(xml)
6
- time_activity.sync_token.should == 0
7
- time_activity.hours.should == 10
8
- time_activity.minutes.should == 5
9
- time_activity.billable_status.should == "Billable"
10
- time_activity.meta_data.create_time.year.should == Date.civil(2010, 9, 13).year
11
- time_activity.name_of.is_a?(Quickeebooks::Online::Model::TimeActivityVendor)
12
- time_activity.customer_id.should == "3794"
13
- time_activity.vendor.vendor_id.value.should == "3793"
14
-
15
- end
16
-
17
-
18
- end
@@ -1,32 +0,0 @@
1
- describe "Quickeebooks::Online::Model::TrackingClass" do
2
- it { Quickeebooks::Online::Model::TrackingClass.resource_for_singular.should == "class" }
3
- it { Quickeebooks::Online::Model::TrackingClass.resource_for_collection.should == "classes" }
4
-
5
- describe "#from_xml" do
6
- describe "parse tracking class from XML" do
7
- let(:tracking_class){ Quickeebooks::Online::Model::TrackingClass.from_xml(onlineFixture("tracking_class.xml")) }
8
-
9
- it{ tracking_class.should be_a Quickeebooks::Online::Model::TrackingClass }
10
- it{ tracking_class.id.value.should == "3000000000000029839" }
11
- it{ tracking_class.sync_token.should == 0 }
12
- it{ tracking_class.name.should == "2012-11-02" }
13
- it{ tracking_class.class_parent_id == "3000000000000040889" }
14
- it{ tracking_class.meta_data.create_time == Time.parse("2012-11-15T12:39:48-08:00") }
15
- it{ tracking_class.meta_data.last_updated_time == Time.parse("2013-03-29T09:26:54-07:00") }
16
- end
17
- end
18
-
19
- describe ".to_xml_ns" do
20
-
21
- let(:tracking_class) {
22
- tracking_class = Quickeebooks::Online::Model::TrackingClass.new
23
- tracking_class.name = "2013-06-21"
24
- tracking_class.class_parent_id = Quickeebooks::Online::Model::Id.new('3000000000000040634')
25
- tracking_class
26
- }
27
-
28
- subject { tracking_class.to_xml_ns }
29
-
30
- it { should match("<Class xmlns:ns2=\"http://www.intuit.com/sb/cdm/qbo\" xmlns=\"http://www.intuit.com/sb/cdm/v2\" xmlns:ns3=\"http://www.intuit.com/sb/cdm\">\n<Name>2013-06-21</Name>\n<ClassParentId>3000000000000040634</ClassParentId>\n</Class>") }
31
- end
32
- end
@@ -1,33 +0,0 @@
1
- describe "Quickeebooks::Online::Model::Vendor" do
2
-
3
- describe "parse vendor from XML" do
4
- xml = onlineFixture("vendor.xml")
5
- vendor = Quickeebooks::Online::Model::Vendor.from_xml(xml)
6
- vendor.sync_token.should == 0
7
- vendor.name.should == "Digital"
8
- vendor.meta_data.create_time.year.should == Date.civil(2010, 9, 13).year
9
- vendor.addresses.count.should == 1
10
- vendor.addresses.first.line1.should == "Park Avenue"
11
- vendor.phones.size.should == 1
12
- vendor.phones.first.free_form_number.should == "(818) 436-8225"
13
- vendor.email.address.should == "john_doe@digitalinsight.mint.com"
14
- vendor.open_balance.amount.should == 6200.0
15
- vendor.is_1099?.should == true
16
- end
17
-
18
- it "can assign an email address" do
19
- vendor = Quickeebooks::Online::Model::Vendor.new
20
- the_email = "foo@example.org"
21
- vendor.email_address = the_email
22
- vendor.email.is_a?(Quickeebooks::Online::Model::Email).should == true
23
- vendor.email.address.should == the_email
24
- end
25
-
26
- it "cannot update an invalid model" do
27
- vendor = Quickeebooks::Online::Model::Vendor.new
28
- vendor.to_xml_ns.should match('Vendor')
29
- vendor.valid_for_update?.should == false
30
- vendor.errors.keys.include?(:sync_token).should == true
31
- end
32
-
33
- end
@@ -1,129 +0,0 @@
1
- describe "Quickeebooks::Shared::Service::AccessToken" do
2
-
3
- shared_examples "access_token_operations" do
4
- context "reconnect" do
5
- let(:reconnect_url){ "https://appcenter.intuit.com/api/v1/Connection/Reconnect" }
6
-
7
- it "can successfully reconnect" do
8
- xml = sharedFixture("reconnect_success.xml")
9
- FakeWeb.register_uri(:get, reconnect_url, :status => ["200", "OK"], :body => xml)
10
-
11
- response = @service.reconnect
12
-
13
- response.error?.should be_false
14
- response.token.should == "qye2eIdQ5H5yMyrlJflUWh712xfFXjyNnW1MfbC0rz04TfCP"
15
- response.secret.should == "cyDeUNQTkFzoR0KkDn7viN6uLQxWTobeEUKW7I79"
16
- end
17
-
18
- it "can handle expired tokens" do
19
- xml = sharedFixture("reconnect_error_expired.xml")
20
- FakeWeb.register_uri(:get, reconnect_url, :status => ["200", "OK"], :body => xml)
21
-
22
- response = @service.reconnect
23
-
24
- response.error?.should be_true
25
- response.error_code.should == "270"
26
- response.error_message.should == "OAuth Token Rejected"
27
- end
28
-
29
- it "can handle out-of-bounds refresh windows" do
30
- xml = sharedFixture("reconnect_error_out_of_bounds.xml")
31
- FakeWeb.register_uri(:get, reconnect_url, :status => ["200", "OK"], :body => xml)
32
-
33
- response = @service.reconnect
34
-
35
- response.error?.should be_true
36
- response.error_code.should == "212"
37
- response.error_message.should == "Token Refresh Window Out of Bounds"
38
- end
39
-
40
-
41
- it "can handle unapproved apps" do
42
- xml = sharedFixture("reconnect_error_not_approved.xml")
43
- FakeWeb.register_uri(:get, reconnect_url, :status => ["200", "OK"], :body => xml)
44
-
45
- response = @service.reconnect
46
-
47
- response.error?.should be_true
48
- response.error_code.should == "24"
49
- response.error_message.should == "Invalid App Token"
50
- end
51
- end
52
-
53
- context "disconnect" do
54
- let(:disconnect_url){ "https://appcenter.intuit.com/api/v1/Connection/Disconnect" }
55
-
56
- it "can successfully disconnect" do
57
- xml = sharedFixture("disconnect_success.xml")
58
- FakeWeb.register_uri(:get, disconnect_url, :status => ["200", "OK"], :body => xml)
59
-
60
- response = @service.disconnect
61
-
62
- response.error?.should be_false
63
- end
64
-
65
- it "can handle invalid tokens" do
66
- xml = sharedFixture("disconnect_invalid.xml")
67
- FakeWeb.register_uri(:get, disconnect_url, :status => ["200", "OK"], :body => xml)
68
-
69
- response = @service.disconnect
70
-
71
- response.error?.should be_true
72
- response.error_code.should == "270"
73
- response.error_message.should == "OAuth Token rejected"
74
- end
75
- end
76
- end
77
-
78
- context "online" do
79
- before(:all) do
80
- FakeWeb.allow_net_connect = false
81
- qb_key = "key"
82
- qb_secret = "secreet"
83
-
84
- @realm_id = "9991111222"
85
- @oauth_consumer = OAuth::Consumer.new(qb_key, qb_key, {
86
- :site => "https://oauth.intuit.com",
87
- :request_token_path => "/oauth/v1/get_request_token",
88
- :authorize_path => "/oauth/v1/get_access_token",
89
- :access_token_path => "/oauth/v1/get_access_token"
90
- })
91
- @oauth = OAuth::AccessToken.new(@oauth_consumer, "blah", "blah")
92
-
93
- @service = Quickeebooks::Online::Service::AccessToken.new
94
- @service.access_token = @oauth
95
- @service.instance_eval {
96
- @realm_id = "9991111222"
97
- }
98
- end
99
-
100
- it_behaves_like "access_token_operations"
101
- end
102
-
103
- context "windows" do
104
- before(:all) do
105
- FakeWeb.allow_net_connect = false
106
- qb_key = "key"
107
- qb_secret = "secreet"
108
-
109
- @realm_id = "9991111222"
110
- #@base_uri = "https://qbo.intuit.com/qbo36"
111
- @oauth_consumer = OAuth::Consumer.new(qb_key, qb_key, {
112
- :site => "https://oauth.intuit.com",
113
- :request_token_path => "/oauth/v1/get_request_token",
114
- :authorize_path => "/oauth/v1/get_access_token",
115
- :access_token_path => "/oauth/v1/get_access_token"
116
- })
117
- @oauth = OAuth::AccessToken.new(@oauth_consumer, "blah", "blah")
118
-
119
- @service = Quickeebooks::Windows::Service::AccessToken.new
120
-
121
- @service.access_token = @oauth
122
- @service.instance_eval {
123
- @realm_id = "9991111222"
124
- }
125
- end
126
-
127
- it_behaves_like "access_token_operations"
128
- end
129
- end
@@ -1,159 +0,0 @@
1
- describe "Quickeebooks::Shared::Service::Filter" do
2
- ENV['TZ'] = 'UTC'
3
-
4
- let(:filter){ Quickeebooks::Shared::Service::Filter }
5
-
6
- context 'DateTime' do
7
- describe '#to_s' do
8
- it 'parses after' do
9
- filter.new(:date,
10
- :field => 'Foo',
11
- :after => Date.parse('2020-12-31')).to_s.should == "Foo :AFTER: 2020-12-31"
12
- end
13
-
14
- it 'parses before' do
15
- filter.new(:date,
16
- :field => 'Foo',
17
- :before => Date.parse('2020-12-31')).to_s.should == "Foo :BEFORE: 2020-12-31"
18
- end
19
-
20
- it 'parses after with time' do
21
- filter.new(:datetime,
22
- :field => 'Foo',
23
- :after => DateTime.parse('2020-12-31T12:00:00')).to_s.should == "Foo :AFTER: 2020-12-31T12:00:00"
24
- end
25
-
26
- it 'parses before with time' do
27
- filter.new(:datetime,
28
- :field => 'Foo',
29
- :before => DateTime.parse('2020-12-31T12:00:00')).to_s.should == "Foo :BEFORE: 2020-12-31T12:00:00"
30
- end
31
- end
32
-
33
- context 'Time' do
34
- it 'parses after' do
35
- filter.new(:datetime,
36
- :field => 'Foo',
37
- :after => Time.parse('2020-12-31')).to_s.should == "Foo :AFTER: 2020-12-31T00:00:00"
38
- end
39
-
40
- it 'parses before' do
41
- filter.new(:datetime,
42
- :field => 'Foo',
43
- :before => Time.parse('2020-12-31')).to_s.should == "Foo :BEFORE: 2020-12-31T00:00:00"
44
- end
45
-
46
- it 'parses after with time' do
47
- filter.new(:datetime,
48
- :field => 'Foo',
49
- :after => Time.parse('2020-12-31 12:00:00')).to_s.should == "Foo :AFTER: 2020-12-31T12:00:00"
50
- end
51
-
52
- it 'parses before with time' do
53
- filter.new(:datetime,
54
- :field => 'Foo',
55
- :before => Time.parse('2020-12-31 12:00:00')).to_s.should == "Foo :BEFORE: 2020-12-31T12:00:00"
56
- end
57
- end
58
-
59
- context 'Not a date but responds to strftime' do
60
- before do
61
- # ActiveSupport::TimeWithZone is_a? Time but doesn't behave similarly.
62
- # This test lets us mock out that use case and verify it works
63
- @fake_time = mock(Object)
64
- @fake_time.stub(:is_a?).with(Time).and_return(true)
65
- @fake_time.stub(:is_a?).with(Date).and_return(false)
66
- @fake_time.stub(:strftime).and_return("2020-12-31T12:00:00")
67
- end
68
-
69
- it 'parses after' do
70
- filter.new(:datetime,
71
- :field => 'Foo',
72
- :after => @fake_time).to_s.should == "Foo :AFTER: 2020-12-31T12:00:00"
73
- end
74
-
75
- it 'parses before' do
76
- filter.new(:datetime,
77
- :field => 'Foo',
78
- :before => @fake_time).to_s.should == "Foo :BEFORE: 2020-12-31T12:00:00"
79
- end
80
- end
81
-
82
- describe '#to_xml' do
83
- end
84
- end
85
-
86
- context 'text' do
87
- describe '#to_s' do
88
- it 'parses text' do
89
- filter.new(:text,
90
- :field => 'Foo',
91
- :value => 'Bar').to_s.should == 'Foo :EQUALS: Bar'
92
- end
93
- end
94
-
95
- describe '#to_xml' do
96
- it 'parses text' do
97
- filter.new(:text,
98
- :field => 'Foo',
99
- :value => 'Bar').to_xml.should == '<Foo>Bar</Foo>'
100
- end
101
-
102
- it 'CGI escapes values' do
103
- filter.new(:text,
104
- :field => 'Foo',
105
- :value => "<3 Bar's ><things").to_xml.should == '<Foo>&lt;3 Bar\'s &gt;&lt;things</Foo>'
106
- end
107
-
108
- it 'CGI escapes integers' do
109
- filter.new(:text,
110
- :field => 'Foo',
111
- :value => 3).to_xml.should == '<Foo>3</Foo>'
112
- end
113
- end
114
- end
115
-
116
- context 'boolean' do
117
- describe '#to_s' do
118
- it 'parses boolean' do
119
- filter.new(:boolean,
120
- :field => 'Foo',
121
- :value => 'Bar').to_s.should == 'Foo :EQUALS: Bar'
122
- end
123
- end
124
-
125
- describe '#to_xml' do
126
- it 'parses boolean' do
127
- filter.new(:boolean,
128
- :field => 'Foo',
129
- :value => 'Bar').to_xml.should == '<Foo>Bar</Foo>'
130
- end
131
- end
132
- end
133
-
134
- context 'number' do
135
- describe '#to_s' do
136
- it 'parses eq' do
137
- filter.new(:number,
138
- :field => 'Foo',
139
- :eq => 42).to_s.should == 'Foo :EQUALS: 42'
140
- end
141
-
142
- it 'parses lt' do
143
- filter.new(:number,
144
- :field => 'Foo',
145
- :lt => 42).to_s.should == 'Foo :LessThan: 42'
146
- end
147
-
148
- it 'parses gt' do
149
- filter.new(:number,
150
- :field => 'Foo',
151
- :gt => 42).to_s.should == 'Foo :GreaterThan: 42'
152
- end
153
- end
154
-
155
- describe '#to_xml' do
156
- end
157
- end
158
-
159
- end