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,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