hyper-mesh 0.6.0 → 1.0.0.lap22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (722) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +12 -4
  3. data/.travis.yml +25 -2
  4. data/DOCS.md +722 -0
  5. data/Gemfile +2 -8
  6. data/README.md +32 -264
  7. data/Rakefile +7 -5
  8. data/dciy.toml +3 -0
  9. data/hyper-mesh.gemspec +59 -81
  10. data/lib/active_record_base.rb +3 -3
  11. data/lib/hypermesh/version.rb +1 -1
  12. data/lib/opal/parse_patch.rb +1 -1
  13. data/lib/reactive_record/active_record/aggregations.rb +1 -1
  14. data/lib/reactive_record/active_record/associations.rb +1 -5
  15. data/lib/reactive_record/active_record/class_methods.rb +6 -23
  16. data/lib/reactive_record/active_record/instance_methods.rb +30 -10
  17. data/lib/reactive_record/active_record/public_columns_hash.rb +27 -8
  18. data/lib/reactive_record/active_record/reactive_record/collection.rb +1 -1
  19. data/lib/reactive_record/active_record/reactive_record/column_types.rb +7 -1
  20. data/lib/reactive_record/active_record/reactive_record/dummy_value.rb +28 -15
  21. data/lib/reactive_record/active_record/reactive_record/isomorphic_base.rb +23 -12
  22. data/lib/reactive_record/active_record/reactive_record/while_loading.rb +84 -53
  23. data/lib/reactive_record/engine.rb +1 -1
  24. data/lib/reactive_record/server_data_cache.rb +99 -44
  25. metadata +101 -984
  26. data/docs/action_cable_quickstart.md +0 -134
  27. data/docs/activerecord_api.md +0 -275
  28. data/docs/authorization-policies.md +0 -502
  29. data/docs/client_side_scoping.md +0 -103
  30. data/docs/configuration_details.md +0 -33
  31. data/docs/pusher_faker_quickstart.md +0 -56
  32. data/docs/pusher_quickstart.md +0 -44
  33. data/docs/simple_poller_quickstart.md +0 -31
  34. data/docs/todo-example.md +0 -118
  35. data/docs/word_game.md +0 -28
  36. data/docs/words-example.md +0 -67
  37. data/examples/action-cable-production-mode/.gitignore +0 -21
  38. data/examples/action-cable-production-mode/Gemfile +0 -57
  39. data/examples/action-cable-production-mode/Gemfile.lock +0 -231
  40. data/examples/action-cable-production-mode/README.md +0 -24
  41. data/examples/action-cable-production-mode/Rakefile +0 -6
  42. data/examples/action-cable-production-mode/app/assets/config/manifest.js +0 -3
  43. data/examples/action-cable-production-mode/app/assets/images/.keep +0 -0
  44. data/examples/action-cable-production-mode/app/assets/javascripts/application.js +0 -20
  45. data/examples/action-cable-production-mode/app/assets/javascripts/cable.js +0 -13
  46. data/examples/action-cable-production-mode/app/assets/javascripts/channels/.keep +0 -0
  47. data/examples/action-cable-production-mode/app/assets/stylesheets/application.css +0 -15
  48. data/examples/action-cable-production-mode/app/channels/application_cable/channel.rb +0 -4
  49. data/examples/action-cable-production-mode/app/channels/application_cable/connection.rb +0 -4
  50. data/examples/action-cable-production-mode/app/controllers/application_controller.rb +0 -3
  51. data/examples/action-cable-production-mode/app/controllers/test_controller.rb +0 -5
  52. data/examples/action-cable-production-mode/app/models/models.rb +0 -2
  53. data/examples/action-cable-production-mode/app/models/public/application_record.rb +0 -3
  54. data/examples/action-cable-production-mode/app/models/public/word.rb +0 -2
  55. data/examples/action-cable-production-mode/app/policies/application_policy.rb +0 -14
  56. data/examples/action-cable-production-mode/app/views/components.rb +0 -16
  57. data/examples/action-cable-production-mode/app/views/components/app.rb +0 -18
  58. data/examples/action-cable-production-mode/app/views/layouts/application.html.erb +0 -14
  59. data/examples/action-cable-production-mode/bin/bundle +0 -3
  60. data/examples/action-cable-production-mode/bin/rails +0 -9
  61. data/examples/action-cable-production-mode/bin/rake +0 -9
  62. data/examples/action-cable-production-mode/bin/setup +0 -34
  63. data/examples/action-cable-production-mode/bin/spring +0 -16
  64. data/examples/action-cable-production-mode/bin/update +0 -29
  65. data/examples/action-cable-production-mode/config.ru +0 -5
  66. data/examples/action-cable-production-mode/config/application.rb +0 -18
  67. data/examples/action-cable-production-mode/config/boot.rb +0 -3
  68. data/examples/action-cable-production-mode/config/cable.yml +0 -9
  69. data/examples/action-cable-production-mode/config/database.yml +0 -25
  70. data/examples/action-cable-production-mode/config/environment.rb +0 -5
  71. data/examples/action-cable-production-mode/config/environments/development.rb +0 -56
  72. data/examples/action-cable-production-mode/config/environments/production.rb +0 -89
  73. data/examples/action-cable-production-mode/config/environments/test.rb +0 -42
  74. data/examples/action-cable-production-mode/config/initializers/application_controller_renderer.rb +0 -6
  75. data/examples/action-cable-production-mode/config/initializers/assets.rb +0 -11
  76. data/examples/action-cable-production-mode/config/initializers/backtrace_silencers.rb +0 -7
  77. data/examples/action-cable-production-mode/config/initializers/cookies_serializer.rb +0 -5
  78. data/examples/action-cable-production-mode/config/initializers/filter_parameter_logging.rb +0 -4
  79. data/examples/action-cable-production-mode/config/initializers/hyper_mesh.rb +0 -4
  80. data/examples/action-cable-production-mode/config/initializers/inflections.rb +0 -16
  81. data/examples/action-cable-production-mode/config/initializers/mime_types.rb +0 -4
  82. data/examples/action-cable-production-mode/config/initializers/new_framework_defaults.rb +0 -24
  83. data/examples/action-cable-production-mode/config/initializers/session_store.rb +0 -3
  84. data/examples/action-cable-production-mode/config/initializers/wrap_parameters.rb +0 -14
  85. data/examples/action-cable-production-mode/config/locales/en.yml +0 -23
  86. data/examples/action-cable-production-mode/config/puma.rb +0 -47
  87. data/examples/action-cable-production-mode/config/routes.rb +0 -5
  88. data/examples/action-cable-production-mode/config/secrets.yml +0 -22
  89. data/examples/action-cable-production-mode/config/spring.rb +0 -6
  90. data/examples/action-cable-production-mode/db/migrate/20161114213840_create_words.rb +0 -9
  91. data/examples/action-cable-production-mode/db/schema.rb +0 -34
  92. data/examples/action-cable-production-mode/db/seeds.rb +0 -7
  93. data/examples/action-cable-production-mode/lib/assets/.keep +0 -0
  94. data/examples/action-cable-production-mode/lib/tasks/.keep +0 -0
  95. data/examples/action-cable-production-mode/public/404.html +0 -67
  96. data/examples/action-cable-production-mode/public/422.html +0 -67
  97. data/examples/action-cable-production-mode/public/500.html +0 -66
  98. data/examples/action-cable-production-mode/public/apple-touch-icon-precomposed.png +0 -0
  99. data/examples/action-cable-production-mode/public/apple-touch-icon.png +0 -0
  100. data/examples/action-cable-production-mode/public/assets/.sprockets-manifest-3e9abd3ee8ba47c39a55b61ae37ed9e1.json +0 -1
  101. data/examples/action-cable-production-mode/public/favicon.ico +0 -0
  102. data/examples/action-cable-production-mode/public/robots.txt +0 -5
  103. data/examples/action-cable-production-mode/test/controllers/.keep +0 -0
  104. data/examples/action-cable-production-mode/test/fixtures/.keep +0 -0
  105. data/examples/action-cable-production-mode/test/fixtures/files/.keep +0 -0
  106. data/examples/action-cable-production-mode/test/fixtures/words.yml +0 -7
  107. data/examples/action-cable-production-mode/test/helpers/.keep +0 -0
  108. data/examples/action-cable-production-mode/test/integration/.keep +0 -0
  109. data/examples/action-cable-production-mode/test/mailers/.keep +0 -0
  110. data/examples/action-cable-production-mode/test/models/.keep +0 -0
  111. data/examples/action-cable-production-mode/test/models/word_test.rb +0 -7
  112. data/examples/action-cable-production-mode/test/test_helper.rb +0 -10
  113. data/examples/action-cable-production-mode/vendor/assets/javascripts/.keep +0 -0
  114. data/examples/action-cable-production-mode/vendor/assets/stylesheets/.keep +0 -0
  115. data/examples/action-cable/.gitignore +0 -21
  116. data/examples/action-cable/Gemfile +0 -58
  117. data/examples/action-cable/Gemfile.lock +0 -248
  118. data/examples/action-cable/README.md +0 -24
  119. data/examples/action-cable/Rakefile +0 -6
  120. data/examples/action-cable/app/assets/config/manifest.js +0 -3
  121. data/examples/action-cable/app/assets/images/.keep +0 -0
  122. data/examples/action-cable/app/assets/javascripts/application.js +0 -20
  123. data/examples/action-cable/app/assets/javascripts/cable.js +0 -13
  124. data/examples/action-cable/app/assets/javascripts/channels/.keep +0 -0
  125. data/examples/action-cable/app/assets/stylesheets/application.css +0 -15
  126. data/examples/action-cable/app/channels/application_cable/channel.rb +0 -4
  127. data/examples/action-cable/app/channels/application_cable/connection.rb +0 -4
  128. data/examples/action-cable/app/controllers/application_controller.rb +0 -3
  129. data/examples/action-cable/app/controllers/test_controller.rb +0 -5
  130. data/examples/action-cable/app/models/models.rb +0 -2
  131. data/examples/action-cable/app/models/public/.keep +0 -0
  132. data/examples/action-cable/app/models/public/application_record.rb +0 -3
  133. data/examples/action-cable/app/models/public/word.rb +0 -2
  134. data/examples/action-cable/app/policies/application_policy.rb +0 -14
  135. data/examples/action-cable/app/views/components.rb +0 -16
  136. data/examples/action-cable/app/views/components/app.rb +0 -18
  137. data/examples/action-cable/app/views/layouts/application.html.erb +0 -14
  138. data/examples/action-cable/bin/bundle +0 -3
  139. data/examples/action-cable/bin/rails +0 -9
  140. data/examples/action-cable/bin/rake +0 -9
  141. data/examples/action-cable/bin/setup +0 -34
  142. data/examples/action-cable/bin/spring +0 -16
  143. data/examples/action-cable/bin/update +0 -29
  144. data/examples/action-cable/config.ru +0 -5
  145. data/examples/action-cable/config/application.rb +0 -20
  146. data/examples/action-cable/config/boot.rb +0 -3
  147. data/examples/action-cable/config/cable.yml +0 -9
  148. data/examples/action-cable/config/database.yml +0 -25
  149. data/examples/action-cable/config/environment.rb +0 -5
  150. data/examples/action-cable/config/environments/development.rb +0 -56
  151. data/examples/action-cable/config/environments/production.rb +0 -86
  152. data/examples/action-cable/config/environments/test.rb +0 -42
  153. data/examples/action-cable/config/initializers/application_controller_renderer.rb +0 -6
  154. data/examples/action-cable/config/initializers/assets.rb +0 -11
  155. data/examples/action-cable/config/initializers/backtrace_silencers.rb +0 -7
  156. data/examples/action-cable/config/initializers/cookies_serializer.rb +0 -5
  157. data/examples/action-cable/config/initializers/filter_parameter_logging.rb +0 -4
  158. data/examples/action-cable/config/initializers/hyperloop.rb +0 -4
  159. data/examples/action-cable/config/initializers/inflections.rb +0 -16
  160. data/examples/action-cable/config/initializers/mime_types.rb +0 -4
  161. data/examples/action-cable/config/initializers/new_framework_defaults.rb +0 -24
  162. data/examples/action-cable/config/initializers/session_store.rb +0 -3
  163. data/examples/action-cable/config/initializers/wrap_parameters.rb +0 -14
  164. data/examples/action-cable/config/locales/en.yml +0 -23
  165. data/examples/action-cable/config/puma.rb +0 -47
  166. data/examples/action-cable/config/routes.rb +0 -5
  167. data/examples/action-cable/config/secrets.yml +0 -22
  168. data/examples/action-cable/config/spring.rb +0 -6
  169. data/examples/action-cable/db/migrate/20161114213840_create_words.rb +0 -9
  170. data/examples/action-cable/db/schema.rb +0 -34
  171. data/examples/action-cable/db/seeds.rb +0 -7
  172. data/examples/action-cable/lib/assets/.keep +0 -0
  173. data/examples/action-cable/lib/tasks/.keep +0 -0
  174. data/examples/action-cable/public/404.html +0 -67
  175. data/examples/action-cable/public/422.html +0 -67
  176. data/examples/action-cable/public/500.html +0 -66
  177. data/examples/action-cable/public/apple-touch-icon-precomposed.png +0 -0
  178. data/examples/action-cable/public/apple-touch-icon.png +0 -0
  179. data/examples/action-cable/public/favicon.ico +0 -0
  180. data/examples/action-cable/public/robots.txt +0 -5
  181. data/examples/action-cable/test/controllers/.keep +0 -0
  182. data/examples/action-cable/test/fixtures/.keep +0 -0
  183. data/examples/action-cable/test/fixtures/files/.keep +0 -0
  184. data/examples/action-cable/test/fixtures/words.yml +0 -7
  185. data/examples/action-cable/test/helpers/.keep +0 -0
  186. data/examples/action-cable/test/integration/.keep +0 -0
  187. data/examples/action-cable/test/mailers/.keep +0 -0
  188. data/examples/action-cable/test/models/.keep +0 -0
  189. data/examples/action-cable/test/models/word_test.rb +0 -7
  190. data/examples/action-cable/test/test_helper.rb +0 -10
  191. data/examples/action-cable/vendor/assets/javascripts/.keep +0 -0
  192. data/examples/action-cable/vendor/assets/stylesheets/.keep +0 -0
  193. data/examples/pusher-fake/.gitignore +0 -21
  194. data/examples/pusher-fake/Gemfile +0 -59
  195. data/examples/pusher-fake/Gemfile.lock +0 -262
  196. data/examples/pusher-fake/README.md +0 -24
  197. data/examples/pusher-fake/Rakefile +0 -6
  198. data/examples/pusher-fake/app/assets/config/manifest.js +0 -3
  199. data/examples/pusher-fake/app/assets/images/.keep +0 -0
  200. data/examples/pusher-fake/app/assets/javascripts/application.js +0 -21
  201. data/examples/pusher-fake/app/assets/stylesheets/application.css +0 -15
  202. data/examples/pusher-fake/app/controllers/application_controller.rb +0 -3
  203. data/examples/pusher-fake/app/controllers/test_controller.rb +0 -5
  204. data/examples/pusher-fake/app/models/models.rb +0 -2
  205. data/examples/pusher-fake/app/models/public/.keep +0 -0
  206. data/examples/pusher-fake/app/models/public/application_record.rb +0 -3
  207. data/examples/pusher-fake/app/models/public/word.rb +0 -2
  208. data/examples/pusher-fake/app/policies/application_policy.rb +0 -14
  209. data/examples/pusher-fake/app/views/components.rb +0 -16
  210. data/examples/pusher-fake/app/views/components/app.rb +0 -18
  211. data/examples/pusher-fake/app/views/layouts/application.html.erb +0 -14
  212. data/examples/pusher-fake/bin/bundle +0 -3
  213. data/examples/pusher-fake/bin/rails +0 -9
  214. data/examples/pusher-fake/bin/rake +0 -9
  215. data/examples/pusher-fake/bin/setup +0 -34
  216. data/examples/pusher-fake/bin/spring +0 -16
  217. data/examples/pusher-fake/bin/update +0 -29
  218. data/examples/pusher-fake/config.ru +0 -5
  219. data/examples/pusher-fake/config/application.rb +0 -20
  220. data/examples/pusher-fake/config/boot.rb +0 -3
  221. data/examples/pusher-fake/config/database.yml +0 -25
  222. data/examples/pusher-fake/config/environment.rb +0 -5
  223. data/examples/pusher-fake/config/environments/development.rb +0 -56
  224. data/examples/pusher-fake/config/environments/production.rb +0 -86
  225. data/examples/pusher-fake/config/environments/test.rb +0 -42
  226. data/examples/pusher-fake/config/initializers/application_controller_renderer.rb +0 -6
  227. data/examples/pusher-fake/config/initializers/assets.rb +0 -11
  228. data/examples/pusher-fake/config/initializers/backtrace_silencers.rb +0 -7
  229. data/examples/pusher-fake/config/initializers/cookies_serializer.rb +0 -5
  230. data/examples/pusher-fake/config/initializers/filter_parameter_logging.rb +0 -4
  231. data/examples/pusher-fake/config/initializers/hyper_mesh.rb +0 -21
  232. data/examples/pusher-fake/config/initializers/inflections.rb +0 -16
  233. data/examples/pusher-fake/config/initializers/mime_types.rb +0 -4
  234. data/examples/pusher-fake/config/initializers/new_framework_defaults.rb +0 -24
  235. data/examples/pusher-fake/config/initializers/session_store.rb +0 -3
  236. data/examples/pusher-fake/config/initializers/wrap_parameters.rb +0 -14
  237. data/examples/pusher-fake/config/locales/en.yml +0 -23
  238. data/examples/pusher-fake/config/puma.rb +0 -47
  239. data/examples/pusher-fake/config/routes.rb +0 -5
  240. data/examples/pusher-fake/config/secrets.yml +0 -22
  241. data/examples/pusher-fake/config/spring.rb +0 -6
  242. data/examples/pusher-fake/db/migrate/20161114213840_create_words.rb +0 -9
  243. data/examples/pusher-fake/db/schema.rb +0 -34
  244. data/examples/pusher-fake/db/seeds.rb +0 -7
  245. data/examples/pusher-fake/lib/assets/.keep +0 -0
  246. data/examples/pusher-fake/lib/tasks/.keep +0 -0
  247. data/examples/pusher-fake/public/404.html +0 -67
  248. data/examples/pusher-fake/public/422.html +0 -67
  249. data/examples/pusher-fake/public/500.html +0 -66
  250. data/examples/pusher-fake/public/apple-touch-icon-precomposed.png +0 -0
  251. data/examples/pusher-fake/public/apple-touch-icon.png +0 -0
  252. data/examples/pusher-fake/public/favicon.ico +0 -0
  253. data/examples/pusher-fake/public/robots.txt +0 -5
  254. data/examples/pusher-fake/test/controllers/.keep +0 -0
  255. data/examples/pusher-fake/test/fixtures/.keep +0 -0
  256. data/examples/pusher-fake/test/fixtures/files/.keep +0 -0
  257. data/examples/pusher-fake/test/fixtures/words.yml +0 -7
  258. data/examples/pusher-fake/test/helpers/.keep +0 -0
  259. data/examples/pusher-fake/test/integration/.keep +0 -0
  260. data/examples/pusher-fake/test/mailers/.keep +0 -0
  261. data/examples/pusher-fake/test/models/.keep +0 -0
  262. data/examples/pusher-fake/test/models/word_test.rb +0 -7
  263. data/examples/pusher-fake/test/test_helper.rb +0 -10
  264. data/examples/pusher-fake/vendor/assets/javascripts/.keep +0 -0
  265. data/examples/pusher-fake/vendor/assets/stylesheets/.keep +0 -0
  266. data/examples/pusher/.gitignore +0 -21
  267. data/examples/pusher/Gemfile +0 -58
  268. data/examples/pusher/Gemfile.lock +0 -236
  269. data/examples/pusher/README.md +0 -24
  270. data/examples/pusher/Rakefile +0 -6
  271. data/examples/pusher/app/assets/config/manifest.js +0 -3
  272. data/examples/pusher/app/assets/images/.keep +0 -0
  273. data/examples/pusher/app/assets/javascripts/application.js +0 -21
  274. data/examples/pusher/app/assets/stylesheets/application.css +0 -15
  275. data/examples/pusher/app/controllers/application_controller.rb +0 -3
  276. data/examples/pusher/app/controllers/test_controller.rb +0 -5
  277. data/examples/pusher/app/models/models.rb +0 -2
  278. data/examples/pusher/app/models/public/.keep +0 -0
  279. data/examples/pusher/app/models/public/application_record.rb +0 -3
  280. data/examples/pusher/app/models/public/word.rb +0 -2
  281. data/examples/pusher/app/policies/application_policy.rb +0 -14
  282. data/examples/pusher/app/views/components.rb +0 -16
  283. data/examples/pusher/app/views/components/app.rb +0 -18
  284. data/examples/pusher/app/views/layouts/application.html.erb +0 -14
  285. data/examples/pusher/bin/bundle +0 -3
  286. data/examples/pusher/bin/rails +0 -9
  287. data/examples/pusher/bin/rake +0 -9
  288. data/examples/pusher/bin/setup +0 -34
  289. data/examples/pusher/bin/spring +0 -16
  290. data/examples/pusher/bin/update +0 -29
  291. data/examples/pusher/config.ru +0 -5
  292. data/examples/pusher/config/application.rb +0 -20
  293. data/examples/pusher/config/boot.rb +0 -3
  294. data/examples/pusher/config/database.yml +0 -25
  295. data/examples/pusher/config/environment.rb +0 -5
  296. data/examples/pusher/config/environments/development.rb +0 -56
  297. data/examples/pusher/config/environments/production.rb +0 -86
  298. data/examples/pusher/config/environments/test.rb +0 -42
  299. data/examples/pusher/config/initializers/application_controller_renderer.rb +0 -6
  300. data/examples/pusher/config/initializers/assets.rb +0 -11
  301. data/examples/pusher/config/initializers/backtrace_silencers.rb +0 -7
  302. data/examples/pusher/config/initializers/cookies_serializer.rb +0 -5
  303. data/examples/pusher/config/initializers/filter_parameter_logging.rb +0 -4
  304. data/examples/pusher/config/initializers/hyper_mesh.rb +0 -10
  305. data/examples/pusher/config/initializers/inflections.rb +0 -16
  306. data/examples/pusher/config/initializers/mime_types.rb +0 -4
  307. data/examples/pusher/config/initializers/new_framework_defaults.rb +0 -24
  308. data/examples/pusher/config/initializers/session_store.rb +0 -3
  309. data/examples/pusher/config/initializers/wrap_parameters.rb +0 -14
  310. data/examples/pusher/config/locales/en.yml +0 -23
  311. data/examples/pusher/config/puma.rb +0 -47
  312. data/examples/pusher/config/routes.rb +0 -5
  313. data/examples/pusher/config/secrets.yml +0 -22
  314. data/examples/pusher/config/spring.rb +0 -6
  315. data/examples/pusher/db/migrate/20161114213840_create_words.rb +0 -9
  316. data/examples/pusher/db/schema.rb +0 -34
  317. data/examples/pusher/db/seeds.rb +0 -7
  318. data/examples/pusher/lib/assets/.keep +0 -0
  319. data/examples/pusher/lib/tasks/.keep +0 -0
  320. data/examples/pusher/public/404.html +0 -67
  321. data/examples/pusher/public/422.html +0 -67
  322. data/examples/pusher/public/500.html +0 -66
  323. data/examples/pusher/public/apple-touch-icon-precomposed.png +0 -0
  324. data/examples/pusher/public/apple-touch-icon.png +0 -0
  325. data/examples/pusher/public/favicon.ico +0 -0
  326. data/examples/pusher/public/robots.txt +0 -5
  327. data/examples/pusher/test/controllers/.keep +0 -0
  328. data/examples/pusher/test/fixtures/.keep +0 -0
  329. data/examples/pusher/test/fixtures/files/.keep +0 -0
  330. data/examples/pusher/test/fixtures/words.yml +0 -7
  331. data/examples/pusher/test/helpers/.keep +0 -0
  332. data/examples/pusher/test/integration/.keep +0 -0
  333. data/examples/pusher/test/mailers/.keep +0 -0
  334. data/examples/pusher/test/models/.keep +0 -0
  335. data/examples/pusher/test/models/word_test.rb +0 -7
  336. data/examples/pusher/test/test_helper.rb +0 -10
  337. data/examples/pusher/vendor/assets/javascripts/.keep +0 -0
  338. data/examples/pusher/vendor/assets/stylesheets/.keep +0 -0
  339. data/examples/simple-poller/.gitignore +0 -21
  340. data/examples/simple-poller/Gemfile +0 -57
  341. data/examples/simple-poller/Gemfile.lock +0 -229
  342. data/examples/simple-poller/README.md +0 -24
  343. data/examples/simple-poller/Rakefile +0 -6
  344. data/examples/simple-poller/app/assets/config/manifest.js +0 -3
  345. data/examples/simple-poller/app/assets/images/.keep +0 -0
  346. data/examples/simple-poller/app/assets/javascripts/application.js +0 -21
  347. data/examples/simple-poller/app/assets/stylesheets/application.css +0 -15
  348. data/examples/simple-poller/app/controllers/application_controller.rb +0 -3
  349. data/examples/simple-poller/app/controllers/test_controller.rb +0 -5
  350. data/examples/simple-poller/app/models/models.rb +0 -2
  351. data/examples/simple-poller/app/models/public/.keep +0 -0
  352. data/examples/simple-poller/app/models/public/application_record.rb +0 -3
  353. data/examples/simple-poller/app/models/public/word.rb +0 -2
  354. data/examples/simple-poller/app/policies/application_policy.rb +0 -14
  355. data/examples/simple-poller/app/views/components.rb +0 -16
  356. data/examples/simple-poller/app/views/components/app.rb +0 -18
  357. data/examples/simple-poller/app/views/layouts/application.html.erb +0 -14
  358. data/examples/simple-poller/bin/bundle +0 -3
  359. data/examples/simple-poller/bin/rails +0 -9
  360. data/examples/simple-poller/bin/rake +0 -9
  361. data/examples/simple-poller/bin/setup +0 -34
  362. data/examples/simple-poller/bin/spring +0 -16
  363. data/examples/simple-poller/bin/update +0 -29
  364. data/examples/simple-poller/config.ru +0 -5
  365. data/examples/simple-poller/config/application.rb +0 -20
  366. data/examples/simple-poller/config/boot.rb +0 -3
  367. data/examples/simple-poller/config/database.yml +0 -25
  368. data/examples/simple-poller/config/environment.rb +0 -5
  369. data/examples/simple-poller/config/environments/development.rb +0 -56
  370. data/examples/simple-poller/config/environments/production.rb +0 -86
  371. data/examples/simple-poller/config/environments/test.rb +0 -42
  372. data/examples/simple-poller/config/initializers/application_controller_renderer.rb +0 -6
  373. data/examples/simple-poller/config/initializers/assets.rb +0 -11
  374. data/examples/simple-poller/config/initializers/backtrace_silencers.rb +0 -7
  375. data/examples/simple-poller/config/initializers/cookies_serializer.rb +0 -5
  376. data/examples/simple-poller/config/initializers/filter_parameter_logging.rb +0 -4
  377. data/examples/simple-poller/config/initializers/hyper_mesh.rb +0 -9
  378. data/examples/simple-poller/config/initializers/inflections.rb +0 -16
  379. data/examples/simple-poller/config/initializers/mime_types.rb +0 -4
  380. data/examples/simple-poller/config/initializers/new_framework_defaults.rb +0 -24
  381. data/examples/simple-poller/config/initializers/session_store.rb +0 -3
  382. data/examples/simple-poller/config/initializers/wrap_parameters.rb +0 -14
  383. data/examples/simple-poller/config/locales/en.yml +0 -23
  384. data/examples/simple-poller/config/puma.rb +0 -47
  385. data/examples/simple-poller/config/routes.rb +0 -5
  386. data/examples/simple-poller/config/secrets.yml +0 -22
  387. data/examples/simple-poller/config/spring.rb +0 -6
  388. data/examples/simple-poller/db/migrate/20161114213840_create_words.rb +0 -9
  389. data/examples/simple-poller/db/schema.rb +0 -34
  390. data/examples/simple-poller/db/seeds.rb +0 -7
  391. data/examples/simple-poller/lib/assets/.keep +0 -0
  392. data/examples/simple-poller/lib/tasks/.keep +0 -0
  393. data/examples/simple-poller/public/404.html +0 -67
  394. data/examples/simple-poller/public/422.html +0 -67
  395. data/examples/simple-poller/public/500.html +0 -66
  396. data/examples/simple-poller/public/apple-touch-icon-precomposed.png +0 -0
  397. data/examples/simple-poller/public/apple-touch-icon.png +0 -0
  398. data/examples/simple-poller/public/favicon.ico +0 -0
  399. data/examples/simple-poller/public/robots.txt +0 -5
  400. data/examples/simple-poller/test/controllers/.keep +0 -0
  401. data/examples/simple-poller/test/fixtures/.keep +0 -0
  402. data/examples/simple-poller/test/fixtures/files/.keep +0 -0
  403. data/examples/simple-poller/test/fixtures/words.yml +0 -7
  404. data/examples/simple-poller/test/helpers/.keep +0 -0
  405. data/examples/simple-poller/test/integration/.keep +0 -0
  406. data/examples/simple-poller/test/mailers/.keep +0 -0
  407. data/examples/simple-poller/test/models/.keep +0 -0
  408. data/examples/simple-poller/test/models/word_test.rb +0 -7
  409. data/examples/simple-poller/test/test_helper.rb +0 -10
  410. data/examples/simple-poller/vendor/assets/javascripts/.keep +0 -0
  411. data/examples/simple-poller/vendor/assets/stylesheets/.keep +0 -0
  412. data/examples/word-game/.gitignore +0 -21
  413. data/examples/word-game/Gemfile +0 -57
  414. data/examples/word-game/Gemfile.lock +0 -241
  415. data/examples/word-game/README.md +0 -24
  416. data/examples/word-game/Rakefile +0 -6
  417. data/examples/word-game/app/assets/config/manifest.js +0 -3
  418. data/examples/word-game/app/assets/images/.keep +0 -0
  419. data/examples/word-game/app/assets/javascripts/application.js +0 -20
  420. data/examples/word-game/app/assets/javascripts/cable.js +0 -13
  421. data/examples/word-game/app/assets/javascripts/channels/.keep +0 -0
  422. data/examples/word-game/app/assets/stylesheets/application.css +0 -15
  423. data/examples/word-game/app/channels/application_cable/channel.rb +0 -4
  424. data/examples/word-game/app/channels/application_cable/connection.rb +0 -4
  425. data/examples/word-game/app/controllers/application_controller.rb +0 -3
  426. data/examples/word-game/app/controllers/concerns/.keep +0 -0
  427. data/examples/word-game/app/helpers/application_helper.rb +0 -2
  428. data/examples/word-game/app/jobs/application_job.rb +0 -2
  429. data/examples/word-game/app/mailers/application_mailer.rb +0 -4
  430. data/examples/word-game/app/models/application_record.rb +0 -3
  431. data/examples/word-game/app/models/concerns/.keep +0 -0
  432. data/examples/word-game/app/models/models.rb +0 -2
  433. data/examples/word-game/app/models/public/.keep +0 -0
  434. data/examples/word-game/app/policies/application_policy.rb +0 -14
  435. data/examples/word-game/app/views/components.rb +0 -16
  436. data/examples/word-game/app/views/components/.keep +0 -0
  437. data/examples/word-game/app/views/layouts/application.html.erb +0 -14
  438. data/examples/word-game/app/views/layouts/mailer.html.erb +0 -13
  439. data/examples/word-game/app/views/layouts/mailer.text.erb +0 -1
  440. data/examples/word-game/bin/bundle +0 -3
  441. data/examples/word-game/bin/rails +0 -9
  442. data/examples/word-game/bin/rake +0 -9
  443. data/examples/word-game/bin/setup +0 -34
  444. data/examples/word-game/bin/spring +0 -16
  445. data/examples/word-game/bin/update +0 -29
  446. data/examples/word-game/config.ru +0 -5
  447. data/examples/word-game/config/application.rb +0 -20
  448. data/examples/word-game/config/boot.rb +0 -3
  449. data/examples/word-game/config/cable.yml +0 -9
  450. data/examples/word-game/config/database.yml +0 -25
  451. data/examples/word-game/config/environment.rb +0 -5
  452. data/examples/word-game/config/environments/development.rb +0 -56
  453. data/examples/word-game/config/environments/production.rb +0 -86
  454. data/examples/word-game/config/environments/test.rb +0 -42
  455. data/examples/word-game/config/initializers/application_controller_renderer.rb +0 -6
  456. data/examples/word-game/config/initializers/assets.rb +0 -11
  457. data/examples/word-game/config/initializers/backtrace_silencers.rb +0 -7
  458. data/examples/word-game/config/initializers/cookies_serializer.rb +0 -5
  459. data/examples/word-game/config/initializers/filter_parameter_logging.rb +0 -4
  460. data/examples/word-game/config/initializers/hyper_mesh.rb +0 -4
  461. data/examples/word-game/config/initializers/inflections.rb +0 -16
  462. data/examples/word-game/config/initializers/mime_types.rb +0 -4
  463. data/examples/word-game/config/initializers/new_framework_defaults.rb +0 -24
  464. data/examples/word-game/config/initializers/session_store.rb +0 -3
  465. data/examples/word-game/config/initializers/wrap_parameters.rb +0 -14
  466. data/examples/word-game/config/locales/en.yml +0 -23
  467. data/examples/word-game/config/puma.rb +0 -47
  468. data/examples/word-game/config/routes.rb +0 -4
  469. data/examples/word-game/config/secrets.yml +0 -22
  470. data/examples/word-game/config/spring.rb +0 -6
  471. data/examples/word-game/db/seeds.rb +0 -7
  472. data/examples/word-game/lib/assets/.keep +0 -0
  473. data/examples/word-game/lib/tasks/.keep +0 -0
  474. data/examples/word-game/public/404.html +0 -67
  475. data/examples/word-game/public/422.html +0 -67
  476. data/examples/word-game/public/500.html +0 -66
  477. data/examples/word-game/public/apple-touch-icon-precomposed.png +0 -0
  478. data/examples/word-game/public/apple-touch-icon.png +0 -0
  479. data/examples/word-game/public/favicon.ico +0 -0
  480. data/examples/word-game/public/robots.txt +0 -5
  481. data/examples/word-game/test/controllers/.keep +0 -0
  482. data/examples/word-game/test/fixtures/.keep +0 -0
  483. data/examples/word-game/test/fixtures/files/.keep +0 -0
  484. data/examples/word-game/test/helpers/.keep +0 -0
  485. data/examples/word-game/test/integration/.keep +0 -0
  486. data/examples/word-game/test/mailers/.keep +0 -0
  487. data/examples/word-game/test/models/.keep +0 -0
  488. data/examples/word-game/test/test_helper.rb +0 -10
  489. data/examples/word-game/vendor/assets/javascripts/.keep +0 -0
  490. data/examples/word-game/vendor/assets/stylesheets/.keep +0 -0
  491. data/examples/words/.gitignore +0 -21
  492. data/examples/words/Gemfile +0 -59
  493. data/examples/words/Gemfile.lock +0 -248
  494. data/examples/words/README.md +0 -24
  495. data/examples/words/Rakefile +0 -6
  496. data/examples/words/app/assets/config/manifest.js +0 -3
  497. data/examples/words/app/assets/javascripts/application.js +0 -18
  498. data/examples/words/app/assets/stylesheets/application.css +0 -15
  499. data/examples/words/app/controllers/application_controller.rb +0 -3
  500. data/examples/words/app/controllers/test_controller.rb +0 -6
  501. data/examples/words/app/models/models.rb +0 -2
  502. data/examples/words/app/models/public/application_record.rb +0 -3
  503. data/examples/words/app/models/public/word.rb +0 -10
  504. data/examples/words/app/policies/application_policy.rb +0 -6
  505. data/examples/words/app/views/components.rb +0 -18
  506. data/examples/words/app/views/components/app.rb +0 -31
  507. data/examples/words/app/views/layouts/application.html.erb +0 -14
  508. data/examples/words/app/views/layouts/mailer.html.erb +0 -13
  509. data/examples/words/app/views/layouts/mailer.text.erb +0 -1
  510. data/examples/words/bin/bundle +0 -3
  511. data/examples/words/bin/rails +0 -9
  512. data/examples/words/bin/rake +0 -9
  513. data/examples/words/bin/setup +0 -34
  514. data/examples/words/bin/spring +0 -15
  515. data/examples/words/bin/update +0 -29
  516. data/examples/words/config.ru +0 -5
  517. data/examples/words/config/application.rb +0 -30
  518. data/examples/words/config/boot.rb +0 -3
  519. data/examples/words/config/cable.yml +0 -9
  520. data/examples/words/config/database.yml +0 -25
  521. data/examples/words/config/environment.rb +0 -5
  522. data/examples/words/config/environments/development.rb +0 -45
  523. data/examples/words/config/environments/production.rb +0 -86
  524. data/examples/words/config/environments/test.rb +0 -42
  525. data/examples/words/config/initializers/application_controller_renderer.rb +0 -6
  526. data/examples/words/config/initializers/assets.rb +0 -11
  527. data/examples/words/config/initializers/backtrace_silencers.rb +0 -7
  528. data/examples/words/config/initializers/cookies_serializer.rb +0 -5
  529. data/examples/words/config/initializers/filter_parameter_logging.rb +0 -4
  530. data/examples/words/config/initializers/hyper_mesh.rb +0 -14
  531. data/examples/words/config/initializers/inflections.rb +0 -16
  532. data/examples/words/config/initializers/mime_types.rb +0 -4
  533. data/examples/words/config/initializers/new_framework_defaults.rb +0 -24
  534. data/examples/words/config/initializers/session_store.rb +0 -3
  535. data/examples/words/config/initializers/wrap_parameters.rb +0 -14
  536. data/examples/words/config/locales/en.yml +0 -23
  537. data/examples/words/config/puma.rb +0 -47
  538. data/examples/words/config/routes.rb +0 -5
  539. data/examples/words/config/secrets.yml +0 -22
  540. data/examples/words/config/spring.rb +0 -6
  541. data/examples/words/db/migrate/20160921223808_create_words.rb +0 -9
  542. data/examples/words/db/schema.rb +0 -28
  543. data/examples/words/public/404.html +0 -67
  544. data/examples/words/public/422.html +0 -67
  545. data/examples/words/public/500.html +0 -66
  546. data/examples/words/public/apple-touch-icon-precomposed.png +0 -0
  547. data/examples/words/public/apple-touch-icon.png +0 -0
  548. data/examples/words/public/favicon.ico +0 -0
  549. data/examples/words/public/robots.txt +0 -5
  550. data/examples/words/vendor/assets/javascripts/.keep +0 -0
  551. data/examples/words/vendor/assets/stylesheets/.keep +0 -0
  552. data/reactive_record_test_app/Gemfile +0 -20
  553. data/reactive_record_test_app/Gemfile.lock +0 -269
  554. data/reactive_record_test_app/Rakefile +0 -7
  555. data/reactive_record_test_app/app/assets/javascripts/application.rb +0 -3
  556. data/reactive_record_test_app/app/assets/javascripts/bigdecimal.rb +0 -1
  557. data/reactive_record_test_app/app/assets/javascripts/reactive_record_config.js +0 -2
  558. data/reactive_record_test_app/app/assets/stylesheets/application.css +0 -13
  559. data/reactive_record_test_app/app/controllers/application_controller.rb +0 -8
  560. data/reactive_record_test_app/app/controllers/home_controller.rb +0 -7
  561. data/reactive_record_test_app/app/helpers/application_helper.rb +0 -2
  562. data/reactive_record_test_app/app/models/models.rb.erb +0 -6
  563. data/reactive_record_test_app/app/models/public/address.rb +0 -13
  564. data/reactive_record_test_app/app/models/public/comment.rb +0 -19
  565. data/reactive_record_test_app/app/models/public/todo_item.rb +0 -36
  566. data/reactive_record_test_app/app/models/public/user.rb +0 -78
  567. data/reactive_record_test_app/config.ru +0 -33
  568. data/reactive_record_test_app/config/application.rb +0 -75
  569. data/reactive_record_test_app/config/boot.rb +0 -10
  570. data/reactive_record_test_app/config/database.yml +0 -25
  571. data/reactive_record_test_app/config/environment.rb +0 -5
  572. data/reactive_record_test_app/config/environments/development.rb +0 -43
  573. data/reactive_record_test_app/config/initializers/backtrace_silencers.rb +0 -7
  574. data/reactive_record_test_app/config/initializers/hyper_mesh_legacy_behavior.rb +0 -5
  575. data/reactive_record_test_app/config/initializers/inflections.rb +0 -15
  576. data/reactive_record_test_app/config/initializers/mime_types.rb +0 -5
  577. data/reactive_record_test_app/config/initializers/secret_token.rb +0 -7
  578. data/reactive_record_test_app/config/initializers/session_store.rb +0 -8
  579. data/reactive_record_test_app/config/initializers/wrap_parameters.rb +0 -14
  580. data/reactive_record_test_app/config/locales/en.yml +0 -5
  581. data/reactive_record_test_app/config/routes.rb +0 -6
  582. data/reactive_record_test_app/db/migrate/20150617002932_create_todo_items.rb +0 -11
  583. data/reactive_record_test_app/db/migrate/20150617134028_create_users.rb +0 -14
  584. data/reactive_record_test_app/db/migrate/20150729195556_add_address_to_user.rb +0 -20
  585. data/reactive_record_test_app/db/migrate/20150826142045_create_comments.rb +0 -10
  586. data/reactive_record_test_app/db/migrate/20150828172008_add_single_comment_to_todo_item.rb +0 -5
  587. data/reactive_record_test_app/db/migrate/20150908184118_add_address_id_to_user.rb +0 -5
  588. data/reactive_record_test_app/db/migrate/20150917220236_add_second_address_to_user.rb +0 -10
  589. data/reactive_record_test_app/db/migrate/20151009000111_add_test_data_attributes_to_user.rb +0 -6
  590. data/reactive_record_test_app/db/migrate/20160129182544_add_test_enum_to_user.rb +0 -5
  591. data/reactive_record_test_app/db/schema.rb +0 -63
  592. data/reactive_record_test_app/db/seeds.rb +0 -66
  593. data/reactive_record_test_app/public/404.html +0 -26
  594. data/reactive_record_test_app/public/422.html +0 -26
  595. data/reactive_record_test_app/public/500.html +0 -25
  596. data/reactive_record_test_app/public/favicon.ico +0 -0
  597. data/reactive_record_test_app/script/rails +0 -6
  598. data/reactive_record_test_app/spec-opal/active-record/aggregations_spec.rb +0 -41
  599. data/reactive_record_test_app/spec-opal/active-record/associations_spec.rb +0 -75
  600. data/reactive_record_test_app/spec-opal/active-record/base_spec.rb +0 -126
  601. data/reactive_record_test_app/spec-opal/active-record/dummy_value_spec.rb +0 -27
  602. data/reactive_record_test_app/spec-opal/active-record/edge_cases_spec.rb +0 -116
  603. data/reactive_record_test_app/spec-opal/active-record/enum_spec.rb +0 -43
  604. data/reactive_record_test_app/spec-opal/active-record/instance_methods_spec.rb +0 -53
  605. data/reactive_record_test_app/spec-opal/active-record/non_ar_aggregations_spec.rb +0 -74
  606. data/reactive_record_test_app/spec-opal/active-record/reactive_record_load_spec.rb +0 -23
  607. data/reactive_record_test_app/spec-opal/active-record/rendering_spec.rb +0 -230
  608. data/reactive_record_test_app/spec-opal/active-record/save_spec.rb +0 -124
  609. data/reactive_record_test_app/spec-opal/active-record/scope_spec.rb +0 -85
  610. data/reactive_record_test_app/spec-opal/active-record/update_aggregations_spec.rb +0 -76
  611. data/reactive_record_test_app/spec-opal/active-record/update_attributes_spec.rb +0 -186
  612. data/reactive_record_test_app/spec-opal/active-record/virtual_methods_spec.rb +0 -71
  613. data/reactive_record_test_app/spec-opal/index.html.erb +0 -11
  614. data/reactive_record_test_app/spec-opal/spec_helper.js.rb +0 -268
  615. data/reactive_record_test_app/spec-opal/test_spec.rb +0 -7
  616. data/reactive_record_test_app/spec-opal/vendor/es5-shim.min.js +0 -6
  617. data/reactive_record_test_app/spec_dont_run/README.md +0 -33
  618. data/reactive_record_test_app/spec_dont_run/active_record_broken/permissions_spec.rb +0 -170
  619. data/reactive_record_test_app/spec_dont_run/active_record_broken/prerendering_spec.rb +0 -50
  620. data/reactive_record_test_app/spec_dont_run/moved_to_main_spec_dir/zzzmany_to_many_spec_moved_to_main_suite.rb +0 -30
  621. data/reactive_record_test_app/spec_dont_run/moved_to_main_spec_dir/zzzrevert_record_spec_moved.rb +0 -78
  622. data/reactive_record_test_app/spec_dont_run/moved_to_main_spec_dir/zzzupdate_associations_spec_moved.rb +0 -142
  623. data/reactive_record_test_app/spec_dont_run/moved_to_main_spec_dir/zzzupdate_scopes_movedspec.rb +0 -48
  624. data/spec/batch1/aaa-unit_tests/connection_movedspec.rb +0 -144
  625. data/spec/batch1/aaa-unit_tests/dummy_value_spec.rb +0 -26
  626. data/spec/batch1/column_types/column_type_spec.rb +0 -318
  627. data/spec/batch1/crud_access_regulation/broadcast_controls_access_spec.rb +0 -99
  628. data/spec/batch1/crud_access_regulation/model_policies_spec.rb +0 -133
  629. data/spec/batch1/misc/access_like_hash_spec.rb +0 -43
  630. data/spec/batch1/misc/while_loading_spec.rb +0 -196
  631. data/spec/batch1/policies/regulate_all_broadcasts_spec.rb +0 -315
  632. data/spec/batch1/policies/regulate_broadcast_spec.rb +0 -370
  633. data/spec/batch2/authorization_spec.rb +0 -112
  634. data/spec/batch2/default_scope_spec.rb +0 -121
  635. data/spec/batch2/has_many_through_spec.rb +0 -169
  636. data/spec/batch2/relationships_spec.rb +0 -263
  637. data/spec/batch3/auto_load_itself_spec.rb +0 -24
  638. data/spec/batch3/edge_cases_spec.rb +0 -31
  639. data/spec/batch3/finder_method_spec.rb +0 -67
  640. data/spec/batch3/many_to_many_spec.rb +0 -50
  641. data/spec/batch3/pry_rescue_xspec.rb +0 -48
  642. data/spec/batch3/readme.txt +0 -0
  643. data/spec/batch3/revert_spec.rb +0 -113
  644. data/spec/batch3/save_while_loading_spec.rb +0 -44
  645. data/spec/batch3/update_associations_spec.rb +0 -189
  646. data/spec/batch3/update_scopes_spec.rb +0 -54
  647. data/spec/batch4/saving_during_commit_spec.rb +0 -64
  648. data/spec/batch4/scope_spec.rb +0 -581
  649. data/spec/batch4/scoped_todos_spec.rb +0 -167
  650. data/spec/batch4/synchromesh_spec.rb +0 -80
  651. data/spec/bin/firebug-2.0.13-fx.xpi +0 -0
  652. data/spec/component_helpers_xspec.rb +0 -49
  653. data/spec/examples/dictionary.rb +0 -239
  654. data/spec/examples/dictionary_with_client_scopes.rb +0 -196
  655. data/spec/examples/random_examples.rb +0 -133
  656. data/spec/factories/child_model.rb +0 -5
  657. data/spec/factories/comment.rb +0 -5
  658. data/spec/factories/test_models.rb +0 -5
  659. data/spec/factories/todo.rb +0 -5
  660. data/spec/factories/user.rb +0 -5
  661. data/spec/play_ground.rb +0 -64
  662. data/spec/reactive_record_factory.rb +0 -62
  663. data/spec/spec_helper.rb +0 -372
  664. data/spec/support/component_helpers.rb +0 -351
  665. data/spec/test_app/Gemfile +0 -66
  666. data/spec/test_app/Gemfile.lock +0 -303
  667. data/spec/test_app/Rakefile +0 -6
  668. data/spec/test_app/app/assets/javascripts/application.js +0 -6
  669. data/spec/test_app/app/assets/stylesheets/application.css +0 -15
  670. data/spec/test_app/app/controllers/application_controller.rb +0 -13
  671. data/spec/test_app/app/controllers/test_controller.rb +0 -5
  672. data/spec/test_app/app/models/_react_public_models.rb +0 -2
  673. data/spec/test_app/app/models/public/address.rb +0 -13
  674. data/spec/test_app/app/models/public/child_model.rb +0 -3
  675. data/spec/test_app/app/models/public/comment.rb +0 -25
  676. data/spec/test_app/app/models/public/test_model.rb +0 -5
  677. data/spec/test_app/app/models/public/todo.rb +0 -6
  678. data/spec/test_app/app/models/public/todo_item.rb +0 -36
  679. data/spec/test_app/app/models/public/user.rb +0 -88
  680. data/spec/test_app/app/policies/auto_loader_test_classa_policy.rb +0 -3
  681. data/spec/test_app/app/policies/auto_loader_test_classb_policy.rb +0 -3
  682. data/spec/test_app/app/policies/auto_loader_test_classc_policy.rb +0 -3
  683. data/spec/test_app/app/policies/auto_loader_test_classd_policy.rb +0 -3
  684. data/spec/test_app/app/views/components.rb +0 -13
  685. data/spec/test_app/app/views/components/show.rb +0 -5
  686. data/spec/test_app/app/views/layouts/application.html.erb +0 -14
  687. data/spec/test_app/bin/bundle +0 -3
  688. data/spec/test_app/bin/rails +0 -4
  689. data/spec/test_app/bin/rake +0 -4
  690. data/spec/test_app/bin/setup +0 -29
  691. data/spec/test_app/config.ru +0 -4
  692. data/spec/test_app/config/application.rb +0 -44
  693. data/spec/test_app/config/boot.rb +0 -6
  694. data/spec/test_app/config/cable.yml +0 -10
  695. data/spec/test_app/config/database.yml +0 -47
  696. data/spec/test_app/config/environment.rb +0 -5
  697. data/spec/test_app/config/environments/development.rb +0 -41
  698. data/spec/test_app/config/environments/production.rb +0 -79
  699. data/spec/test_app/config/environments/test.rb +0 -42
  700. data/spec/test_app/config/initializers/assets.rb +0 -11
  701. data/spec/test_app/config/initializers/backtrace_silencers.rb +0 -7
  702. data/spec/test_app/config/initializers/cookies_serializer.rb +0 -3
  703. data/spec/test_app/config/initializers/filter_parameter_logging.rb +0 -4
  704. data/spec/test_app/config/initializers/inflections.rb +0 -16
  705. data/spec/test_app/config/initializers/mime_types.rb +0 -4
  706. data/spec/test_app/config/initializers/session_store.rb +0 -3
  707. data/spec/test_app/config/initializers/synchromesh.rb +0 -11
  708. data/spec/test_app/config/initializers/wrap_parameters.rb +0 -14
  709. data/spec/test_app/config/locales/en.yml +0 -23
  710. data/spec/test_app/config/routes.rb +0 -61
  711. data/spec/test_app/config/secrets.yml +0 -22
  712. data/spec/test_app/db/development.sqlite3 +0 -0
  713. data/spec/test_app/db/migrate/20160731182106_create_test_models.rb +0 -75
  714. data/spec/test_app/db/schema.rb +0 -88
  715. data/spec/test_app/db/seeds.rb +0 -7
  716. data/spec/test_app/lib/assets/.keep +0 -0
  717. data/spec/test_app/public/404.html +0 -67
  718. data/spec/test_app/public/422.html +0 -67
  719. data/spec/test_app/public/500.html +0 -66
  720. data/spec/test_app/public/favicon.ico +0 -0
  721. data/spec/test_components.rb +0 -18
  722. data/spec/vendor/es5-shim.min.js +0 -6
