active_cached_resource 0.1.0 → 0.1.2

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 (317) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/LICENSE +21 -0
  4. data/lib/active_cached_resource/caching.rb +104 -1
  5. data/lib/active_cached_resource/configuration.rb +22 -1
  6. data/lib/active_cached_resource/logger.rb +14 -0
  7. data/lib/active_cached_resource/model.rb +18 -0
  8. data/lib/active_cached_resource/version.rb +1 -8
  9. data/lib/activeresource/lib/active_resource/collection.rb +2 -0
  10. metadata +4 -310
  11. data/.rspec +0 -3
  12. data/.rubocop.yml +0 -23
  13. data/.standard.yml +0 -2
  14. data/Rakefile +0 -29
  15. data/example/consumer/.dockerignore +0 -41
  16. data/example/consumer/.gitattributes +0 -9
  17. data/example/consumer/.gitignore +0 -36
  18. data/example/consumer/.kamal/hooks/docker-setup.sample +0 -3
  19. data/example/consumer/.kamal/hooks/post-deploy.sample +0 -14
  20. data/example/consumer/.kamal/hooks/post-proxy-reboot.sample +0 -3
  21. data/example/consumer/.kamal/hooks/pre-build.sample +0 -51
  22. data/example/consumer/.kamal/hooks/pre-connect.sample +0 -47
  23. data/example/consumer/.kamal/hooks/pre-deploy.sample +0 -109
  24. data/example/consumer/.kamal/hooks/pre-proxy-reboot.sample +0 -3
  25. data/example/consumer/.kamal/secrets +0 -17
  26. data/example/consumer/Dockerfile +0 -65
  27. data/example/consumer/Gemfile +0 -17
  28. data/example/consumer/Rakefile +0 -6
  29. data/example/consumer/app/controllers/application_controller.rb +0 -2
  30. data/example/consumer/app/controllers/concerns/.keep +0 -0
  31. data/example/consumer/app/jobs/application_job.rb +0 -7
  32. data/example/consumer/app/mailers/application_mailer.rb +0 -4
  33. data/example/consumer/app/models/application_record.rb +0 -3
  34. data/example/consumer/app/models/concerns/.keep +0 -0
  35. data/example/consumer/app/models/person.rb +0 -9
  36. data/example/consumer/app/views/layouts/mailer.html.erb +0 -13
  37. data/example/consumer/app/views/layouts/mailer.text.erb +0 -1
  38. data/example/consumer/bin/brakeman +0 -7
  39. data/example/consumer/bin/bundle +0 -109
  40. data/example/consumer/bin/dev +0 -2
  41. data/example/consumer/bin/docker-entrypoint +0 -14
  42. data/example/consumer/bin/jobs +0 -6
  43. data/example/consumer/bin/kamal +0 -27
  44. data/example/consumer/bin/rails +0 -4
  45. data/example/consumer/bin/rake +0 -4
  46. data/example/consumer/bin/rubocop +0 -8
  47. data/example/consumer/bin/setup +0 -34
  48. data/example/consumer/bin/thrust +0 -5
  49. data/example/consumer/config/application.rb +0 -20
  50. data/example/consumer/config/boot.rb +0 -3
  51. data/example/consumer/config/cache.yml +0 -16
  52. data/example/consumer/config/credentials.yml.enc +0 -1
  53. data/example/consumer/config/database.yml +0 -14
  54. data/example/consumer/config/deploy.yml +0 -116
  55. data/example/consumer/config/environment.rb +0 -5
  56. data/example/consumer/config/environments/development.rb +0 -64
  57. data/example/consumer/config/environments/production.rb +0 -85
  58. data/example/consumer/config/environments/test.rb +0 -50
  59. data/example/consumer/config/initializers/cors.rb +0 -16
  60. data/example/consumer/config/initializers/filter_parameter_logging.rb +0 -8
  61. data/example/consumer/config/initializers/inflections.rb +0 -16
  62. data/example/consumer/config/locales/en.yml +0 -31
  63. data/example/consumer/config/puma.rb +0 -41
  64. data/example/consumer/config/queue.yml +0 -18
  65. data/example/consumer/config/recurring.yml +0 -10
  66. data/example/consumer/config/routes.rb +0 -10
  67. data/example/consumer/config.ru +0 -6
  68. data/example/consumer/db/cache_schema.rb +0 -14
  69. data/example/consumer/db/queue_schema.rb +0 -129
  70. data/example/consumer/db/seeds.rb +0 -0
  71. data/example/consumer/lib/tasks/.keep +0 -0
  72. data/example/consumer/log/.keep +0 -0
  73. data/example/consumer/public/robots.txt +0 -1
  74. data/example/consumer/script/.keep +0 -0
  75. data/example/consumer/storage/.keep +0 -0
  76. data/example/consumer/tmp/.keep +0 -0
  77. data/example/consumer/tmp/cache/.keep +0 -0
  78. data/example/consumer/tmp/pids/.keep +0 -0
  79. data/example/consumer/tmp/storage/.keep +0 -0
  80. data/example/consumer/vendor/.keep +0 -0
  81. data/example/provider/.dockerignore +0 -41
  82. data/example/provider/.gitattributes +0 -9
  83. data/example/provider/.gitignore +0 -32
  84. data/example/provider/.kamal/hooks/docker-setup.sample +0 -3
  85. data/example/provider/.kamal/hooks/post-deploy.sample +0 -14
  86. data/example/provider/.kamal/hooks/post-proxy-reboot.sample +0 -3
  87. data/example/provider/.kamal/hooks/pre-build.sample +0 -51
  88. data/example/provider/.kamal/hooks/pre-connect.sample +0 -47
  89. data/example/provider/.kamal/hooks/pre-deploy.sample +0 -109
  90. data/example/provider/.kamal/hooks/pre-proxy-reboot.sample +0 -3
  91. data/example/provider/.kamal/secrets +0 -17
  92. data/example/provider/Dockerfile +0 -65
  93. data/example/provider/Gemfile +0 -14
  94. data/example/provider/Rakefile +0 -6
  95. data/example/provider/app/controllers/application_controller.rb +0 -2
  96. data/example/provider/app/controllers/concerns/.keep +0 -0
  97. data/example/provider/app/controllers/people_controller.rb +0 -68
  98. data/example/provider/app/jobs/application_job.rb +0 -7
  99. data/example/provider/app/mailers/application_mailer.rb +0 -4
  100. data/example/provider/app/models/address.rb +0 -3
  101. data/example/provider/app/models/application_record.rb +0 -3
  102. data/example/provider/app/models/company.rb +0 -3
  103. data/example/provider/app/models/concerns/.keep +0 -0
  104. data/example/provider/app/models/person.rb +0 -6
  105. data/example/provider/app/views/layouts/mailer.html.erb +0 -13
  106. data/example/provider/app/views/layouts/mailer.text.erb +0 -1
  107. data/example/provider/bin/brakeman +0 -7
  108. data/example/provider/bin/bundle +0 -109
  109. data/example/provider/bin/dev +0 -2
  110. data/example/provider/bin/docker-entrypoint +0 -14
  111. data/example/provider/bin/jobs +0 -6
  112. data/example/provider/bin/kamal +0 -27
  113. data/example/provider/bin/rails +0 -4
  114. data/example/provider/bin/rake +0 -4
  115. data/example/provider/bin/rubocop +0 -8
  116. data/example/provider/bin/setup +0 -34
  117. data/example/provider/bin/thrust +0 -5
  118. data/example/provider/config/application.rb +0 -44
  119. data/example/provider/config/boot.rb +0 -3
  120. data/example/provider/config/cache.yml +0 -16
  121. data/example/provider/config/credentials.yml.enc +0 -1
  122. data/example/provider/config/database.yml +0 -20
  123. data/example/provider/config/deploy.yml +0 -116
  124. data/example/provider/config/environment.rb +0 -5
  125. data/example/provider/config/environments/development.rb +0 -64
  126. data/example/provider/config/environments/production.rb +0 -85
  127. data/example/provider/config/environments/test.rb +0 -50
  128. data/example/provider/config/initializers/cors.rb +0 -16
  129. data/example/provider/config/initializers/filter_parameter_logging.rb +0 -8
  130. data/example/provider/config/initializers/inflections.rb +0 -16
  131. data/example/provider/config/locales/en.yml +0 -31
  132. data/example/provider/config/puma.rb +0 -41
  133. data/example/provider/config/queue.yml +0 -18
  134. data/example/provider/config/recurring.yml +0 -10
  135. data/example/provider/config/routes.rb +0 -4
  136. data/example/provider/config.ru +0 -6
  137. data/example/provider/db/cache_schema.rb +0 -14
  138. data/example/provider/db/migrate/20241202183937_create_people.rb +0 -11
  139. data/example/provider/db/migrate/20241202183955_create_addresses.rb +0 -13
  140. data/example/provider/db/migrate/20241202184017_create_companies.rb +0 -14
  141. data/example/provider/db/queue_schema.rb +0 -129
  142. data/example/provider/db/schema.rb +0 -47
  143. data/example/provider/db/seeds.rb +0 -18
  144. data/example/provider/lib/tasks/.keep +0 -0
  145. data/example/provider/log/.keep +0 -0
  146. data/example/provider/public/robots.txt +0 -1
  147. data/example/provider/script/.keep +0 -0
  148. data/example/provider/storage/.keep +0 -0
  149. data/example/provider/tmp/.keep +0 -0
  150. data/example/provider/tmp/pids/.keep +0 -0
  151. data/example/provider/tmp/storage/.keep +0 -0
  152. data/example/provider/vendor/.keep +0 -0
  153. data/lib/activeresource/.gitignore +0 -15
  154. data/lib/activeresource/examples/performance.rb +0 -72
  155. data/lib/activeresource/test/abstract_unit.rb +0 -154
  156. data/lib/activeresource/test/cases/active_job_serializer_test.rb +0 -53
  157. data/lib/activeresource/test/cases/association_test.rb +0 -104
  158. data/lib/activeresource/test/cases/associations/builder/belongs_to_test.rb +0 -42
  159. data/lib/activeresource/test/cases/associations/builder/has_many_test.rb +0 -28
  160. data/lib/activeresource/test/cases/associations/builder/has_one_test.rb +0 -28
  161. data/lib/activeresource/test/cases/authorization_test.rb +0 -276
  162. data/lib/activeresource/test/cases/base/custom_methods_test.rb +0 -155
  163. data/lib/activeresource/test/cases/base/equality_test.rb +0 -53
  164. data/lib/activeresource/test/cases/base/load_test.rb +0 -249
  165. data/lib/activeresource/test/cases/base/schema_test.rb +0 -428
  166. data/lib/activeresource/test/cases/base_errors_test.rb +0 -129
  167. data/lib/activeresource/test/cases/base_test.rb +0 -1622
  168. data/lib/activeresource/test/cases/callbacks_test.rb +0 -155
  169. data/lib/activeresource/test/cases/collection_test.rb +0 -196
  170. data/lib/activeresource/test/cases/connection_test.rb +0 -357
  171. data/lib/activeresource/test/cases/finder_test.rb +0 -217
  172. data/lib/activeresource/test/cases/format_test.rb +0 -137
  173. data/lib/activeresource/test/cases/http_mock_test.rb +0 -213
  174. data/lib/activeresource/test/cases/inheritence_test.rb +0 -19
  175. data/lib/activeresource/test/cases/inheriting_hash_test.rb +0 -25
  176. data/lib/activeresource/test/cases/log_subscriber_test.rb +0 -64
  177. data/lib/activeresource/test/cases/reflection_test.rb +0 -65
  178. data/lib/activeresource/test/cases/validations_test.rb +0 -78
  179. data/lib/activeresource/test/fixtures/address.rb +0 -20
  180. data/lib/activeresource/test/fixtures/beast.rb +0 -16
  181. data/lib/activeresource/test/fixtures/comment.rb +0 -5
  182. data/lib/activeresource/test/fixtures/customer.rb +0 -5
  183. data/lib/activeresource/test/fixtures/fixtures.rbi +0 -46
  184. data/lib/activeresource/test/fixtures/inventory.rb +0 -14
  185. data/lib/activeresource/test/fixtures/person.rb +0 -15
  186. data/lib/activeresource/test/fixtures/pet.rb +0 -6
  187. data/lib/activeresource/test/fixtures/post.rb +0 -5
  188. data/lib/activeresource/test/fixtures/product.rb +0 -11
  189. data/lib/activeresource/test/fixtures/project.rb +0 -19
  190. data/lib/activeresource/test/fixtures/proxy.rb +0 -6
  191. data/lib/activeresource/test/fixtures/sound.rb +0 -11
  192. data/lib/activeresource/test/fixtures/street_address.rb +0 -6
  193. data/lib/activeresource/test/fixtures/subscription_plan.rb +0 -7
  194. data/lib/activeresource/test/fixtures/weather.rb +0 -21
  195. data/lib/activeresource/test/setter_trap.rb +0 -28
  196. data/lib/activeresource/test/singleton_test.rb +0 -138
  197. data/lib/activeresource/test/threadsafe_attributes_test.rb +0 -91
  198. data/sorbet/config +0 -6
  199. data/sorbet/rbi/annotations/.gitattributes +0 -1
  200. data/sorbet/rbi/annotations/activemodel.rbi +0 -89
  201. data/sorbet/rbi/annotations/activesupport.rbi +0 -457
  202. data/sorbet/rbi/annotations/minitest.rbi +0 -119
  203. data/sorbet/rbi/annotations/rainbow.rbi +0 -269
  204. data/sorbet/rbi/dsl/.gitattributes +0 -1
  205. data/sorbet/rbi/dsl/active_support/callbacks.rbi +0 -21
  206. data/sorbet/rbi/gems/.gitattributes +0 -1
  207. data/sorbet/rbi/gems/actioncable@8.0.1.rbi +0 -252
  208. data/sorbet/rbi/gems/actionmailbox@8.0.1.rbi +0 -9
  209. data/sorbet/rbi/gems/actionmailer@8.0.1.rbi +0 -9
  210. data/sorbet/rbi/gems/actionpack@8.0.1.rbi +0 -21111
  211. data/sorbet/rbi/gems/actiontext@8.0.1.rbi +0 -9
  212. data/sorbet/rbi/gems/actionview@8.0.1.rbi +0 -16409
  213. data/sorbet/rbi/gems/activejob@8.0.1.rbi +0 -90
  214. data/sorbet/rbi/gems/activemodel-serializers-xml@1.0.3.rbi +0 -166
  215. data/sorbet/rbi/gems/activemodel@8.0.1.rbi +0 -6865
  216. data/sorbet/rbi/gems/activerecord@8.0.1.rbi +0 -43277
  217. data/sorbet/rbi/gems/activestorage@8.0.1.rbi +0 -9
  218. data/sorbet/rbi/gems/activesupport@8.0.1.rbi +0 -21426
  219. data/sorbet/rbi/gems/ast@2.4.2.rbi +0 -585
  220. data/sorbet/rbi/gems/base64@0.2.0.rbi +0 -509
  221. data/sorbet/rbi/gems/benchmark@0.4.0.rbi +0 -618
  222. data/sorbet/rbi/gems/bigdecimal@3.1.8.rbi +0 -78
  223. data/sorbet/rbi/gems/builder@3.3.0.rbi +0 -9
  224. data/sorbet/rbi/gems/bump@0.10.0.rbi +0 -169
  225. data/sorbet/rbi/gems/byebug@11.1.3.rbi +0 -3607
  226. data/sorbet/rbi/gems/coderay@1.1.3.rbi +0 -3427
  227. data/sorbet/rbi/gems/concurrent-ruby@1.3.4.rbi +0 -11645
  228. data/sorbet/rbi/gems/connection_pool@2.4.1.rbi +0 -9
  229. data/sorbet/rbi/gems/crass@1.0.6.rbi +0 -623
  230. data/sorbet/rbi/gems/date@3.4.1.rbi +0 -75
  231. data/sorbet/rbi/gems/diff-lcs@1.5.1.rbi +0 -1131
  232. data/sorbet/rbi/gems/docile@1.4.1.rbi +0 -377
  233. data/sorbet/rbi/gems/drb@2.2.1.rbi +0 -1347
  234. data/sorbet/rbi/gems/erubi@1.13.0.rbi +0 -150
  235. data/sorbet/rbi/gems/globalid@1.2.1.rbi +0 -9
  236. data/sorbet/rbi/gems/i18n@1.14.6.rbi +0 -2359
  237. data/sorbet/rbi/gems/io-console@0.8.0.rbi +0 -9
  238. data/sorbet/rbi/gems/json@2.9.0.rbi +0 -1944
  239. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +0 -14238
  240. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +0 -240
  241. data/sorbet/rbi/gems/logger@1.6.3.rbi +0 -940
  242. data/sorbet/rbi/gems/loofah@2.23.1.rbi +0 -1081
  243. data/sorbet/rbi/gems/mail@2.8.1.rbi +0 -9
  244. data/sorbet/rbi/gems/marcel@1.0.4.rbi +0 -9
  245. data/sorbet/rbi/gems/method_source@1.1.0.rbi +0 -304
  246. data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +0 -9
  247. data/sorbet/rbi/gems/minitest@5.25.4.rbi +0 -1547
  248. data/sorbet/rbi/gems/mocha@2.7.1.rbi +0 -12
  249. data/sorbet/rbi/gems/msgpack@1.7.5.rbi +0 -320
  250. data/sorbet/rbi/gems/net-imap@0.5.2.rbi +0 -9
  251. data/sorbet/rbi/gems/net-pop@0.1.2.rbi +0 -9
  252. data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +0 -292
  253. data/sorbet/rbi/gems/net-smtp@0.5.0.rbi +0 -9
  254. data/sorbet/rbi/gems/netrc@0.11.0.rbi +0 -159
  255. data/sorbet/rbi/gems/nio4r@2.7.4.rbi +0 -9
  256. data/sorbet/rbi/gems/nokogiri@1.17.2.rbi +0 -8201
  257. data/sorbet/rbi/gems/parallel@1.26.3.rbi +0 -291
  258. data/sorbet/rbi/gems/parser@3.3.6.0.rbi +0 -5519
  259. data/sorbet/rbi/gems/prism@1.2.0.rbi +0 -39085
  260. data/sorbet/rbi/gems/pry-byebug@3.10.1.rbi +0 -1151
  261. data/sorbet/rbi/gems/pry@0.14.2.rbi +0 -10076
  262. data/sorbet/rbi/gems/psych@5.2.1.rbi +0 -1785
  263. data/sorbet/rbi/gems/racc@1.8.1.rbi +0 -162
  264. data/sorbet/rbi/gems/rack-session@2.0.0.rbi +0 -727
  265. data/sorbet/rbi/gems/rack-test@2.1.0.rbi +0 -747
  266. data/sorbet/rbi/gems/rack@3.1.8.rbi +0 -4905
  267. data/sorbet/rbi/gems/rackup@2.2.1.rbi +0 -230
  268. data/sorbet/rbi/gems/rails-dom-testing@2.2.0.rbi +0 -758
  269. data/sorbet/rbi/gems/rails-html-sanitizer@1.6.2.rbi +0 -785
  270. data/sorbet/rbi/gems/rails@8.0.1.rbi +0 -9
  271. data/sorbet/rbi/gems/railties@8.0.1.rbi +0 -6347
  272. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +0 -403
  273. data/sorbet/rbi/gems/rake@13.2.1.rbi +0 -3028
  274. data/sorbet/rbi/gems/rbi@0.2.1.rbi +0 -4535
  275. data/sorbet/rbi/gems/rdoc@6.9.1.rbi +0 -12593
  276. data/sorbet/rbi/gems/regexp_parser@2.9.3.rbi +0 -3772
  277. data/sorbet/rbi/gems/reline@0.6.0.rbi +0 -2454
  278. data/sorbet/rbi/gems/rexml@3.4.0.rbi +0 -4871
  279. data/sorbet/rbi/gems/rspec-core@3.13.2.rbi +0 -11284
  280. data/sorbet/rbi/gems/rspec-expectations@3.13.3.rbi +0 -8183
  281. data/sorbet/rbi/gems/rspec-mocks@3.13.2.rbi +0 -5341
  282. data/sorbet/rbi/gems/rspec-support@3.13.2.rbi +0 -1630
  283. data/sorbet/rbi/gems/rspec@3.13.0.rbi +0 -83
  284. data/sorbet/rbi/gems/rubocop-ast@1.37.0.rbi +0 -7713
  285. data/sorbet/rbi/gems/rubocop-md@1.2.4.rbi +0 -123
  286. data/sorbet/rbi/gems/rubocop-minitest@0.36.0.rbi +0 -2613
  287. data/sorbet/rbi/gems/rubocop-packaging@0.5.2.rbi +0 -388
  288. data/sorbet/rbi/gems/rubocop-performance@1.23.0.rbi +0 -9
  289. data/sorbet/rbi/gems/rubocop-rails@2.27.0.rbi +0 -9535
  290. data/sorbet/rbi/gems/rubocop@1.69.2.rbi +0 -59600
  291. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +0 -1318
  292. data/sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi +0 -9
  293. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +0 -78
  294. data/sorbet/rbi/gems/simplecov-html@0.13.1.rbi +0 -225
  295. data/sorbet/rbi/gems/simplecov@0.22.0.rbi +0 -2149
  296. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +0 -9
  297. data/sorbet/rbi/gems/spoom@1.5.0.rbi +0 -4932
  298. data/sorbet/rbi/gems/sqlite3@2.3.1.rbi +0 -1824
  299. data/sorbet/rbi/gems/standard-custom@1.0.2.rbi +0 -9
  300. data/sorbet/rbi/gems/standard-performance@1.6.0.rbi +0 -9
  301. data/sorbet/rbi/gems/standard@1.43.0.rbi +0 -926
  302. data/sorbet/rbi/gems/stringio@3.1.2.rbi +0 -9
  303. data/sorbet/rbi/gems/tapioca@0.16.4.rbi +0 -3597
  304. data/sorbet/rbi/gems/thor@1.3.2.rbi +0 -4378
  305. data/sorbet/rbi/gems/timeout@0.4.2.rbi +0 -151
  306. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +0 -5918
  307. data/sorbet/rbi/gems/unicode-display_width@3.1.2.rbi +0 -130
  308. data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +0 -251
  309. data/sorbet/rbi/gems/uri@1.0.2.rbi +0 -2377
  310. data/sorbet/rbi/gems/useragent@0.16.11.rbi +0 -9
  311. data/sorbet/rbi/gems/websocket-driver@0.7.6.rbi +0 -9
  312. data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +0 -9
  313. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +0 -435
  314. data/sorbet/rbi/gems/yard@0.9.37.rbi +0 -18504
  315. data/sorbet/rbi/gems/zeitwerk@2.7.1.rbi +0 -9
  316. data/sorbet/tapioca/config.yml +0 -13
  317. data/sorbet/tapioca/require.rb +0 -13
