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,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "abstract_unit"
4
-
5
- require "fixtures/person"
6
- require "fixtures/customer"
7
-
8
-
9
-
10
- class ReflectionTest < ActiveSupport::TestCase
11
- def test_correct_class_attributes
12
- object = ActiveResource::Reflection::AssociationReflection.new(:test, :people, {})
13
- assert_equal :people, object.name
14
- assert_equal :test, object.macro
15
- assert_equal({}, object.options)
16
- end
17
-
18
- def test_correct_class_name_matching_without_class_name
19
- object = ActiveResource::Reflection::AssociationReflection.new(:test, :people, {})
20
- assert_equal Person, object.klass
21
- end
22
-
23
- def test_correct_class_name_matching_as_string
24
- object = ActiveResource::Reflection::AssociationReflection.new(:test, :people, class_name: "Person")
25
- assert_equal Person, object.klass
26
- end
27
-
28
- def test_correct_class_name_matching_as_symbol
29
- object = ActiveResource::Reflection::AssociationReflection.new(:test, :people, class_name: :person)
30
- assert_equal Person, object.klass
31
- end
32
-
33
- def test_correct_class_name_matching_as_class
34
- object = ActiveResource::Reflection::AssociationReflection.new(:test, :people, class_name: Person)
35
- assert_equal Person, object.klass
36
- end
37
-
38
- def test_correct_class_name_matching_as_string_with_namespace
39
- object = ActiveResource::Reflection::AssociationReflection.new(:test, :people, class_name: "external/person")
40
- assert_equal External::Person, object.klass
41
- end
42
-
43
- def test_correct_class_name_matching_as_plural_string_with_namespace
44
- object = ActiveResource::Reflection::AssociationReflection.new(:test, :people, class_name: "external/profile_data")
45
- assert_equal External::ProfileData, object.klass
46
- end
47
-
48
- def test_foreign_key_method_with_no_foreign_key_option
49
- object = ActiveResource::Reflection::AssociationReflection.new(:test, :person, {})
50
- assert_equal "person_id", object.foreign_key
51
- end
52
-
53
- def test_foreign_key_method_with_with_foreign_key_option
54
- object = ActiveResource::Reflection::AssociationReflection.new(:test, :people, foreign_key: "client_id")
55
- assert_equal "client_id", object.foreign_key
56
- end
57
-
58
- def test_creation_of_reflection
59
- Person.reflections = {}
60
- object = Person.create_reflection(:test, :people, {})
61
- assert_equal ActiveResource::Reflection::AssociationReflection, object.class
62
- assert_equal 1, Person.reflections.count
63
- assert_equal Person, Person.reflections[:people].klass
64
- end
65
- end
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "abstract_unit"
4
- require "fixtures/project"
5
- require "active_support/core_ext/hash/conversions"
6
-
7
- # The validations are tested thoroughly under ActiveModel::Validations
8
- # This test case simply makes sure that they are all accessible by
9
- # Active Resource objects.
10
- class ValidationsTest < ActiveSupport::TestCase
11
- VALID_PROJECT_HASH = { name: "My Project", description: "A project" }
12
- def setup
13
- @my_proj = { "person" => VALID_PROJECT_HASH }.to_json
14
- ActiveResource::HttpMock.respond_to do |mock|
15
- mock.post "/projects.json", {}, @my_proj, 201, "Location" => "/projects/5.json"
16
- end
17
- end
18
-
19
- def test_validates_presence_of
20
- p = new_project(name: nil)
21
- assert_not p.valid?, "should not be a valid record without name"
22
- assert_not p.save, "should not have saved an invalid record"
23
- assert_equal ["can't be blank"], p.errors[:name], "should have an error on name"
24
-
25
- p.name = "something"
26
-
27
- assert p.save, "should have saved after fixing the validation, but had: #{p.errors.inspect}"
28
- end
29
-
30
- def test_fails_save!
31
- p = new_project(name: nil)
32
- assert_raise(ActiveResource::ResourceInvalid) { p.save! }
33
- end
34
-
35
- def test_save_without_validation
36
- p = new_project(name: nil)
37
- assert_not p.save
38
- assert p.save(validate: false)
39
- end
40
-
41
- def test_validate_callback
42
- # we have a callback ensuring the description is longer than three letters
43
- p = new_project(description: "a")
44
- assert_not p.valid?, "should not be a valid record when it fails a validation callback"
45
- assert_not p.save, "should not have saved an invalid record"
46
- assert_equal ["must be greater than three letters long"], p.errors[:description], "should be an error on description"
47
-
48
- # should now allow this description
49
- p.description = "abcd"
50
- assert p.save, "should have saved after fixing the validation, but had: #{p.errors.inspect}"
51
- end
52
-
53
- def test_client_side_validation_maximum
54
- project = Project.new(description: "123456789012345")
55
- assert_not project.valid?
56
- assert_equal ["is too long (maximum is 10 characters)"], project.errors[:description]
57
- end
58
-
59
- def test_invalid_method
60
- p = new_project
61
-
62
- assert_not p.invalid?
63
- end
64
-
65
- def test_validate_bang_method
66
- p = new_project(name: nil)
67
-
68
- assert_raise(ActiveModel::ValidationError) { p.validate! }
69
- end
70
-
71
- protected
72
- # quickie helper to create a new project with all the required
73
- # attributes.
74
- # Pass in any params you specifically want to override
75
- def new_project(opts = {})
76
- Project.new(VALID_PROJECT_HASH.merge(opts))
77
- end
78
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # turns everything into the same object
4
- class AddressXMLFormatter
5
- include ActiveResource::Formats::XmlFormat
6
-
7
- def decode(xml)
8
- data = ActiveResource::Formats::XmlFormat.decode(xml)
9
- # process address fields
10
- data.each do |address|
11
- address["city_state"] = "#{address['city']}, #{address['state']}"
12
- end
13
- data
14
- end
15
- end
16
-
17
- class AddressResource < ActiveResource::Base
18
- self.element_name = "address"
19
- self.format = AddressXMLFormatter.new
20
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class BeastResource < ActiveResource::Base
4
- self.site = "http://beast.caboo.se"
5
- site.user = "foo"
6
- site.password = "bar"
7
- end
8
-
9
- class Forum < BeastResource
10
- # taken from BeastResource
11
- # self.site = 'http://beast.caboo.se'
12
- end
13
-
14
- class Topic < BeastResource
15
- self.site += "/forums/:forum_id"
16
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Comment < ActiveResource::Base
4
- self.site = "http://37s.sunrise.i:3000/posts/:post_id"
5
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Customer < ActiveResource::Base
4
- self.site = "http://37s.sunrise.i:3000"
5
- end
@@ -1,46 +0,0 @@
1
- # typed: strong
2
-
3
- class Customer
4
- class Friend
5
- class Brother
6
- class Child; end
7
- end
8
- end
9
- end
10
-
11
- class Person
12
- class Books
13
- class UnnamedResource; end
14
- end
15
-
16
- class Address; end
17
- class Street
18
- class State
19
- class NotableRiver; end
20
- end
21
- end
22
- end
23
-
24
- # Defining specific instances based on the structure
25
- class Luis < Customer; end
26
-
27
- class JK < Customer::Friend; end
28
-
29
- class Mateo < Customer::Friend::Brother; end
30
- class Felipe < Customer::Friend::Brother; end
31
-
32
- class Edith < Customer::Friend::Brother::Child; end
33
- class Martha < Customer::Friend::Brother::Child; end
34
-
35
- class Bryan < Customer::Friend::Brother::Child; end
36
- class Luke < Customer::Friend::Brother::Child; end
37
-
38
- class Eduardo < Customer::Friend; end
39
-
40
- class Sebas < Customer::Friend::Brother; end
41
- class Elsa < Customer::Friend::Brother; end
42
- class Milena < Customer::Friend::Brother; end
43
-
44
- class Andres < Customer::Friend::Brother::Child; end
45
- class Jorge < Customer::Friend::Brother::Child; end
46
- class Natacha < Customer::Friend::Brother::Child; end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Inventory < ActiveResource::Base
4
- include ActiveResource::Singleton
5
- self.site = "http://37s.sunrise.i:3000"
6
- self.prefix = "/products/:product_id/"
7
-
8
- schema do
9
- integer :total
10
- integer :used
11
-
12
- string :status
13
- end
14
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Person < ActiveResource::Base
4
- self.site = "http://37s.sunrise.i:3000"
5
- end
6
-
7
- module External
8
- class Person < ActiveResource::Base
9
- self.site = "http://atq.caffeine.intoxication.it"
10
- end
11
-
12
- class ProfileData < ActiveResource::Base
13
- self.site = "http://external.profile.data.nl"
14
- end
15
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Pet < ActiveResource::Base
4
- self.site = "http://37s.sunrise.i:3000"
5
- self.prefix = "/people/:person_id/"
6
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Post < ActiveResource::Base
4
- self.site = "http://37s.sunrise.i:3000"
5
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Product < ActiveResource::Base
4
- self.site = "http://37s.sunrise.i:3000"
5
- # X-Inherited-Header is for testing that any subclasses
6
- # include the headers of this class
7
- self.headers["X-Inherited-Header"] = "present"
8
- end
9
-
10
- class SubProduct < Product
11
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # used to test validations
4
- class Project < ActiveResource::Base
5
- self.site = "http://37s.sunrise.i:3000"
6
- schema do
7
- string :email
8
- string :name
9
- end
10
-
11
- validates :name, presence: true
12
- validates :description, presence: false, length: { maximum: 10 }
13
- validate :description_greater_than_three_letters
14
-
15
- # to test the validate *callback* works
16
- def description_greater_than_three_letters
17
- errors.add :description, "must be greater than three letters long" if description.length < 3 unless description.blank?
18
- end
19
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class ProxyResource < ActiveResource::Base
4
- self.site = "http://localhost"
5
- self.proxy = "http://user:password@proxy.local:3000"
6
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Asset
4
- class Sound < ActiveResource::Base
5
- self.site = "http://37s.sunrise.i:3000"
6
- end
7
- end
8
-
9
- # to test namespacing in a module
10
- class Author
11
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class StreetAddress < ActiveResource::Base
4
- self.site = "http://37s.sunrise.i:3000/people/:person_id"
5
- self.element_name = "address"
6
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class SubscriptionPlan < ActiveResource::Base
4
- self.site = "http://37s.sunrise.i:3000"
5
- self.element_name = "plan"
6
- self.primary_key = :code
7
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Weather < ActiveResource::Base
4
- include ActiveResource::Singleton
5
- self.site = "http://37s.sunrise.i:3000"
6
-
7
- schema do
8
- string :status
9
- string :temperature
10
- end
11
- end
12
-
13
- class WeatherDashboard < ActiveResource::Base
14
- include ActiveResource::Singleton
15
- self.site = "http://37s.sunrise.i:3000"
16
- self.singleton_name = "dashboard"
17
-
18
- schema do
19
- string :status
20
- end
21
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class SetterTrap < BasicObject
4
- class << self
5
- def rollback_sets(obj)
6
- trapped = new(obj)
7
- yield(trapped).tap { trapped.rollback_sets }
8
- end
9
- end
10
-
11
- def initialize(obj)
12
- @cache = {}
13
- @obj = obj
14
- end
15
-
16
- def respond_to?(method)
17
- @obj.respond_to?(method)
18
- end
19
-
20
- def method_missing(method, *args, &proc)
21
- @cache[method] ||= @obj.send($`) if method.to_s =~ /=$/
22
- @obj.send method, *args, &proc
23
- end
24
-
25
- def rollback_sets
26
- @cache.each { |k, v| @obj.send k, v }
27
- end
28
- end
@@ -1,138 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "abstract_unit"
4
- require "fixtures/weather"
5
- require "fixtures/inventory"
6
-
7
- class SingletonTest < ActiveSupport::TestCase
8
- def setup_weather
9
- weather = { status: "Sunny", temperature: 67 }
10
- ActiveResource::HttpMock.respond_to do |mock|
11
- mock.get "/weather.json", {}, weather.to_json
12
- mock.get "/weather.json?degrees=fahrenheit", {}, weather.merge(temperature: 100).to_json
13
- mock.post "/weather.json", {}, weather.to_json, 201, "Location" => "/weather.json"
14
- mock.delete "/weather.json", {}, nil
15
- mock.put "/weather.json", {}, nil, 204
16
- end
17
- end
18
-
19
- def setup_weather_not_found
20
- ActiveResource::HttpMock.respond_to do |mock|
21
- mock.get "/weather.json", {}, nil, 404
22
- end
23
- end
24
-
25
- def setup_inventory
26
- inventory = { status: "Sold Out", total: 10, used: 10 }.to_json
27
-
28
- ActiveResource::HttpMock.respond_to do |mock|
29
- mock.get "/products/5/inventory.json", {}, inventory
30
- end
31
- end
32
-
33
- def test_custom_singleton_name
34
- assert_equal "dashboard", WeatherDashboard.singleton_name
35
- end
36
-
37
- def test_singleton_path
38
- assert_equal "/weather.json", Weather.singleton_path
39
- end
40
-
41
- def test_singleton_path_with_parameters
42
- assert_equal "/weather.json?degrees=fahrenheit", Weather.singleton_path(degrees: "fahrenheit")
43
- assert_equal "/weather.json?degrees=false", Weather.singleton_path(degrees: false)
44
- assert_equal "/weather.json?degrees=", Weather.singleton_path(degrees: nil)
45
-
46
- assert_equal "/weather.json?degrees=fahrenheit", Weather.singleton_path("degrees" => "fahrenheit")
47
-
48
- # Use include? because ordering of param hash is not guaranteed
49
- path = Weather.singleton_path(degrees: "fahrenheit", lunar: true)
50
- assert path.include?("weather.json")
51
- assert path.include?("degrees=fahrenheit")
52
- assert path.include?("lunar=true")
53
-
54
- path = Weather.singleton_path(days: ["monday", "saturday and sunday", nil, false])
55
- assert_equal "/weather.json?days%5B%5D=monday&days%5B%5D=saturday+and+sunday&days%5B%5D=&days%5B%5D=false", path
56
-
57
- path = Inventory.singleton_path(product_id: 5)
58
- assert_equal "/products/5/inventory.json", path
59
-
60
- path = Inventory.singleton_path({ product_id: 5 }, { sold: true })
61
- assert_equal "/products/5/inventory.json?sold=true", path
62
- end
63
-
64
- def test_find_singleton
65
- setup_weather
66
- weather = Weather.send(:find_singleton, Hash.new)
67
- assert_not_nil weather
68
- assert_equal "Sunny", weather.status
69
- assert_equal 67, weather.temperature
70
- end
71
-
72
- def test_find
73
- setup_weather
74
- weather = Weather.find
75
- assert_not_nil weather
76
- assert_equal "Sunny", weather.status
77
- assert_equal 67, weather.temperature
78
- end
79
-
80
- def test_find_with_param_options
81
- setup_inventory
82
- inventory = Inventory.find(params: { product_id: 5 })
83
-
84
- assert_not_nil inventory
85
- assert_equal "Sold Out", inventory.status
86
- assert_equal 10, inventory.used
87
- assert_equal 10, inventory.total
88
- assert_equal({ product_id: 5 }, inventory.prefix_options)
89
- end
90
-
91
- def test_find_with_query_options
92
- setup_weather
93
-
94
- weather = Weather.find(params: { degrees: "fahrenheit" })
95
- assert_not_nil weather
96
- assert_equal "Sunny", weather.status
97
- assert_equal 100, weather.temperature
98
- end
99
-
100
- def test_not_found
101
- setup_weather_not_found
102
-
103
- assert_raise ActiveResource::ResourceNotFound do
104
- Weather.find
105
- end
106
- end
107
-
108
- def test_create_singleton
109
- setup_weather
110
- weather = Weather.create(status: "Sunny", temperature: 67)
111
- assert_not_nil weather
112
- assert_equal "Sunny", weather.status
113
- assert_equal 67, weather.temperature
114
- end
115
-
116
- def test_destroy
117
- setup_weather
118
-
119
- # First Create the Weather
120
- weather = Weather.create(status: "Sunny", temperature: 67)
121
- assert_not_nil weather
122
-
123
- # Now Destroy it
124
- weather.destroy
125
- end
126
-
127
- def test_update
128
- setup_weather
129
-
130
- # First Create the Weather
131
- weather = Weather.create(status: "Sunny", temperature: 67)
132
- assert_not_nil weather
133
-
134
- # Then update it
135
- weather.status = "Rainy"
136
- weather.save
137
- end
138
- end
@@ -1,91 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "abstract_unit"
4
-
5
- class ThreadsafeAttributesTest < ActiveSupport::TestCase
6
- class TestClass
7
- include ThreadsafeAttributes
8
- threadsafe_attribute :safeattr
9
- end
10
-
11
- setup do
12
- @tester = TestClass.new
13
- end
14
-
15
- test "#threadsafe attributes work in a single thread" do
16
- assert_not @tester.safeattr_defined?
17
- assert_nil @tester.safeattr
18
- @tester.safeattr = "a value"
19
- assert @tester.safeattr_defined?
20
- assert_equal "a value", @tester.safeattr
21
- end
22
-
23
- test "#threadsafe attributes inherit the value of the main thread" do
24
- @tester.safeattr = "a value"
25
- Thread.new do
26
- assert @tester.safeattr_defined?
27
- assert_equal "a value", @tester.safeattr
28
- end.join
29
- assert_equal "a value", @tester.safeattr
30
- end
31
-
32
- test "#changing a threadsafe attribute in a thread does not affect the main thread" do
33
- @tester.safeattr = "a value"
34
- Thread.new do
35
- @tester.safeattr = "a new value"
36
- assert_equal "a new value", @tester.safeattr
37
- end.join
38
- assert_equal "a value", @tester.safeattr
39
- end
40
-
41
- test "#threadsafe attributes inherit the value of the main thread when value is nil/false" do
42
- @tester.safeattr = false
43
- Thread.new do
44
- assert @tester.safeattr_defined?
45
- assert_equal false, @tester.safeattr
46
- end.join
47
- assert_equal false, @tester.safeattr
48
- end
49
-
50
- test "#changing a threadsafe attribute in a thread sets an equal value for the main thread, if no value has been set" do
51
- assert_not @tester.safeattr_defined?
52
- assert_nil @tester.safeattr
53
- Thread.new do
54
- @tester.safeattr = "value from child"
55
- assert_equal "value from child", @tester.safeattr
56
- end.join
57
- assert @tester.safeattr_defined?
58
- assert_equal "value from child", @tester.safeattr
59
- end
60
-
61
- test "#threadsafe attributes can retrieve non-duplicable from main thread" do
62
- @tester.safeattr = :symbol_1
63
- Thread.new do
64
- assert_equal :symbol_1, @tester.safeattr
65
- end.join
66
- end
67
-
68
- test "#threadsafe attributes work in fibers" do
69
- @tester.safeattr = :symbol_1
70
- Fiber.new do
71
- assert_equal :symbol_1, @tester.safeattr
72
- end.resume
73
- end
74
-
75
- unless RUBY_PLATFORM == "java"
76
- test "threadsafe attributes can be accessed after forking within a thread" do
77
- reader, writer = IO.pipe
78
- @tester.safeattr = "a value"
79
- Thread.new do
80
- fork do
81
- reader.close
82
- writer.print(@tester.safeattr)
83
- writer.close
84
- end
85
- end.join
86
- writer.close
87
- assert_equal "a value", reader.read
88
- reader.close
89
- end
90
- end
91
- end
data/sorbet/config DELETED
@@ -1,6 +0,0 @@
1
- --dir
2
- .
3
- --ignore=tmp/
4
- --ignore=vendor/
5
- --ignore=example
6
- --suppress-payload-superclass-redefinition-for=Reline::ANSI
@@ -1 +0,0 @@
1
- **/*.rbi linguist-vendored=true