active_cached_resource 0.1.0 → 0.1.1

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 (316) 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. metadata +2 -308
  10. data/.rspec +0 -3
  11. data/.rubocop.yml +0 -23
  12. data/.standard.yml +0 -2
  13. data/Rakefile +0 -29
  14. data/example/consumer/.dockerignore +0 -41
  15. data/example/consumer/.gitattributes +0 -9
  16. data/example/consumer/.gitignore +0 -36
  17. data/example/consumer/.kamal/hooks/docker-setup.sample +0 -3
  18. data/example/consumer/.kamal/hooks/post-deploy.sample +0 -14
  19. data/example/consumer/.kamal/hooks/post-proxy-reboot.sample +0 -3
  20. data/example/consumer/.kamal/hooks/pre-build.sample +0 -51
  21. data/example/consumer/.kamal/hooks/pre-connect.sample +0 -47
  22. data/example/consumer/.kamal/hooks/pre-deploy.sample +0 -109
  23. data/example/consumer/.kamal/hooks/pre-proxy-reboot.sample +0 -3
  24. data/example/consumer/.kamal/secrets +0 -17
  25. data/example/consumer/Dockerfile +0 -65
  26. data/example/consumer/Gemfile +0 -17
  27. data/example/consumer/Rakefile +0 -6
  28. data/example/consumer/app/controllers/application_controller.rb +0 -2
  29. data/example/consumer/app/controllers/concerns/.keep +0 -0
  30. data/example/consumer/app/jobs/application_job.rb +0 -7
  31. data/example/consumer/app/mailers/application_mailer.rb +0 -4
  32. data/example/consumer/app/models/application_record.rb +0 -3
  33. data/example/consumer/app/models/concerns/.keep +0 -0
  34. data/example/consumer/app/models/person.rb +0 -9
  35. data/example/consumer/app/views/layouts/mailer.html.erb +0 -13
  36. data/example/consumer/app/views/layouts/mailer.text.erb +0 -1
  37. data/example/consumer/bin/brakeman +0 -7
  38. data/example/consumer/bin/bundle +0 -109
  39. data/example/consumer/bin/dev +0 -2
  40. data/example/consumer/bin/docker-entrypoint +0 -14
  41. data/example/consumer/bin/jobs +0 -6
  42. data/example/consumer/bin/kamal +0 -27
  43. data/example/consumer/bin/rails +0 -4
  44. data/example/consumer/bin/rake +0 -4
  45. data/example/consumer/bin/rubocop +0 -8
  46. data/example/consumer/bin/setup +0 -34
  47. data/example/consumer/bin/thrust +0 -5
  48. data/example/consumer/config/application.rb +0 -20
  49. data/example/consumer/config/boot.rb +0 -3
  50. data/example/consumer/config/cache.yml +0 -16
  51. data/example/consumer/config/credentials.yml.enc +0 -1
  52. data/example/consumer/config/database.yml +0 -14
  53. data/example/consumer/config/deploy.yml +0 -116
  54. data/example/consumer/config/environment.rb +0 -5
  55. data/example/consumer/config/environments/development.rb +0 -64
  56. data/example/consumer/config/environments/production.rb +0 -85
  57. data/example/consumer/config/environments/test.rb +0 -50
  58. data/example/consumer/config/initializers/cors.rb +0 -16
  59. data/example/consumer/config/initializers/filter_parameter_logging.rb +0 -8
  60. data/example/consumer/config/initializers/inflections.rb +0 -16
  61. data/example/consumer/config/locales/en.yml +0 -31
  62. data/example/consumer/config/puma.rb +0 -41
  63. data/example/consumer/config/queue.yml +0 -18
  64. data/example/consumer/config/recurring.yml +0 -10
  65. data/example/consumer/config/routes.rb +0 -10
  66. data/example/consumer/config.ru +0 -6
  67. data/example/consumer/db/cache_schema.rb +0 -14
  68. data/example/consumer/db/queue_schema.rb +0 -129
  69. data/example/consumer/db/seeds.rb +0 -0
  70. data/example/consumer/lib/tasks/.keep +0 -0
  71. data/example/consumer/log/.keep +0 -0
  72. data/example/consumer/public/robots.txt +0 -1
  73. data/example/consumer/script/.keep +0 -0
  74. data/example/consumer/storage/.keep +0 -0
  75. data/example/consumer/tmp/.keep +0 -0
  76. data/example/consumer/tmp/cache/.keep +0 -0
  77. data/example/consumer/tmp/pids/.keep +0 -0
  78. data/example/consumer/tmp/storage/.keep +0 -0
  79. data/example/consumer/vendor/.keep +0 -0
  80. data/example/provider/.dockerignore +0 -41
  81. data/example/provider/.gitattributes +0 -9
  82. data/example/provider/.gitignore +0 -32
  83. data/example/provider/.kamal/hooks/docker-setup.sample +0 -3
  84. data/example/provider/.kamal/hooks/post-deploy.sample +0 -14
  85. data/example/provider/.kamal/hooks/post-proxy-reboot.sample +0 -3
  86. data/example/provider/.kamal/hooks/pre-build.sample +0 -51
  87. data/example/provider/.kamal/hooks/pre-connect.sample +0 -47
  88. data/example/provider/.kamal/hooks/pre-deploy.sample +0 -109
  89. data/example/provider/.kamal/hooks/pre-proxy-reboot.sample +0 -3
  90. data/example/provider/.kamal/secrets +0 -17
  91. data/example/provider/Dockerfile +0 -65
  92. data/example/provider/Gemfile +0 -14
  93. data/example/provider/Rakefile +0 -6
  94. data/example/provider/app/controllers/application_controller.rb +0 -2
  95. data/example/provider/app/controllers/concerns/.keep +0 -0
  96. data/example/provider/app/controllers/people_controller.rb +0 -68
  97. data/example/provider/app/jobs/application_job.rb +0 -7
  98. data/example/provider/app/mailers/application_mailer.rb +0 -4
  99. data/example/provider/app/models/address.rb +0 -3
  100. data/example/provider/app/models/application_record.rb +0 -3
  101. data/example/provider/app/models/company.rb +0 -3
  102. data/example/provider/app/models/concerns/.keep +0 -0
  103. data/example/provider/app/models/person.rb +0 -6
  104. data/example/provider/app/views/layouts/mailer.html.erb +0 -13
  105. data/example/provider/app/views/layouts/mailer.text.erb +0 -1
  106. data/example/provider/bin/brakeman +0 -7
  107. data/example/provider/bin/bundle +0 -109
  108. data/example/provider/bin/dev +0 -2
  109. data/example/provider/bin/docker-entrypoint +0 -14
  110. data/example/provider/bin/jobs +0 -6
  111. data/example/provider/bin/kamal +0 -27
  112. data/example/provider/bin/rails +0 -4
  113. data/example/provider/bin/rake +0 -4
  114. data/example/provider/bin/rubocop +0 -8
  115. data/example/provider/bin/setup +0 -34
  116. data/example/provider/bin/thrust +0 -5
  117. data/example/provider/config/application.rb +0 -44
  118. data/example/provider/config/boot.rb +0 -3
  119. data/example/provider/config/cache.yml +0 -16
  120. data/example/provider/config/credentials.yml.enc +0 -1
  121. data/example/provider/config/database.yml +0 -20
  122. data/example/provider/config/deploy.yml +0 -116
  123. data/example/provider/config/environment.rb +0 -5
  124. data/example/provider/config/environments/development.rb +0 -64
  125. data/example/provider/config/environments/production.rb +0 -85
  126. data/example/provider/config/environments/test.rb +0 -50
  127. data/example/provider/config/initializers/cors.rb +0 -16
  128. data/example/provider/config/initializers/filter_parameter_logging.rb +0 -8
  129. data/example/provider/config/initializers/inflections.rb +0 -16
  130. data/example/provider/config/locales/en.yml +0 -31
  131. data/example/provider/config/puma.rb +0 -41
  132. data/example/provider/config/queue.yml +0 -18
  133. data/example/provider/config/recurring.yml +0 -10
  134. data/example/provider/config/routes.rb +0 -4
  135. data/example/provider/config.ru +0 -6
  136. data/example/provider/db/cache_schema.rb +0 -14
  137. data/example/provider/db/migrate/20241202183937_create_people.rb +0 -11
  138. data/example/provider/db/migrate/20241202183955_create_addresses.rb +0 -13
  139. data/example/provider/db/migrate/20241202184017_create_companies.rb +0 -14
  140. data/example/provider/db/queue_schema.rb +0 -129
  141. data/example/provider/db/schema.rb +0 -47
  142. data/example/provider/db/seeds.rb +0 -18
  143. data/example/provider/lib/tasks/.keep +0 -0
  144. data/example/provider/log/.keep +0 -0
  145. data/example/provider/public/robots.txt +0 -1
  146. data/example/provider/script/.keep +0 -0
  147. data/example/provider/storage/.keep +0 -0
  148. data/example/provider/tmp/.keep +0 -0
  149. data/example/provider/tmp/pids/.keep +0 -0
  150. data/example/provider/tmp/storage/.keep +0 -0
  151. data/example/provider/vendor/.keep +0 -0
  152. data/lib/activeresource/.gitignore +0 -15
  153. data/lib/activeresource/examples/performance.rb +0 -72
  154. data/lib/activeresource/test/abstract_unit.rb +0 -154
  155. data/lib/activeresource/test/cases/active_job_serializer_test.rb +0 -53
  156. data/lib/activeresource/test/cases/association_test.rb +0 -104
  157. data/lib/activeresource/test/cases/associations/builder/belongs_to_test.rb +0 -42
  158. data/lib/activeresource/test/cases/associations/builder/has_many_test.rb +0 -28
  159. data/lib/activeresource/test/cases/associations/builder/has_one_test.rb +0 -28
  160. data/lib/activeresource/test/cases/authorization_test.rb +0 -276
  161. data/lib/activeresource/test/cases/base/custom_methods_test.rb +0 -155
  162. data/lib/activeresource/test/cases/base/equality_test.rb +0 -53
  163. data/lib/activeresource/test/cases/base/load_test.rb +0 -249
  164. data/lib/activeresource/test/cases/base/schema_test.rb +0 -428
  165. data/lib/activeresource/test/cases/base_errors_test.rb +0 -129
  166. data/lib/activeresource/test/cases/base_test.rb +0 -1622
  167. data/lib/activeresource/test/cases/callbacks_test.rb +0 -155
  168. data/lib/activeresource/test/cases/collection_test.rb +0 -196
  169. data/lib/activeresource/test/cases/connection_test.rb +0 -357
  170. data/lib/activeresource/test/cases/finder_test.rb +0 -217
  171. data/lib/activeresource/test/cases/format_test.rb +0 -137
  172. data/lib/activeresource/test/cases/http_mock_test.rb +0 -213
  173. data/lib/activeresource/test/cases/inheritence_test.rb +0 -19
  174. data/lib/activeresource/test/cases/inheriting_hash_test.rb +0 -25
  175. data/lib/activeresource/test/cases/log_subscriber_test.rb +0 -64
  176. data/lib/activeresource/test/cases/reflection_test.rb +0 -65
  177. data/lib/activeresource/test/cases/validations_test.rb +0 -78
  178. data/lib/activeresource/test/fixtures/address.rb +0 -20
  179. data/lib/activeresource/test/fixtures/beast.rb +0 -16
  180. data/lib/activeresource/test/fixtures/comment.rb +0 -5
  181. data/lib/activeresource/test/fixtures/customer.rb +0 -5
  182. data/lib/activeresource/test/fixtures/fixtures.rbi +0 -46
  183. data/lib/activeresource/test/fixtures/inventory.rb +0 -14
  184. data/lib/activeresource/test/fixtures/person.rb +0 -15
  185. data/lib/activeresource/test/fixtures/pet.rb +0 -6
  186. data/lib/activeresource/test/fixtures/post.rb +0 -5
  187. data/lib/activeresource/test/fixtures/product.rb +0 -11
  188. data/lib/activeresource/test/fixtures/project.rb +0 -19
  189. data/lib/activeresource/test/fixtures/proxy.rb +0 -6
  190. data/lib/activeresource/test/fixtures/sound.rb +0 -11
  191. data/lib/activeresource/test/fixtures/street_address.rb +0 -6
  192. data/lib/activeresource/test/fixtures/subscription_plan.rb +0 -7
  193. data/lib/activeresource/test/fixtures/weather.rb +0 -21
  194. data/lib/activeresource/test/setter_trap.rb +0 -28
  195. data/lib/activeresource/test/singleton_test.rb +0 -138
  196. data/lib/activeresource/test/threadsafe_attributes_test.rb +0 -91
  197. data/sorbet/config +0 -6
  198. data/sorbet/rbi/annotations/.gitattributes +0 -1
  199. data/sorbet/rbi/annotations/activemodel.rbi +0 -89
  200. data/sorbet/rbi/annotations/activesupport.rbi +0 -457
  201. data/sorbet/rbi/annotations/minitest.rbi +0 -119
  202. data/sorbet/rbi/annotations/rainbow.rbi +0 -269
  203. data/sorbet/rbi/dsl/.gitattributes +0 -1
  204. data/sorbet/rbi/dsl/active_support/callbacks.rbi +0 -21
  205. data/sorbet/rbi/gems/.gitattributes +0 -1
  206. data/sorbet/rbi/gems/actioncable@8.0.1.rbi +0 -252
  207. data/sorbet/rbi/gems/actionmailbox@8.0.1.rbi +0 -9
  208. data/sorbet/rbi/gems/actionmailer@8.0.1.rbi +0 -9
  209. data/sorbet/rbi/gems/actionpack@8.0.1.rbi +0 -21111
  210. data/sorbet/rbi/gems/actiontext@8.0.1.rbi +0 -9
  211. data/sorbet/rbi/gems/actionview@8.0.1.rbi +0 -16409
  212. data/sorbet/rbi/gems/activejob@8.0.1.rbi +0 -90
  213. data/sorbet/rbi/gems/activemodel-serializers-xml@1.0.3.rbi +0 -166
  214. data/sorbet/rbi/gems/activemodel@8.0.1.rbi +0 -6865
  215. data/sorbet/rbi/gems/activerecord@8.0.1.rbi +0 -43277
  216. data/sorbet/rbi/gems/activestorage@8.0.1.rbi +0 -9
  217. data/sorbet/rbi/gems/activesupport@8.0.1.rbi +0 -21426
  218. data/sorbet/rbi/gems/ast@2.4.2.rbi +0 -585
  219. data/sorbet/rbi/gems/base64@0.2.0.rbi +0 -509
  220. data/sorbet/rbi/gems/benchmark@0.4.0.rbi +0 -618
  221. data/sorbet/rbi/gems/bigdecimal@3.1.8.rbi +0 -78
  222. data/sorbet/rbi/gems/builder@3.3.0.rbi +0 -9
  223. data/sorbet/rbi/gems/bump@0.10.0.rbi +0 -169
  224. data/sorbet/rbi/gems/byebug@11.1.3.rbi +0 -3607
  225. data/sorbet/rbi/gems/coderay@1.1.3.rbi +0 -3427
  226. data/sorbet/rbi/gems/concurrent-ruby@1.3.4.rbi +0 -11645
  227. data/sorbet/rbi/gems/connection_pool@2.4.1.rbi +0 -9
  228. data/sorbet/rbi/gems/crass@1.0.6.rbi +0 -623
  229. data/sorbet/rbi/gems/date@3.4.1.rbi +0 -75
  230. data/sorbet/rbi/gems/diff-lcs@1.5.1.rbi +0 -1131
  231. data/sorbet/rbi/gems/docile@1.4.1.rbi +0 -377
  232. data/sorbet/rbi/gems/drb@2.2.1.rbi +0 -1347
  233. data/sorbet/rbi/gems/erubi@1.13.0.rbi +0 -150
  234. data/sorbet/rbi/gems/globalid@1.2.1.rbi +0 -9
  235. data/sorbet/rbi/gems/i18n@1.14.6.rbi +0 -2359
  236. data/sorbet/rbi/gems/io-console@0.8.0.rbi +0 -9
  237. data/sorbet/rbi/gems/json@2.9.0.rbi +0 -1944
  238. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +0 -14238
  239. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +0 -240
  240. data/sorbet/rbi/gems/logger@1.6.3.rbi +0 -940
  241. data/sorbet/rbi/gems/loofah@2.23.1.rbi +0 -1081
  242. data/sorbet/rbi/gems/mail@2.8.1.rbi +0 -9
  243. data/sorbet/rbi/gems/marcel@1.0.4.rbi +0 -9
  244. data/sorbet/rbi/gems/method_source@1.1.0.rbi +0 -304
  245. data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +0 -9
  246. data/sorbet/rbi/gems/minitest@5.25.4.rbi +0 -1547
  247. data/sorbet/rbi/gems/mocha@2.7.1.rbi +0 -12
  248. data/sorbet/rbi/gems/msgpack@1.7.5.rbi +0 -320
  249. data/sorbet/rbi/gems/net-imap@0.5.2.rbi +0 -9
  250. data/sorbet/rbi/gems/net-pop@0.1.2.rbi +0 -9
  251. data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +0 -292
  252. data/sorbet/rbi/gems/net-smtp@0.5.0.rbi +0 -9
  253. data/sorbet/rbi/gems/netrc@0.11.0.rbi +0 -159
  254. data/sorbet/rbi/gems/nio4r@2.7.4.rbi +0 -9
  255. data/sorbet/rbi/gems/nokogiri@1.17.2.rbi +0 -8201
  256. data/sorbet/rbi/gems/parallel@1.26.3.rbi +0 -291
  257. data/sorbet/rbi/gems/parser@3.3.6.0.rbi +0 -5519
  258. data/sorbet/rbi/gems/prism@1.2.0.rbi +0 -39085
  259. data/sorbet/rbi/gems/pry-byebug@3.10.1.rbi +0 -1151
  260. data/sorbet/rbi/gems/pry@0.14.2.rbi +0 -10076
  261. data/sorbet/rbi/gems/psych@5.2.1.rbi +0 -1785
  262. data/sorbet/rbi/gems/racc@1.8.1.rbi +0 -162
  263. data/sorbet/rbi/gems/rack-session@2.0.0.rbi +0 -727
  264. data/sorbet/rbi/gems/rack-test@2.1.0.rbi +0 -747
  265. data/sorbet/rbi/gems/rack@3.1.8.rbi +0 -4905
  266. data/sorbet/rbi/gems/rackup@2.2.1.rbi +0 -230
  267. data/sorbet/rbi/gems/rails-dom-testing@2.2.0.rbi +0 -758
  268. data/sorbet/rbi/gems/rails-html-sanitizer@1.6.2.rbi +0 -785
  269. data/sorbet/rbi/gems/rails@8.0.1.rbi +0 -9
  270. data/sorbet/rbi/gems/railties@8.0.1.rbi +0 -6347
  271. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +0 -403
  272. data/sorbet/rbi/gems/rake@13.2.1.rbi +0 -3028
  273. data/sorbet/rbi/gems/rbi@0.2.1.rbi +0 -4535
  274. data/sorbet/rbi/gems/rdoc@6.9.1.rbi +0 -12593
  275. data/sorbet/rbi/gems/regexp_parser@2.9.3.rbi +0 -3772
  276. data/sorbet/rbi/gems/reline@0.6.0.rbi +0 -2454
  277. data/sorbet/rbi/gems/rexml@3.4.0.rbi +0 -4871
  278. data/sorbet/rbi/gems/rspec-core@3.13.2.rbi +0 -11284
  279. data/sorbet/rbi/gems/rspec-expectations@3.13.3.rbi +0 -8183
  280. data/sorbet/rbi/gems/rspec-mocks@3.13.2.rbi +0 -5341
  281. data/sorbet/rbi/gems/rspec-support@3.13.2.rbi +0 -1630
  282. data/sorbet/rbi/gems/rspec@3.13.0.rbi +0 -83
  283. data/sorbet/rbi/gems/rubocop-ast@1.37.0.rbi +0 -7713
  284. data/sorbet/rbi/gems/rubocop-md@1.2.4.rbi +0 -123
  285. data/sorbet/rbi/gems/rubocop-minitest@0.36.0.rbi +0 -2613
  286. data/sorbet/rbi/gems/rubocop-packaging@0.5.2.rbi +0 -388
  287. data/sorbet/rbi/gems/rubocop-performance@1.23.0.rbi +0 -9
  288. data/sorbet/rbi/gems/rubocop-rails@2.27.0.rbi +0 -9535
  289. data/sorbet/rbi/gems/rubocop@1.69.2.rbi +0 -59600
  290. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +0 -1318
  291. data/sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi +0 -9
  292. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +0 -78
  293. data/sorbet/rbi/gems/simplecov-html@0.13.1.rbi +0 -225
  294. data/sorbet/rbi/gems/simplecov@0.22.0.rbi +0 -2149
  295. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +0 -9
  296. data/sorbet/rbi/gems/spoom@1.5.0.rbi +0 -4932
  297. data/sorbet/rbi/gems/sqlite3@2.3.1.rbi +0 -1824
  298. data/sorbet/rbi/gems/standard-custom@1.0.2.rbi +0 -9
  299. data/sorbet/rbi/gems/standard-performance@1.6.0.rbi +0 -9
  300. data/sorbet/rbi/gems/standard@1.43.0.rbi +0 -926
  301. data/sorbet/rbi/gems/stringio@3.1.2.rbi +0 -9
  302. data/sorbet/rbi/gems/tapioca@0.16.4.rbi +0 -3597
  303. data/sorbet/rbi/gems/thor@1.3.2.rbi +0 -4378
  304. data/sorbet/rbi/gems/timeout@0.4.2.rbi +0 -151
  305. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +0 -5918
  306. data/sorbet/rbi/gems/unicode-display_width@3.1.2.rbi +0 -130
  307. data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +0 -251
  308. data/sorbet/rbi/gems/uri@1.0.2.rbi +0 -2377
  309. data/sorbet/rbi/gems/useragent@0.16.11.rbi +0 -9
  310. data/sorbet/rbi/gems/websocket-driver@0.7.6.rbi +0 -9
  311. data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +0 -9
  312. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +0 -435
  313. data/sorbet/rbi/gems/yard@0.9.37.rbi +0 -18504
  314. data/sorbet/rbi/gems/zeitwerk@2.7.1.rbi +0 -9
  315. data/sorbet/tapioca/config.yml +0 -13
  316. 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