@@ -1,155 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "abstract_unit"
4
- require "active_support/core_ext/hash/conversions"
5
-
6
- class Developer < ActiveResource::Base
7
- self.site = "http://37s.sunrise.i:3000"
8
-
9
- class << self
10
- def callback_string(callback_method)
11
- "history << [#{callback_method.to_sym.inspect}, :string]"
12
- end
13
-
14
- def callback_proc(callback_method)
15
- Proc.new { |model| model.history << [callback_method, :proc] }
16
- end
17
-
18
- def define_callback_method(callback_method)
19
- define_method(callback_method) do
20
- self.history << [callback_method, :method]
21
- end
22
- send(callback_method, :"#{callback_method}")
23
- end
24
-
25
- def callback_object(callback_method)
26
- klass = Class.new
27
- klass.send(:define_method, callback_method) do |model|
28
- model.history << [callback_method, :object]
29
- end
30
- klass.new
31
- end
32
- end
33
-
34
- ActiveResource::Callbacks::CALLBACKS.each do |callback_method|
35
- next if callback_method.to_s =~ /^around_/
36
- define_callback_method(callback_method)
37
- send(callback_method, callback_proc(callback_method))
38
- send(callback_method, callback_object(callback_method))
39
- send(callback_method) { |model| model.history << [callback_method, :block] }
40
- end
41
-
42
- def history
43
- @history ||= []
44
- end
45
- end
46
-
47
- class CallbacksTest < ActiveSupport::TestCase
48
- def setup
49
- @developer_attrs = { id: 1, name: "Guillermo", salary: 100_000 }
50
- @developer = { "developer" => @developer_attrs }.to_json
51
- ActiveResource::HttpMock.respond_to do |mock|
52
- mock.post "/developers.json", {}, @developer, 201, "Location" => "/developers/1.json"
53
- mock.get "/developers/1.json", {}, @developer
54
- mock.put "/developers/1.json", {}, nil, 204
55
- mock.delete "/developers/1.json", {}, nil, 200
56
- end
57
- end
58
-
59
- def test_valid?
60
- developer = Developer.new
61
- developer.valid?
62
- assert_equal [
63
- [ :before_validation, :method ],
64
- [ :before_validation, :proc ],
65
- [ :before_validation, :object ],
66
- [ :before_validation, :block ],
67
- [ :after_validation, :method ],
68
- [ :after_validation, :proc ],
69
- [ :after_validation, :object ],
70
- [ :after_validation, :block ],
71
- ], developer.history
72
- end
73
-
74
- def test_create
75
- developer = Developer.create(@developer_attrs)
76
- assert_equal [
77
- [ :before_validation, :method ],
78
- [ :before_validation, :proc ],
79
- [ :before_validation, :object ],
80
- [ :before_validation, :block ],
81
- [ :after_validation, :method ],
82
- [ :after_validation, :proc ],
83
- [ :after_validation, :object ],
84
- [ :after_validation, :block ],
85
- [ :before_save, :method ],
86
- [ :before_save, :proc ],
87
- [ :before_save, :object ],
88
- [ :before_save, :block ],
89
- [ :before_create, :method ],
90
- [ :before_create, :proc ],
91
- [ :before_create, :object ],
92
- [ :before_create, :block ],
93
- [ :after_create, :method ],
94
- [ :after_create, :proc ],
95
- [ :after_create, :object ],
96
- [ :after_create, :block ],
97
- [ :after_save, :method ],
98
- [ :after_save, :proc ],
99
- [ :after_save, :object ],
100
- [ :after_save, :block ]
101
- ], developer.history
102
- end
103
-
104
- def test_update
105
- developer = Developer.find(1)
106
- developer.save
107
- assert_equal [
108
- [ :before_validation, :method ],
109
- [ :before_validation, :proc ],
110
- [ :before_validation, :object ],
111
- [ :before_validation, :block ],
112
- [ :after_validation, :method ],
113
- [ :after_validation, :proc ],
114
- [ :after_validation, :object ],
115
- [ :after_validation, :block ],
116
- [ :before_save, :method ],
117
- [ :before_save, :proc ],
118
- [ :before_save, :object ],
119
- [ :before_save, :block ],
120
- [ :before_update, :method ],
121
- [ :before_update, :proc ],
122
- [ :before_update, :object ],
123
- [ :before_update, :block ],
124
- [ :after_update, :method ],
125
- [ :after_update, :proc ],
126
- [ :after_update, :object ],
127
- [ :after_update, :block ],
128
- [ :after_save, :method ],
129
- [ :after_save, :proc ],
130
- [ :after_save, :object ],
131
- [ :after_save, :block ]
132
- ], developer.history
133
- end
134
-
135
- def test_destroy
136
- developer = Developer.find(1)
137
- developer.destroy
138
- assert_equal [
139
- [ :before_destroy, :method ],
140
- [ :before_destroy, :proc ],
141
- [ :before_destroy, :object ],
142
- [ :before_destroy, :block ],
143
- [ :after_destroy, :method ],
144
- [ :after_destroy, :proc ],
145
- [ :after_destroy, :object ],
146
- [ :after_destroy, :block ]
147
- ], developer.history
148
- end
149
-
150
- def test_delete
151
- developer = Developer.find(1)
152
- Developer.delete(developer.id)
153
- assert_equal [], developer.history
154
- end
155
- end
@@ -1,196 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "abstract_unit"
4
-
5
- class CollectionTest < ActiveSupport::TestCase
6
- def setup
7
- @collection = ActiveResource::Collection.new
8
- end
9
- end
10
-
11
- class BasicCollectionTest < CollectionTest
12
- def test_collection_respond_to_first_or_create
13
- assert @collection.respond_to?(:first_or_create)
14
- end
15
-
16
- def test_collection_respond_to_first_or_initialize
17
- assert @collection.respond_to?(:first_or_initialize)
18
- end
19
-
20
- def test_first_or_create_without_resource_class_raises_error
21
- assert_raise(RuntimeError) { @collection.first_or_create }
22
- end
23
-
24
- def test_first_or_initialize_without_resource_class_raises_error
25
- assert_raise(RuntimeError) { @collection.first_or_initialize }
26
- end
27
-
28
- def respond_to_where
29
- assert @collection.respond_to?(:where)
30
- end
31
- end
32
-
33
- class PaginatedCollection < ActiveResource::Collection
34
- attr_accessor :next_page
35
- def parse_response(parsed)
36
- @elements = parsed["results"]
37
- @next_page = parsed["next_page"]
38
- end
39
- end
40
-
41
- class PaginatedPost < ActiveResource::Base
42
- self.site = "http://37s.sunrise.i:3000"
43
- self.collection_parser = "PaginatedCollection"
44
- end
45
-
46
- class ReduxCollection < ActiveResource::Base
47
- self.site = "http://37s.sunrise.i:3000"
48
- self.collection_parser = PaginatedCollection
49
- end
50
-
51
- class ArrayMethodDelegate < ActiveSupport::TestCase
52
- def setup
53
- @collection = ActiveResource::Collection.new
54
- end
55
-
56
- def test_collection_respond_to_delegated_methods
57
- delegated_methods = [
58
- :==, :[], :&, :*, :+, :-, :<=>, :all?, :any?, :as_json, :at, :assoc, :blank?, :bsearch, :bsearch_index,
59
- :collect, :combination, :compact, :count, :cycle, :deconstruct, :deep_dup, :dig, :difference, :drop,
60
- :drop_while, :each, :each_index, :empty?, :eql?, :excluding, :filter, :fifth, :find_index, :first,
61
- :flatten, :forty_two, :fourth, :from, :hash, :include?, :including, :index, :inspect, :intersect?,
62
- :intersection, :join, :last, :length, :map, :max, :min, :minmax, :none?, :one?, :pack, :permutation,
63
- :pretty_print_cycle, :present?, :product, :reject, :repeated_combination, :repeated_permutation,
64
- :rassoc, :reverse, :reverse_each, :rindex, :rotate, :sample, :second, :second_to_last, :select,
65
- :shelljoin, :shuffle, :size, :slice, :sort, :sum, :take, :take_while, :third, :third_to_last, :to,
66
- :to_a, :to_ary, :to_fs, :to_formatted_s, :to_h, :to_param, :to_query, :to_s, :to_sentence, :to_xml,
67
- :transpose, :union, :uniq, :values_at, :without, :zip
68
- ]
69
-
70
- delegated_methods.each do |method|
71
- assert @collection.respond_to?(method), "Collection should respond to #{method}"
72
- end
73
- end
74
- end
75
-
76
- class CollectionInheritanceTest < ActiveSupport::TestCase
77
- def setup
78
- @post = { id: 1, title: "Awesome" }
79
- @post_even_more = { id: 1, title: "Awesome", subtitle: "EvenMore" }
80
- @posts_hash = { "results" => [@post], :next_page => "/paginated_posts.json?page=2" }
81
- @posts = @posts_hash.to_json
82
- @posts2 = { "results" => [@post.merge(id: 2)], :next_page => nil }.to_json
83
-
84
- @empty_posts = { "results" => [], :next_page => nil }.to_json
85
- @new_post = { id: nil, title: nil }.to_json
86
- ActiveResource::HttpMock.respond_to do |mock|
87
- mock.get "/paginated_posts.json", {}, @posts
88
- mock.get "/paginated_posts/new.json", {}, @new_post
89
- mock.get "/paginated_posts.json?page=2", {}, @posts
90
- mock.get "/paginated_posts.json?title=test", {}, @empty_posts
91
- mock.get "/paginated_posts.json?page=2&title=Awesome", {}, @posts
92
- mock.get "/paginated_posts.json?subtitle=EvenMore&title=Awesome", {}, @posts
93
- mock.get "/paginated_posts.json?title=notfound", {}, nil, 404
94
- mock.get "/paginated_posts.json?title=internalservererror", {}, nil, 500
95
- mock.post "/paginated_posts.json", {}, nil
96
- end
97
- end
98
-
99
- def test_setting_collection_parser
100
- assert_kind_of PaginatedCollection, PaginatedPost.find(:all)
101
- end
102
-
103
- def test_setting_collection_parser_resource_class
104
- assert_equal PaginatedPost, PaginatedPost.where(page: 2).resource_class
105
- end
106
-
107
- def test_setting_collection_parser_query_params
108
- assert_equal({ page: 2 }, PaginatedPost.where(page: 2).query_params)
109
- end
110
-
111
- def test_custom_accessor
112
- assert_equal PaginatedPost.find(:all).call.next_page, @posts_hash[:next_page]
113
- end
114
-
115
- def test_first_or_create
116
- post = PaginatedPost.where(title: "test").first_or_create
117
- assert post.valid?
118
- end
119
-
120
- def test_first_or_initialize
121
- post = PaginatedPost.where(title: "test").first_or_initialize
122
- assert post.valid?
123
- end
124
-
125
- def test_where
126
- posts = PaginatedPost.where(page: 2)
127
- next_posts = posts.where(title: "Awesome")
128
- assert_kind_of PaginatedCollection, next_posts
129
- end
130
-
131
- def test_where_lazy_chain
132
- expected_request = ActiveResource::Request.new(
133
- :get,
134
- "/paginated_posts.json?subtitle=EvenMore&title=Awesome",
135
- nil,
136
- { "Accept" => "application/json" }
137
- )
138
- posts = PaginatedPost.where(title: "Awesome").where(subtitle: "EvenMore")
139
- assert_not posts.requested?
140
- assert_equal 0, ActiveResource::HttpMock.requests.count { |r| r == expected_request }
141
- # Call twice to ensure the request is only made once
142
- posts.to_a
143
- posts.to_a
144
- assert_equal 1, ActiveResource::HttpMock.requests.count { |r| r == expected_request }
145
- assert posts.requested?
146
- end
147
-
148
- def test_where_lazy_chain_with_no_results
149
- posts = PaginatedPost.where(title: "notfound")
150
- assert_not posts.requested?
151
- assert_equal [], posts.to_a
152
- assert posts.requested?
153
- end
154
-
155
- def test_where_lazy_chain_internal_server_error
156
- posts = PaginatedPost.where(title: "internalservererror")
157
- assert_not posts.requested?
158
- assert_raise ActiveResource::ServerError do
159
- posts.to_a
160
- end
161
- assert posts.requested?
162
- end
163
-
164
- def test_refresh
165
- expected_request = ActiveResource::Request.new(
166
- :get,
167
- "/paginated_posts.json?page=2",
168
- @posts,
169
- { "Accept" => "application/json" }
170
- )
171
- posts = PaginatedPost.where(page: 2)
172
-
173
- assert_not posts.requested?
174
- posts.to_a
175
- assert posts.requested?
176
- assert_equal 1, ActiveResource::HttpMock.requests.count { |r| r == expected_request }
177
- posts.refresh
178
- assert_equal 2, ActiveResource::HttpMock.requests.count { |r| r == expected_request }
179
- assert posts.requested?
180
- end
181
-
182
- def test_call
183
- expected_request = ActiveResource::Request.new(
184
- :get,
185
- "/paginated_posts.json?page=2",
186
- @posts,
187
- { "Accept" => "application/json" }
188
- )
189
- posts = PaginatedPost.where(page: 2)
190
-
191
- assert_not posts.requested?
192
- assert_kind_of PaginatedCollection, posts.call
193
- assert posts.requested?
194
- assert_equal 1, ActiveResource::HttpMock.requests.count { |r| r == expected_request }
195
- end
196
- end
@@ -1,357 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "abstract_unit"
4
-
5
- class ConnectionTest < ActiveSupport::TestCase
6
- ResponseCodeStub = Struct.new(:code)
7
- RedirectResponseStub = Struct.new(:code, :Location)
8
-
9
- def setup
10
- @conn = ActiveResource::Connection.new("http://localhost")
11
- matz = { person: { id: 1, name: "Matz" } }
12
- david = { person: { id: 2, name: "David" } }
13
- @people = { people: [ matz, david ] }.to_json
14
- @people_single = { "people-single-elements" => [ matz ] }.to_json
15
- @people_empty = { "people-empty-elements" => [ ] }.to_json
16
- @matz = matz.to_json
17
- @david = david.to_json
18
- @header = { "key" => "value" }.freeze
19
-
20
- @default_request_headers = { "Content-Type" => "application/json" }
21
- ActiveResource::HttpMock.respond_to do |mock|
22
- mock.get "/people/2.json", @header, @david
23
- mock.get "/people.json", {}, @people
24
- mock.get "/people_single_elements.json", {}, @people_single
25
- mock.get "/people_empty_elements.json", {}, @people_empty
26
- mock.get "/people/1.json", {}, @matz
27
- mock.put "/people/1.json", {}, nil, 204
28
- mock.put "/people/2.json", {}, @header, 204
29
- mock.delete "/people/1.json", {}, nil, 200
30
- mock.delete "/people/2.json", @header, nil, 200
31
- mock.post "/people.json", {}, nil, 201, "Location" => "/people/5.json"
32
- mock.post "/members.json", {}, @header, 201, "Location" => "/people/6.json"
33
- mock.head "/people/1.json", {}, nil, 200
34
- end
35
- end
36
-
37
- def test_same_logger_as_base
38
- old_logger = ActiveResource::Base.logger
39
- ActiveResource::Base.logger = original_logger = Object.new
40
- old_site = ActiveResource::Base.site
41
-
42
- ActiveResource::Base.site = "http://localhost"
43
- assert_equal original_logger, ActiveResource::Base.connection.logger
44
-
45
- ActiveResource::Base.logger = Logger.new(STDOUT)
46
- assert_equal ActiveResource::Base.logger, ActiveResource::Base.connection.logger
47
- ensure
48
- ActiveResource::Base.logger = old_logger
49
- ActiveResource::Base.site = old_site
50
- end
51
-
52
- def test_handle_response
53
- # 2xx and 3xx are valid responses.
54
- [200, 299, 300, 399].each do |code|
55
- expected = ResponseCodeStub.new(code)
56
- assert_equal expected, handle_response(expected)
57
- end
58
-
59
- # 301 is moved permanently (redirect)
60
- assert_redirect_raises 301
61
-
62
- # 302 is found (redirect)
63
- assert_redirect_raises 302
64
-
65
- # 303 is see other (redirect)
66
- assert_redirect_raises 303
67
-
68
- # 307 is temporary redirect
69
- assert_redirect_raises 307
70
-
71
- # 400 is a bad request (e.g. malformed URI or missing request parameter)
72
- assert_response_raises ActiveResource::BadRequest, 400
73
-
74
- # 401 is an unauthorized request
75
- assert_response_raises ActiveResource::UnauthorizedAccess, 401
76
-
77
- # 402 is a payment required error.
78
- assert_response_raises ActiveResource::PaymentRequired, 402
79
-
80
- # 403 is a forbidden request (and authorizing will not help)
81
- assert_response_raises ActiveResource::ForbiddenAccess, 403
82
-
83
- # 404 is a missing resource.
84
- assert_response_raises ActiveResource::ResourceNotFound, 404
85
-
86
- # 405 is a method not allowed error
87
- assert_response_raises ActiveResource::MethodNotAllowed, 405
88
-
89
- # 409 is an optimistic locking error
90
- assert_response_raises ActiveResource::ResourceConflict, 409
91
-
92
- # 410 is a removed resource
93
- assert_response_raises ActiveResource::ResourceGone, 410
94
-
95
- # 412 is a precondition failed
96
- assert_response_raises ActiveResource::PreconditionFailed, 412
97
-
98
- # 422 is a validation error
99
- assert_response_raises ActiveResource::ResourceInvalid, 422
100
-
101
- # 429 is too many requests
102
- assert_response_raises ActiveResource::TooManyRequests, 429
103
-
104
- # 4xx are client errors.
105
- [402, 499].each do |code|
106
- assert_response_raises ActiveResource::ClientError, code
107
- end
108
-
109
- # 5xx are server errors.
110
- [500, 599].each do |code|
111
- assert_response_raises ActiveResource::ServerError, code
112
- end
113
-
114
- # Others are unknown.
115
- [199, 600].each do |code|
116
- assert_response_raises ActiveResource::ConnectionError, code
117
- end
118
- end
119
-
120
- ResponseHeaderStub = Struct.new(:code, :message, "Allow")
121
- def test_should_return_allowed_methods_for_method_no_allowed_exception
122
- handle_response ResponseHeaderStub.new(405, "HTTP Failed...", "GET, POST")
123
- rescue ActiveResource::MethodNotAllowed => e
124
- assert_equal "Failed. Response code = 405. Response message = HTTP Failed....", e.message
125
- assert_equal [:get, :post], e.allowed_methods
126
- end
127
-
128
- def test_initialize_raises_argument_error_on_missing_site
129
- assert_raise(ArgumentError) { ActiveResource::Connection.new(nil) }
130
- end
131
-
132
- def test_site_accessor_accepts_uri_or_string_argument
133
- site = URI.parse("http://localhost")
134
-
135
- assert_raise(URI::InvalidURIError) { @conn.site = nil }
136
-
137
- assert_nothing_raised { @conn.site = "http://localhost" }
138
- assert_equal site, @conn.site
139
-
140
- assert_nothing_raised { @conn.site = site }
141
- assert_equal site, @conn.site
142
- end
143
-
144
- def test_proxy_accessor_accepts_uri_or_string_argument
145
- proxy = URI.parse("http://proxy_user:proxy_password@proxy.local:4242")
146
-
147
- assert_nothing_raised { @conn.proxy = "http://proxy_user:proxy_password@proxy.local:4242" }
148
- assert_equal proxy, @conn.proxy
149
-
150
- assert_nothing_raised { @conn.proxy = proxy }
151
- assert_equal proxy, @conn.proxy
152
- end
153
-
154
- def test_proxy_accessor_accepts_uri_or_string_argument_with_special_characters
155
- user = "proxy_;{(,!$%_user"
156
- password = "proxy_;:{(,!$%_password"
157
-
158
- encoded_user = URI.encode_www_form_component(user) # "proxy_;%7B(,!$%25_user"
159
- encoded_password = URI.encode_www_form_component(password) # "proxy_;:%7B(,!$%25_password"
160
-
161
- proxy = URI.parse("http://#{encoded_user}:#{encoded_password}@proxy.local:4242")
162
-
163
- assert_nothing_raised { @conn.proxy = "http://#{encoded_user}:#{encoded_password}@proxy.local:4242" }
164
- assert_equal user, @conn.send(:new_http).proxy_user
165
- assert_equal password, @conn.send(:new_http).proxy_pass
166
-
167
- assert_nothing_raised { @conn.proxy = proxy }
168
- assert_equal user, @conn.send(:new_http).proxy_user
169
- assert_equal password, @conn.send(:new_http).proxy_pass
170
- end
171
-
172
- def test_timeout_accessor
173
- @conn.timeout = 5
174
- assert_equal 5, @conn.timeout
175
- end
176
-
177
- def test_get
178
- matz = decode(@conn.get("/people/1.json"))
179
- assert_equal "Matz", matz["name"]
180
- end
181
-
182
- def test_head
183
- response = @conn.head("/people/1.json")
184
- assert response.body.blank?
185
- assert_equal 200, response.code
186
- end
187
-
188
- def test_get_with_header
189
- david = decode(@conn.get("/people/2.json", @header))
190
- assert_equal "David", david["name"]
191
- end
192
-
193
- def test_get_collection
194
- people = decode(@conn.get("/people.json"))
195
- assert_equal "Matz", people[0]["person"]["name"]
196
- assert_equal "David", people[1]["person"]["name"]
197
- end
198
-
199
- def test_get_collection_single
200
- people = decode(@conn.get("/people_single_elements.json"))
201
- assert_equal "Matz", people[0]["person"]["name"]
202
- end
203
-
204
- def test_get_collection_empty
205
- people = decode(@conn.get("/people_empty_elements.json"))
206
- assert_equal [], people
207
- end
208
-
209
- def test_post
210
- response = @conn.post("/people.json")
211
- assert_equal "/people/5.json", response["Location"]
212
- end
213
-
214
- def test_post_with_header
215
- response = @conn.post("/members.json", @header)
216
- assert_equal "/people/6.json", response["Location"]
217
- end
218
-
219
- def test_put
220
- response = @conn.put("/people/1.json")
221
- assert_equal 204, response.code
222
- end
223
-
224
- def test_put_with_header
225
- response = @conn.put("/people/2.json", @header)
226
- assert_equal 204, response.code
227
- end
228
-
229
- def test_delete
230
- response = @conn.delete("/people/1.json")
231
- assert_equal 200, response.code
232
- end
233
-
234
- def test_delete_with_header
235
- response = @conn.delete("/people/2.json", @header)
236
- assert_equal 200, response.code
237
- end
238
-
239
- def test_timeout
240
- @http = mock("new Net::HTTP")
241
- @conn.expects(:http).returns(@http)
242
- @http.expects(:get).raises(Timeout::Error, "execution expired")
243
- assert_raise(ActiveResource::TimeoutError) { @conn.get("/people_timeout.json") }
244
- end
245
-
246
- def test_setting_timeout
247
- http = Net::HTTP.new("")
248
-
249
- [10, 20].each do |timeout|
250
- @conn.timeout = timeout
251
- @conn.send(:configure_http, http)
252
- assert_equal timeout, http.open_timeout
253
- assert_equal timeout, http.read_timeout
254
- end
255
- end
256
-
257
- def test_accept_http_header
258
- @http = mock("new Net::HTTP")
259
- @conn.expects(:http).returns(@http)
260
- path = "/people/1.xml"
261
- @http.expects(:get).with(path, { "Accept" => "application/xhtml+xml" }).returns(ActiveResource::Response.new(@matz, 200, { "Content-Type" => "text/xhtml" }))
262
- assert_nothing_raised { @conn.get(path, "Accept" => "application/xhtml+xml") }
263
- end
264
-
265
- def test_ssl_options_get_applied_to_http
266
- http = Net::HTTP.new("")
267
- @conn.site = "https://secure"
268
- @conn.ssl_options = { verify_mode: OpenSSL::SSL::VERIFY_PEER }
269
- @conn.send(:configure_http, http)
270
-
271
- assert http.use_ssl?
272
- assert_equal http.verify_mode, OpenSSL::SSL::VERIFY_PEER
273
- end
274
-
275
- def test_ssl_options_get_applied_to_https_urls_without_explicitly_setting_ssl_options
276
- http = Net::HTTP.new("")
277
- @conn.site = "https://secure"
278
- assert @conn.send(:configure_http, http).use_ssl?
279
- end
280
-
281
- def test_ssl_error
282
- http = Net::HTTP.new("")
283
- @conn.expects(:http).returns(http)
284
- http.expects(:get).raises(OpenSSL::SSL::SSLError, "Expired certificate")
285
- assert_raise(ActiveResource::SSLError) { @conn.get("/people/1.json") }
286
- end
287
-
288
- def test_auth_type_can_be_string
289
- @conn.auth_type = "digest"
290
- assert_equal(:digest, @conn.auth_type)
291
- end
292
-
293
- def test_auth_type_defaults_to_basic
294
- @conn.auth_type = nil
295
- assert_equal(:basic, @conn.auth_type)
296
- end
297
-
298
- def test_auth_type_ignores_nonsensical_values
299
- @conn.auth_type = :wibble
300
- assert_equal(:basic, @conn.auth_type)
301
- end
302
-
303
- def test_disable_net_connection_by_default_when_http_mock_is_available
304
- assert_equal(ActiveResource::HttpMock, @conn.send(:http).class)
305
- end
306
-
307
- def test_enable_net_connection
308
- @conn.send(:http)
309
- keep_net_connection_status do
310
- ActiveResource::HttpMock.enable_net_connection!
311
- assert @conn.send(:http).kind_of?(Net::HTTP)
312
- end
313
- end
314
-
315
- def test_disable_net_connection
316
- keep_net_connection_status do
317
- ActiveResource::HttpMock.enable_net_connection!
318
- @conn.send(:http)
319
- ActiveResource::HttpMock.disable_net_connection!
320
- assert @conn.send(:http).kind_of?(ActiveResource::HttpMock)
321
- end
322
- end
323
-
324
- def keep_net_connection_status
325
- old = ActiveResource::HttpMock.net_connection_enabled?
326
- begin
327
- yield
328
- ensure
329
- if old
330
- ActiveResource::HttpMock.enable_net_connection!
331
- else
332
- ActiveResource::HttpMock.disable_net_connection!
333
- end
334
- end
335
- end
336
-
337
- protected
338
- def assert_response_raises(klass, code)
339
- assert_raise(klass, "Expected response code #{code} to raise #{klass}") do
340
- handle_response ResponseCodeStub.new(code)
341
- end
342
- end
343
-
344
- def assert_redirect_raises(code)
345
- assert_raise(ActiveResource::Redirection, "Expected response code #{code} to raise ActiveResource::Redirection") do
346
- handle_response RedirectResponseStub.new(code, "http://example.com/")
347
- end
348
- end
349
-
350
- def handle_response(response)
351
- @conn.__send__(:handle_response, response)
352
- end
353
-
354
- def decode(response)
355
- @conn.format.decode(response.body)
356
- end
357
- end