@@ -1,54 +0,0 @@
1
- require 'spec_helper'
2
- require 'test_components'
3
- require 'reactive_record_factory'
4
- require 'rspec-steps'
5
-
6
- RSpec::Steps.steps "updating scopes", js: true do
7
-
8
- before(:all) do
9
- seed_database
10
- end
11
-
12
- before(:step) do
13
- # spec_helper resets the policy system after each test so we have to setup
14
- # before each test
15
- stub_const 'TestApplication', Class.new
16
- stub_const 'TestApplicationPolicy', Class.new
17
- TestApplicationPolicy.class_eval do
18
- always_allow_connection
19
- regulate_all_broadcasts { |policy| policy.send_all }
20
- allow_change(to: :all, on: [:create, :update, :destroy]) { true }
21
- end
22
- size_window(:small, :portrait)
23
- end
24
-
25
- it "will update .all and rerender after saving a record" do
26
- mount "TestComponent" do
27
- class TestComponent < React::Component::Base
28
- def render
29
- #div do
30
- "TodoItem.count = #{TodoItem.all.count}".span
31
- #ul { TodoItem.each { |todo| li { todo.id.to_s } }}
32
- #end
33
- end
34
- end
35
- end
36
- starting_count = TodoItem.count
37
- expect(page).to have_content("TodoItem.count = #{starting_count}")
38
- evaluate_ruby { TodoItem.new(title: "play it again sam").save }
39
- expect(page).to have_content("TodoItem.count = #{starting_count+1}")
40
- end
41
-
42
- it "destroying records causes a rerender" do
43
- count = TodoItem.count
44
- while count > 0
45
- expect(page).to have_content("TodoItem.count = #{count}")
46
- evaluate_ruby do
47
- ReactiveRecord.load { TodoItem.last }.then { |todo| todo.destroy }
48
- end
49
- count -= 1
50
- end
51
- expect(page).to have_content("TodoItem.count = 0")
52
- end
53
-
54
- end
@@ -1,64 +0,0 @@
1
- require 'spec_helper'
2
- require 'test_components'
3
- require 'rspec-steps'
4
-
5
- describe "saving during commit", js: true do
6
-
7
- before(:each) do
8
- require 'pusher'
9
- require 'pusher-fake'
10
- Pusher.app_id = "MY_TEST_ID"
11
- Pusher.key = "MY_TEST_KEY"
12
- Pusher.secret = "MY_TEST_SECRET"
13
- require "pusher-fake/support/base"
14
-
15
- Hyperloop.configuration do |config|
16
- config.transport = :pusher
17
- config.channel_prefix = "synchromesh"
18
- config.opts = {app_id: Pusher.app_id, key: Pusher.key, secret: Pusher.secret}.merge(PusherFake.configuration.web_options)
19
- end
20
-
21
- class CommitIssue < ActiveRecord::Base
22
- def self.build_tables
23
- connection.create_table :commit_issues, force: true do |t|
24
- t.string :name
25
- t.timestamps
26
- end
27
- end
28
- end
29
-
30
- isomorphic do
31
- class CommitIssue < ActiveRecord::Base
32
- after_create :save_again
33
- def save_again
34
- save
35
- end
36
- end
37
- end
38
-
39
- CommitIssue.build_tables rescue nil
40
-
41
- stub_const 'ApplicationPolicy', Class.new
42
- ApplicationPolicy.class_eval do
43
- always_allow_connection
44
- regulate_all_broadcasts { |policy| policy.send_all }
45
- allow_change(to: :all, on: [:create, :update, :destroy]) { true }
46
- end
47
- size_window(:small, :portrait)
48
- end
49
-
50
- it "broadcast even if saving during after_save" do
51
- CommitIssue.create(name: 1)
52
- mount "CommitIssueTest" do
53
- class CommitIssueTest < React::Component::Base
54
- render do
55
- "all: [#{CommitIssue.all.pluck(:name)}]"
56
- end
57
- end
58
- end
59
- page.should have_content('all: [1]')
60
- CommitIssue.create(name: 2)
61
- page.should have_content('all: [1,2]')
62
- end
63
-
64
- end
@@ -1,581 +0,0 @@
1
- require 'spec_helper'
2
- require 'test_components'
3
-
4
- describe "synchronized scopes", js: true do
5
-
6
- before(:all) do
7
- require 'pusher'
8
- require 'pusher-fake'
9
- Pusher.app_id = "MY_TEST_ID"
10
- Pusher.key = "MY_TEST_KEY"
11
- Pusher.secret = "MY_TEST_SECRET"
12
- require "pusher-fake/support/base"
13
-
14
- Hyperloop.configuration do |config|
15
- config.transport = :pusher
16
- config.channel_prefix = "synchromesh"
17
- config.opts = {app_id: Pusher.app_id, key: Pusher.key, secret: Pusher.secret}.merge(PusherFake.configuration.web_options)
18
- end
19
- end
20
-
21
- before(:all) do
22
- TestModel.class_eval do
23
- class << self
24
- alias pretest_scope scope
25
- def scope(name, *args, &block)
26
- opts = _synchromesh_scope_args_check(args)
27
- self.class.class_eval do
28
- attr_reader "#{name}_count".to_sym
29
- end
30
- instance_variable_set("@#{name}_count", 0)
31
- original_proc = opts[:server]
32
- opts[:server] = lambda do |*args|
33
- instance_variable_set("@#{name}_count", send("#{name}_count")+1); original_proc.call(*args, &block)
34
- end
35
- pretest_scope name, opts, &block
36
- end
37
- end
38
- end
39
- end
40
-
41
- before(:each) do
42
- # spec_helper resets the policy system after each test so we have to setup
43
- # before each test
44
- stub_const 'TestApplicationPolicy', Class.new
45
- TestApplicationPolicy.class_eval do
46
- always_allow_connection
47
- regulate_all_broadcasts { |policy| policy.send_all }
48
- end
49
- size_window(:small, :portrait)
50
- end
51
-
52
- it "can use the all scope" do
53
- mount "TestComponent2" do
54
- class TestComponent2 < React::Component::Base
55
- render do
56
- "count = #{TestModel.all.count}"
57
- end
58
- end
59
- end
60
- page.should have_content("count = 0")
61
- m = FactoryGirl.create(:test_model)
62
- page.should have_content("count = 1")
63
- m.destroy
64
- page.should have_content("count = 0")
65
- end
66
-
67
- it "will be updated only when needed" do
68
- isomorphic do
69
- TestModel.class_eval do
70
- scope :scope1, -> { where(completed: true) }
71
- scope :scope2, -> { where(completed: true) }
72
- end
73
- end
74
- mount "TestComponent2" do
75
- class TestComponent2 < React::Component::Base
76
- before_mount do
77
- @render_count = 1
78
- end
79
- before_update do
80
- @render_count = @render_count + 1
81
- end
82
- render(:div) do
83
- div { "rendered #{@render_count} times"}
84
- div { "scope1 count = #{TestModel.scope1.count}" }
85
- div { "scope2 count = #{TestModel.scope2.count}"} if TestModel.scope1.count < 2
86
- TestModel.scope1.each do |model|
87
- div { model.test_attribute }
88
- end
89
- end
90
- end
91
- end
92
- page.should have_content('rendered 2 times')
93
- page.should have_content('scope1 count = 0')
94
- page.should have_content('scope2 count = 0')
95
- TestModel.scope1_count.should eq(2) # once for scope1.count and once for scope1.each { .test_attribute }
96
- TestModel.scope2_count.should eq(1)
97
- m1 = FactoryGirl.create(:test_model, test_attribute: "model 1", completed: true)
98
- page.should have_content('rendered 3 times')
99
- page.should have_content('scope1 count = 1')
100
- page.should have_content('scope2 count = 1')
101
- page.should have_content('model 1')
102
- TestModel.scope1_count.should eq(3)
103
- TestModel.scope2_count.should eq(2)
104
- m2 = FactoryGirl.create(:test_model, test_attribute: "model 2", completed: false)
105
- page.should have_content('rendered 4 times')
106
- page.should have_content('scope1 count = 1')
107
- page.should have_content('scope2 count = 1')
108
- page.should have_content('model 1')
109
- TestModel.scope1_count.should eq(4)
110
- TestModel.scope2_count.should eq(3)
111
- FactoryGirl.create(:test_model, test_attribute: "model 3", completed: true)
112
- page.should have_content('rendered 5 times')
113
- page.should have_content('scope1 count = 2')
114
- page.should_not have_content('scope2', wait: 0)
115
- page.should have_content('model 1')
116
- page.should have_content('model 3')
117
- TestModel.scope1_count.should eq(5)
118
- TestModel.scope2_count.should eq(4)
119
- m2.update_attribute(:completed, true)
120
- page.should have_content('rendered 6 times')
121
- page.should have_content('scope1 count = 3')
122
- page.should have_content('model 1')
123
- page.should have_content('model 2')
124
- page.should have_content('model 3')
125
- TestModel.scope1_count.should eq(6)
126
- TestModel.scope2_count.should eq(4) # will not change because nothing is viewing it
127
- m2.update_attribute(:completed, false)
128
- page.should have_content('rendered 7 times')
129
- TestModel.scope1_count.should eq(7)
130
- m1.update_attribute(:completed, false)
131
- page.should have_content('rendered 9 times')
132
- page.should have_content('scope1 count = 1')
133
- page.should have_content('scope2 count = 1')
134
- page.should have_content('model 3')
135
- TestModel.scope1_count.should eq(8)
136
- TestModel.scope2_count.should eq(5)
137
- end
138
-
139
- it "can have params" do
140
- isomorphic do
141
- TestModel.class_eval do
142
- scope :with_args, ->(match, match2) { where(test_attribute: match) }
143
- end
144
- end
145
- m1 = FactoryGirl.create(:test_model, test_attribute: "123")
146
- mount "TestComponent2", m: m1 do
147
- class TestComponent2 < React::Component::Base
148
- param :m, type: TestModel
149
- before_mount do
150
- @render_count = 1
151
- end
152
- before_update do
153
- @render_count = @render_count + 1
154
- end
155
- render(:div) do
156
- div { "rendered #{@render_count} times"}
157
- div { "with_args('match').count = #{TestModel.with_args(params.m.test_attribute, :foo).count}" }
158
- end
159
- end
160
- end
161
- m2 = FactoryGirl.create(:test_model)
162
- page.should have_content('.count = 1')
163
- m2.update_attribute(:test_attribute, m1.test_attribute)
164
- page.should have_content('.count = 2')
165
- m1.update_attribute(:test_attribute, '456')
166
- page.should have_content('.count = 1')
167
- end
168
-
169
- it "scopes with params can be nested" do
170
- isomorphic do
171
- TestModel.class_eval do
172
- scope :scope1, -> { where(completed: true) }
173
- scope :with_args, -> (match) { where(test_attribute: match) }
174
- end
175
- end
176
- mount "TestComponent2" do
177
- class TestComponent2 < React::Component::Base
178
- render(:div) do
179
- div { "scope1.scope2.count = #{TestModel.scope1.with_args(:foo).count}" }
180
- end
181
- end
182
- end
183
- page.should have_content('scope1.scope2.count = 0')
184
- FactoryGirl.create(:test_model, test_attribute: "foo", completed: true)
185
- page.should have_content('scope1.scope2.count = 1')
186
- end
187
-
188
- it 'collections passed from server will not interfere with client associations' do
189
- user = FactoryGirl.create(:user)
190
- 5.times do
191
- FactoryGirl.create(:todo, title: 'active', created_by_id: user.id)
192
- end
193
-
194
- isomorphic do
195
- Todo.class_eval do
196
- scope :active, -> { where('title LIKE ?', 'active') }
197
- end
198
- end
199
-
200
- todos = user.authored_todos.active
201
-
202
- mount 'TestComponent2', todos: todos do
203
- class TestComponent2 < React::Component::Base
204
- param :todos, type: [Todo]
205
- render(:div) do
206
- P { "params.todos = #{params.todos.count}" }
207
- P { "params.user.authored_todos.active = #{User.find(1).authored_todos.active.count}" }
208
- end
209
- end
210
- end
211
-
212
- page.should have_content('params.todos = 5')
213
- page.should have_content('params.user.authored_todos.active = 5')
214
- end
215
-
216
- context 'basic joins' do
217
-
218
- it 'will not update a joined scope without a joins option' do
219
- isomorphic do
220
- TestModel.class_eval do
221
- scope :joined,
222
- -> { joins(:child_models).where("child_attribute = 'WHAAA'") }
223
- end
224
- end
225
- mount 'TestComponent2' do
226
- class TestComponent2 < React::Component::Base
227
- render { "TestModel.joined.count = #{TestModel.joined.count}" }
228
- end
229
- end
230
- parent = FactoryGirl.create(:test_model)
231
- child = FactoryGirl.create(:child_model, test_model: parent )
232
- page.should have_content('.count = 0')
233
- child.update_attribute(:child_attribute, 'WHAAA')
234
- page.should have_content('.count = 0')
235
- end
236
-
237
- it 'can have a joins option' do
238
- isomorphic do
239
- TestModel.class_eval do
240
- scope :joined,
241
- -> { joins(:child_models).where("child_attribute = 'WHAAA'") },
242
- joins: 'child_models'
243
- end
244
- end
245
- mount 'TestComponent2' do
246
- class TestComponent2 < React::Component::Base
247
- render { "TestModel.joined.count = #{TestModel.joined.count}" }
248
- end
249
- end
250
- parent = FactoryGirl.create(:test_model)
251
- child = FactoryGirl.create(:child_model, test_model: parent )
252
- page.should have_content('.count = 0')
253
- child.update_attribute(:child_attribute, 'WHAAA')
254
- page.should have_content('.count = 1')
255
- end
256
- end
257
-
258
- it 'can have a client filter method' do
259
-
260
- isomorphic do
261
- TestModel.class_eval do
262
- scope :quicker, -> { where(completed: true) }, client: -> { completed }
263
- end
264
- end
265
-
266
- mount 'TestComponent2' do
267
- class TestComponent2 < React::Component::Base
268
- before_mount do
269
- @render_count = 1
270
- end
271
- before_update do
272
- @render_count = @render_count + 1
273
- end
274
- render(:div) do
275
- div { "rendered #{@render_count} times"}
276
- div { "quicker.count = #{TestModel.quicker.count}" }
277
- end
278
- end
279
- end
280
- m1 = FactoryGirl.create(:test_model)
281
- page.should have_content('.count = 0')
282
- page.should have_content('rendered 2 times')
283
- TestModel.quicker_count.should eq(1)
284
- m1.update_attribute(:test_attribute, 'new_value')
285
- wait_for_ajax
286
- page.should have_content('.count = 0')
287
- page.should have_content('rendered 2 times')
288
- TestModel.quicker_count.should eq(1)
289
- m1.update_attribute(:completed, true)
290
- page.should have_content('.count = 1')
291
- page.should have_content('rendered 3 times')
292
- TestModel.quicker_count.should eq(1)
293
- m2 = FactoryGirl.create(:test_model, completed: true)
294
- page.should have_content('.count = 2')
295
- page.should have_content('rendered 4 times')
296
- TestModel.quicker_count.should eq(1)
297
- m1.destroy
298
- page.should have_content('.count = 1')
299
- page.should have_content('rendered 5 times')
300
- TestModel.quicker_count.should eq(1)
301
- end
302
-
303
- it 'can have a client collector method' do
304
-
305
- isomorphic do
306
- TestModel.class_eval do
307
- def <=>(other); self.test_attribute <=> other.test_attribute; end
308
- scope :filter_and_sort, -> { where(completed: true).order('test_attribute ASC') },
309
- select: -> { select { |r| r.completed }.sort }
310
- end
311
- end
312
-
313
- mount 'TestComponent2' do
314
- class TestComponent2 < React::Component::Base
315
- before_mount do
316
- @render_count = 1
317
- end
318
- before_update do
319
- @render_count = @render_count + 1
320
- end
321
- render(:div) do
322
- div { "rendered #{@render_count} times"}
323
- div { "filter_and_sort.count = #{TestModel.filter_and_sort.count}" }
324
- if TestModel.filter_and_sort.any?
325
- div { "test attributes: #{TestModel.filter_and_sort.collect { |r| r.test_attribute }.join(', ')}" }
326
- else
327
- div { "no test attributes" }
328
- end
329
- end
330
- end
331
- end
332
- TestModel.filter_and_sort_count.should eq(2)
333
- m1 = FactoryGirl.create(:test_model)
334
- page.should have_content('.count = 0')
335
- page.should have_content('rendered 2 times')
336
- page.should have_content('no test attributes')
337
- TestModel.filter_and_sort_count.should eq(2)
338
- m1.update_attribute(:test_attribute, 'N')
339
- wait_for_ajax
340
- page.should have_content('.count = 0')
341
- page.should have_content('rendered 2 times')
342
- page.should have_content('no test attributes')
343
- TestModel.filter_and_sort_count.should eq(2)
344
- m1.update_attribute(:completed, true)
345
- page.should have_content('.count = 1')
346
- page.should have_content('rendered 3 times')
347
- page.should have_content('test attributes: N')
348
- TestModel.filter_and_sort_count.should eq(2)
349
- m2 = FactoryGirl.create(:test_model, test_attribute: 'A', completed: true)
350
- page.should have_content('.count = 2')
351
- page.should have_content('rendered 4 times')
352
- page.should have_content('test attributes: A, N')
353
- TestModel.filter_and_sort_count.should eq(2)
354
- m3 = FactoryGirl.create(:test_model, test_attribute: 'Z', completed: true)
355
- page.should have_content('.count = 3')
356
- page.should have_content('rendered 5 times')
357
- page.should have_content('test attributes: A, N, Z')
358
- TestModel.filter_and_sort_count.should eq(2)
359
- m1.destroy
360
- page.should have_content('.count = 2')
361
- page.should have_content('rendered 6 times')
362
- page.should have_content('test attributes: A, Z')
363
- TestModel.filter_and_sort_count.should eq(2)
364
- m3.update_attribute(:completed, false)
365
- page.should have_content('.count = 1')
366
- page.should have_content('rendered 7 times')
367
- page.should have_content('test attributes: A')
368
- TestModel.filter_and_sort_count.should eq(2)
369
- end
370
-
371
- it 'client side scoping methods can take args' do
372
-
373
- isomorphic do
374
- TestModel.class_eval do
375
- def to_s
376
- "<TestModel id: #{id} test_attribute: #{test_attribute}>"
377
- end
378
- def <=>(other)
379
- (test_attribute || '') <=> (other.test_attribute || '')
380
- end
381
- scope :matches, -> (s) { where(['test_attribute LIKE ?', "%#{s}%"])},
382
- client: -> (s) { puts "test_attribute =~ /#{s}/ is #{!!(test_attribute =~ /#{s}/)}"; test_attribute =~ /#{s}/ }
383
- scope :sorted, -> (dir) { order("test_attribute #{dir==:asc ? 'ASC' : 'DESC'}") },
384
- select: -> (dir) { sort { |a, b| dir == :asc ? a <=> b : b <=> a }.tap {|r| puts "sorted(#{dir==:asc}) as [#{r}]"} }
385
- end
386
- end
387
-
388
- mount 'TestComponent2' do
389
- class TestComponent2 < React::Component::Base
390
- export_state pat: :foo
391
- export_state dir: :asc
392
- before_mount do
393
- @render_count = 1
394
- end
395
- before_update do
396
- @render_count = @render_count + 1
397
- end
398
- def scoped
399
- puts "scoping: #{TestComponent2.pat}, #{TestComponent2.dir}"
400
- TestModel.matches(TestComponent2.pat).sorted(TestComponent2.dir)
401
- end
402
- render(:div) do
403
- div { "rendered #{@render_count} times"}
404
- div { "matches(#{TestComponent2.pat}).count = #{TestModel.matches(TestComponent2.pat).count}" }
405
- if scoped.any?
406
- div { "test attributes: #{scoped.collect { |r| r.test_attribute[0] }.join(', ')}" }
407
- else
408
- div { "no test attributes" }
409
- end
410
- end
411
- end
412
- end
413
- starting_fetch_time = evaluate_ruby("ReactiveRecord::Base.last_fetch_at")
414
- m1 = FactoryGirl.create(:test_model)
415
- page.should have_content('.count = 0')
416
- page.should have_content('rendered 2 times')
417
- page.should have_content('no test attributes')
418
- m1.update_attribute(:test_attribute, 'N')
419
- page.should have_content('rendered 2 times')
420
- page.should have_content('.count = 0')
421
- page.should have_content('no test attributes')
422
- m1.update_attribute(:test_attribute, 'N - foobar')
423
- page.should have_content('.count = 1')
424
- page.should have_content('rendered 3 times')
425
- page.should have_content('test attributes: N')
426
- m2 = FactoryGirl.create(:test_model, test_attribute: 'A - is a foo')
427
- page.should have_content('.count = 2')
428
- page.should have_content('rendered 4 times')
429
- page.should have_content('test attributes: A, N')
430
- m3 = FactoryGirl.create(:test_model, test_attribute: 'Z - is also a foo')
431
- page.should have_content('.count = 3')
432
- page.should have_content('rendered 5 times')
433
- page.should have_content('test attributes: A, N, Z')
434
- evaluate_ruby("ReactiveRecord::Base.last_fetch_at").should eq(starting_fetch_time)
435
- evaluate_ruby("TestComponent2.dir! :desc")
436
- page.should have_content('test attributes: Z, N, A')
437
- page.should have_content('rendered 7 times')
438
- starting_fetch_time = evaluate_ruby("ReactiveRecord::Base.last_fetch_at")
439
- m1.destroy
440
- page.should have_content('.count = 2')
441
- page.should have_content('rendered 8 times')
442
- page.should have_content('test attributes: Z, A')
443
- m3.update_attribute(:test_attribute, 'Z - is a bar')
444
- page.should have_content('.count = 1')
445
- page.should have_content('rendered 9 times')
446
- page.should have_content('test attributes: A')
447
- evaluate_ruby("ReactiveRecord::Base.last_fetch_at").should eq(starting_fetch_time)
448
- evaluate_ruby('TestComponent2.pat! :bar')
449
- page.should have_content('.count = 1')
450
- page.should have_content('test attributes: Z')
451
- page.should have_content('rendered 11 times')
452
- starting_fetch_time = evaluate_ruby("ReactiveRecord::Base.last_fetch_at")
453
- m2.update_attribute(:test_attribute, 'A is also a bar')
454
- page.should have_content('.count = 2')
455
- page.should have_content('rendered 12 times')
456
- page.should have_content('test attributes: Z, A')
457
- evaluate_ruby("ReactiveRecord::Base.last_fetch_at").should eq(starting_fetch_time)
458
- end
459
-
460
- it 'the joins array can be combined with the client proc' do
461
- isomorphic do
462
- TestModel.class_eval do
463
- scope :has_children,
464
- joins: 'child_models',
465
- server: -> { joins(:child_models).distinct },
466
- client: -> { child_models.count > 0 }
467
- end
468
- end
469
- mount 'TestComponent2' do
470
- class TestComponent2 < React::Component::Base
471
- render { "TestModel.has_children.count = #{TestModel.has_children.count}" }
472
- end
473
- end
474
- TestModel.has_children_count.should eq(1)
475
- parent = FactoryGirl.create(:test_model)
476
- page.should have_content('.count = 0')
477
- child = FactoryGirl.create(:child_model)
478
- page.should have_content('.count = 0')
479
- child.update_attribute(:test_model, parent)
480
- page.should have_content('.count = 1')
481
- child.update_attribute(:child_attribute, 'WHAAA')
482
- page.should have_content('.count = 1')
483
- child.update_attribute(:test_model, nil)
484
- page.should have_content('.count = 0')
485
- child.update_attribute(:test_model, parent)
486
- page.should have_content('.count = 1')
487
- child.destroy
488
- page.should have_content('.count = 0')
489
- parent.destroy
490
- page.should have_content('.count = 0')
491
- TestModel.has_children_count.should eq(1)
492
- end
493
-
494
- it 'the joins option can join with all or no models' do
495
- isomorphic do
496
- TestModel.class_eval do
497
- scope :has_children_joins_all,
498
- joins: :all,
499
- server: -> { joins(:child_models).distinct }
500
- scope :has_children_no_joins,
501
- joins: [],
502
- server: -> { joins(:child_models).distinct }
503
- end
504
- end
505
- mount 'TestComponent2' do
506
- class TestComponent2 < React::Component::Base
507
- render(DIV) do
508
- DIV { "TestModel.has_children_joins_all.count = #{TestModel.has_children_joins_all.count}" }
509
- DIV { "TestModel.has_children_no_joins.count = #{TestModel.has_children_no_joins.count}" }
510
- end
511
- end
512
- end
513
- TestModel.has_children_joins_all_count.should eq(1)
514
- TestModel.has_children_no_joins_count.should eq(1)
515
- parent = FactoryGirl.create(:test_model)
516
- wait_for_ajax
517
- TestModel.has_children_no_joins_count.should eq(1)
518
- wait_for { TestModel.has_children_joins_all_count }.to eq(2)
519
- child = FactoryGirl.create(:child_model)
520
- wait_for { TestModel.has_children_joins_all_count }.to eq(3)
521
- parent.child_models << child
522
- wait_for { TestModel.has_children_joins_all_count }.to eq(4)
523
- TestModel.has_children_no_joins_count.should eq(1)
524
- page.should have_content('all.count = 1')
525
- page.should have_content('joins.count = 0')
526
- parent.update_attribute(:test_attribute, 'hello')
527
- page.should have_content('joins.count = 0')
528
- TestModel.has_children_no_joins_count.should eq(1)
529
- end
530
-
531
- it 'server side scopes can be procs returning arrays of elements' do
532
- isomorphic do
533
- TestModel.class_eval do
534
- scope :rev,
535
- server: -> { all.reverse }
536
- end
537
- end
538
- mount 'TestComponent2' do
539
- class TestComponent2 < React::Component::Base
540
- render do
541
- "test attributes: #{TestModel.rev.collect { |r| r.test_attribute }.join(', ')}"
542
- end
543
- end
544
- end
545
- FactoryGirl.create(:test_model, test_attribute: 1)
546
- page.should have_content('test attributes: 1')
547
- FactoryGirl.create(:test_model, test_attribute: 2)
548
- page.should have_content('test attributes: 2, 1')
549
- end
550
-
551
- it 'can force reload using the ! suffix' do
552
- isomorphic do
553
- TestModel.class_eval do
554
- scope :rev,
555
- joins: [],
556
- server: -> { all.reverse }
557
- end
558
- end
559
- mount 'TestComponent2' do
560
-
561
- class TestComponent2 < React::Component::Base
562
- before_mount do
563
- @reverse_collection = []
564
- end
565
- render do
566
- if @current_count != TestModel.all.count # this forces a rerender...
567
- puts "asking for reverse collection"
568
- @reverse_collection = TestModel.rev!
569
- @current_count = TestModel.all.count
570
- end
571
- puts "rendering #{@reverse_collection}"
572
- "test attributes: #{@reverse_collection.collect { |r| r.test_attribute }.join(', ')}"
573
- end
574
- end
575
- end
576
- FactoryGirl.create(:test_model, test_attribute: 1)
577
- page.should have_content('test attributes: 1')
578
- FactoryGirl.create(:test_model, test_attribute: 2)
579
- page.should have_content('test attributes: 2, 1')
580
- end
581
- end