hyper-mesh 0.6.0 → 1.0.0.lap22

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