unpoly-rails 1.0.3 → 2.0.0.pre.rc2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of unpoly-rails might be problematic. Click here for more details.

Files changed (344) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -1
  3. data/CHANGELOG.md +43 -25
  4. data/README.md +5 -6
  5. data/README_RAILS.md +295 -14
  6. data/dist/unpoly-bootstrap3.css +9 -14
  7. data/dist/unpoly-bootstrap3.js +4 -18
  8. data/dist/unpoly-bootstrap3.min.css +1 -1
  9. data/dist/unpoly-bootstrap3.min.js +1 -1
  10. data/dist/unpoly-bootstrap4.css +9 -0
  11. data/dist/unpoly-bootstrap4.js +16 -0
  12. data/dist/unpoly-bootstrap4.min.css +1 -0
  13. data/dist/unpoly-bootstrap4.min.js +1 -0
  14. data/dist/unpoly-bootstrap5.css +9 -0
  15. data/dist/unpoly-bootstrap5.js +14 -0
  16. data/dist/unpoly-bootstrap5.min.css +1 -0
  17. data/dist/unpoly-bootstrap5.min.js +1 -0
  18. data/dist/unpoly-migrate.js +1213 -0
  19. data/dist/unpoly-migrate.min.js +1 -0
  20. data/dist/unpoly.css +109 -140
  21. data/dist/unpoly.js +15376 -10484
  22. data/dist/unpoly.min.css +1 -1
  23. data/dist/unpoly.min.js +6 -4
  24. data/lib/unpoly/rails/change/cache.rb +26 -0
  25. data/lib/unpoly/rails/change/context.rb +80 -0
  26. data/lib/unpoly/rails/change/field.rb +117 -0
  27. data/lib/unpoly/rails/change/field_definition.rb +74 -0
  28. data/lib/unpoly/rails/change/layer.rb +60 -0
  29. data/lib/unpoly/rails/change.rb +372 -0
  30. data/lib/unpoly/rails/controller.rb +47 -0
  31. data/lib/unpoly/rails/error.rb +5 -0
  32. data/lib/unpoly/rails/request_echo_headers.rb +2 -2
  33. data/lib/unpoly/rails/version.rb +1 -1
  34. data/lib/unpoly/tasks.rb +45 -0
  35. data/lib/unpoly-rails.rb +9 -3
  36. metadata +42 -316
  37. data/.gitignore +0 -10
  38. data/.ruby-version +0 -1
  39. data/Gemfile +0 -7
  40. data/Gemfile.lock +0 -39
  41. data/Rakefile +0 -154
  42. data/bower.json +0 -27
  43. data/design/animation-ghosting.txt +0 -72
  44. data/design/design.txt +0 -34
  45. data/design/draft.html.erb +0 -48
  46. data/design/draft.rb +0 -9
  47. data/design/es6.js +0 -32
  48. data/design/ghost-debugging.txt +0 -118
  49. data/design/homepage.txt +0 -236
  50. data/design/ie11.txt +0 -9
  51. data/design/measure_import_node.js +0 -330
  52. data/design/measure_jquery/element_list.js +0 -41
  53. data/design/measure_jquery/up.on_vs_addEventListener.js +0 -56
  54. data/design/positioning.txt +0 -28
  55. data/design/query-params-in-form-actions/cases.html +0 -125
  56. data/design/rename.txt +0 -0
  57. data/design/test_rejected_promise.txt +0 -5
  58. data/design/unpoly errors.txt +0 -19
  59. data/lib/assets/javascripts/unpoly/browser.coffee.erb +0 -240
  60. data/lib/assets/javascripts/unpoly/classes/body_shifter.coffee +0 -45
  61. data/lib/assets/javascripts/unpoly/classes/cache.coffee +0 -127
  62. data/lib/assets/javascripts/unpoly/classes/compile_pass.coffee +0 -93
  63. data/lib/assets/javascripts/unpoly/classes/config.coffee +0 -9
  64. data/lib/assets/javascripts/unpoly/classes/css_transition.coffee +0 -118
  65. data/lib/assets/javascripts/unpoly/classes/divertible_chain.coffee +0 -39
  66. data/lib/assets/javascripts/unpoly/classes/event_listener.coffee +0 -116
  67. data/lib/assets/javascripts/unpoly/classes/extract_cascade.coffee +0 -86
  68. data/lib/assets/javascripts/unpoly/classes/extract_plan.coffee +0 -111
  69. data/lib/assets/javascripts/unpoly/classes/field_observer.coffee +0 -80
  70. data/lib/assets/javascripts/unpoly/classes/focus_follower.coffee +0 -29
  71. data/lib/assets/javascripts/unpoly/classes/follow_variant.coffee +0 -64
  72. data/lib/assets/javascripts/unpoly/classes/html_parser.coffee +0 -46
  73. data/lib/assets/javascripts/unpoly/classes/motion_controller.coffee +0 -157
  74. data/lib/assets/javascripts/unpoly/classes/params.coffee.erb +0 -544
  75. data/lib/assets/javascripts/unpoly/classes/record.coffee +0 -22
  76. data/lib/assets/javascripts/unpoly/classes/rect.js +0 -21
  77. data/lib/assets/javascripts/unpoly/classes/request.coffee +0 -247
  78. data/lib/assets/javascripts/unpoly/classes/response.coffee +0 -157
  79. data/lib/assets/javascripts/unpoly/classes/reveal_motion.coffee +0 -102
  80. data/lib/assets/javascripts/unpoly/classes/scroll_motion.coffee +0 -67
  81. data/lib/assets/javascripts/unpoly/classes/selector.coffee +0 -60
  82. data/lib/assets/javascripts/unpoly/classes/store/memory.coffee +0 -26
  83. data/lib/assets/javascripts/unpoly/classes/store/session.coffee +0 -59
  84. data/lib/assets/javascripts/unpoly/classes/tether.coffee +0 -105
  85. data/lib/assets/javascripts/unpoly/classes/url_set.coffee +0 -32
  86. data/lib/assets/javascripts/unpoly/cookie.coffee +0 -56
  87. data/lib/assets/javascripts/unpoly/element.coffee.erb +0 -1129
  88. data/lib/assets/javascripts/unpoly/event.coffee.erb +0 -445
  89. data/lib/assets/javascripts/unpoly/feedback.coffee +0 -353
  90. data/lib/assets/javascripts/unpoly/form.coffee.erb +0 -1084
  91. data/lib/assets/javascripts/unpoly/fragment.coffee.erb +0 -928
  92. data/lib/assets/javascripts/unpoly/framework.coffee +0 -65
  93. data/lib/assets/javascripts/unpoly/history.coffee +0 -268
  94. data/lib/assets/javascripts/unpoly/legacy.coffee +0 -60
  95. data/lib/assets/javascripts/unpoly/link.coffee.erb +0 -622
  96. data/lib/assets/javascripts/unpoly/log.coffee +0 -253
  97. data/lib/assets/javascripts/unpoly/modal.coffee.erb +0 -827
  98. data/lib/assets/javascripts/unpoly/motion.coffee.erb +0 -668
  99. data/lib/assets/javascripts/unpoly/namespace.coffee.erb +0 -5
  100. data/lib/assets/javascripts/unpoly/popup.coffee.erb +0 -515
  101. data/lib/assets/javascripts/unpoly/protocol.coffee +0 -300
  102. data/lib/assets/javascripts/unpoly/proxy.coffee +0 -672
  103. data/lib/assets/javascripts/unpoly/radio.coffee +0 -60
  104. data/lib/assets/javascripts/unpoly/rails.coffee +0 -24
  105. data/lib/assets/javascripts/unpoly/syntax.coffee.erb +0 -476
  106. data/lib/assets/javascripts/unpoly/toast.coffee +0 -67
  107. data/lib/assets/javascripts/unpoly/tooltip.coffee +0 -276
  108. data/lib/assets/javascripts/unpoly/util.coffee.erb +0 -1677
  109. data/lib/assets/javascripts/unpoly/viewport.coffee.erb +0 -830
  110. data/lib/assets/javascripts/unpoly-bootstrap3/feedback-ext.coffee +0 -5
  111. data/lib/assets/javascripts/unpoly-bootstrap3/form-ext.coffee +0 -1
  112. data/lib/assets/javascripts/unpoly-bootstrap3/modal-ext.coffee +0 -14
  113. data/lib/assets/javascripts/unpoly-bootstrap3/viewport-ext.coffee +0 -5
  114. data/lib/assets/javascripts/unpoly-bootstrap3.coffee +0 -2
  115. data/lib/assets/javascripts/unpoly.coffee +0 -28
  116. data/lib/assets/stylesheets/unpoly/close.sass +0 -2
  117. data/lib/assets/stylesheets/unpoly/dom.sass +0 -5
  118. data/lib/assets/stylesheets/unpoly/layout.sass +0 -2
  119. data/lib/assets/stylesheets/unpoly/link.sass +0 -2
  120. data/lib/assets/stylesheets/unpoly/modal.sass +0 -116
  121. data/lib/assets/stylesheets/unpoly/popup.sass +0 -7
  122. data/lib/assets/stylesheets/unpoly/toast.sass +0 -33
  123. data/lib/assets/stylesheets/unpoly/tooltip.sass +0 -62
  124. data/lib/assets/stylesheets/unpoly-bootstrap3/modal-ext.sass +0 -27
  125. data/lib/assets/stylesheets/unpoly-bootstrap3.sass +0 -1
  126. data/lib/assets/stylesheets/unpoly.sass +0 -1
  127. data/lib/unpoly/rails/inspector.rb +0 -149
  128. data/lib/unpoly/rails/inspector_accessor.rb +0 -30
  129. data/package.json +0 -38
  130. data/spec_app/.firefox-version +0 -1
  131. data/spec_app/.gitignore +0 -17
  132. data/spec_app/.rspec +0 -2
  133. data/spec_app/Gemfile +0 -29
  134. data/spec_app/Gemfile.lock +0 -223
  135. data/spec_app/README.rdoc +0 -28
  136. data/spec_app/Rakefile +0 -6
  137. data/spec_app/app/assets/images/.keep +0 -0
  138. data/spec_app/app/assets/images/favicon.png +0 -0
  139. data/spec_app/app/assets/images/grid.png +0 -0
  140. data/spec_app/app/assets/javascripts/bootstrap_manifest.coffee +0 -6
  141. data/spec_app/app/assets/javascripts/integration_test.coffee +0 -5
  142. data/spec_app/app/assets/javascripts/jasmine_specs.coffee +0 -6
  143. data/spec_app/app/assets/stylesheets/_helpers.sass +0 -5
  144. data/spec_app/app/assets/stylesheets/bootstrap_manifest.sass +0 -2
  145. data/spec_app/app/assets/stylesheets/integration_test.sass +0 -88
  146. data/spec_app/app/assets/stylesheets/jasmine_specs.sass +0 -20
  147. data/spec_app/app/controllers/application_controller.rb +0 -14
  148. data/spec_app/app/controllers/binding_test_controller.rb +0 -51
  149. data/spec_app/app/controllers/boot_test_controller.rb +0 -31
  150. data/spec_app/app/controllers/compiler_test_controller.rb +0 -5
  151. data/spec_app/app/controllers/css_test_controller.rb +0 -5
  152. data/spec_app/app/controllers/error_test_controller.rb +0 -5
  153. data/spec_app/app/controllers/form_test/basics_controller.rb +0 -14
  154. data/spec_app/app/controllers/form_test/redirects_controller.rb +0 -17
  155. data/spec_app/app/controllers/form_test/uploads_controller.rb +0 -15
  156. data/spec_app/app/controllers/hash_test_controller.rb +0 -5
  157. data/spec_app/app/controllers/method_test_controller.rb +0 -16
  158. data/spec_app/app/controllers/motion_test_controller.rb +0 -5
  159. data/spec_app/app/controllers/pages_controller.rb +0 -17
  160. data/spec_app/app/controllers/replace_test_controller.rb +0 -5
  161. data/spec_app/app/controllers/reveal_test_controller.rb +0 -5
  162. data/spec_app/app/controllers/scroll_test_controller.rb +0 -5
  163. data/spec_app/app/helpers/application_helper.rb +0 -11
  164. data/spec_app/app/mailers/.keep +0 -0
  165. data/spec_app/app/models/concerns/.keep +0 -0
  166. data/spec_app/app/views/boot_test/defer.erb +0 -18
  167. data/spec_app/app/views/boot_test/module.erb +0 -18
  168. data/spec_app/app/views/boot_test/sync.erb +0 -17
  169. data/spec_app/app/views/compiler_test/timestamp.erb +0 -10
  170. data/spec_app/app/views/css_test/modal.erb +0 -47
  171. data/spec_app/app/views/css_test/modal_contents.erb +0 -5
  172. data/spec_app/app/views/css_test/modal_contents_wide.erb +0 -5
  173. data/spec_app/app/views/css_test/popup.erb +0 -81
  174. data/spec_app/app/views/css_test/popup_contents.erb +0 -5
  175. data/spec_app/app/views/css_test/tooltip.erb +0 -48
  176. data/spec_app/app/views/error_test/trigger.erb +0 -80
  177. data/spec_app/app/views/error_test/unexpected_response.erb +0 -3
  178. data/spec_app/app/views/form_test/basics/new.erb +0 -60
  179. data/spec_app/app/views/form_test/redirects/new.erb +0 -27
  180. data/spec_app/app/views/form_test/redirects/target.erb +0 -6
  181. data/spec_app/app/views/form_test/submission_result.erb +0 -30
  182. data/spec_app/app/views/form_test/uploads/new.erb +0 -44
  183. data/spec_app/app/views/hash_test/unpoly.erb +0 -30
  184. data/spec_app/app/views/hash_test/vanilla.erb +0 -13
  185. data/spec_app/app/views/layouts/integration_test.erb +0 -22
  186. data/spec_app/app/views/layouts/jasmine_rails/spec_runner.html.erb +0 -20
  187. data/spec_app/app/views/method_test/form_target.erb +0 -17
  188. data/spec_app/app/views/method_test/page1.erb +0 -11
  189. data/spec_app/app/views/method_test/page2.erb +0 -6
  190. data/spec_app/app/views/motion_test/animations.erb +0 -16
  191. data/spec_app/app/views/motion_test/transitions.erb +0 -13
  192. data/spec_app/app/views/pages/start.erb +0 -82
  193. data/spec_app/app/views/replace_test/_nav.erb +0 -6
  194. data/spec_app/app/views/replace_test/page1.erb +0 -14
  195. data/spec_app/app/views/replace_test/page2.erb +0 -14
  196. data/spec_app/app/views/replace_test/table.erb +0 -16
  197. data/spec_app/app/views/reveal_test/long1.erb +0 -17
  198. data/spec_app/app/views/reveal_test/long2.erb +0 -17
  199. data/spec_app/app/views/reveal_test/within_document_viewport.erb +0 -24
  200. data/spec_app/app/views/reveal_test/within_overflowing_div_viewport.erb +0 -28
  201. data/spec_app/app/views/scroll_test/long1.erb +0 -30
  202. data/spec_app/bin/bundle +0 -3
  203. data/spec_app/bin/rails +0 -8
  204. data/spec_app/bin/rake +0 -8
  205. data/spec_app/bin/setup +0 -29
  206. data/spec_app/bin/spring +0 -18
  207. data/spec_app/config/application.rb +0 -28
  208. data/spec_app/config/boot.rb +0 -3
  209. data/spec_app/config/database.yml +0 -25
  210. data/spec_app/config/environment.rb +0 -5
  211. data/spec_app/config/environments/development.rb +0 -41
  212. data/spec_app/config/environments/production.rb +0 -79
  213. data/spec_app/config/environments/test.rb +0 -42
  214. data/spec_app/config/initializers/assets.rb +0 -19
  215. data/spec_app/config/initializers/backtrace_silencers.rb +0 -7
  216. data/spec_app/config/initializers/bower_rails.rb +0 -16
  217. data/spec_app/config/initializers/cookies_serializer.rb +0 -3
  218. data/spec_app/config/initializers/filter_parameter_logging.rb +0 -4
  219. data/spec_app/config/initializers/inflections.rb +0 -16
  220. data/spec_app/config/initializers/mime_types.rb +0 -4
  221. data/spec_app/config/initializers/session_store.rb +0 -3
  222. data/spec_app/config/initializers/wrap_parameters.rb +0 -14
  223. data/spec_app/config/locales/en.yml +0 -23
  224. data/spec_app/config/routes.rb +0 -33
  225. data/spec_app/config/secrets.yml +0 -22
  226. data/spec_app/config.ru +0 -4
  227. data/spec_app/db/schema.rb +0 -23
  228. data/spec_app/db/seeds.rb +0 -7
  229. data/spec_app/lib/assets/.keep +0 -0
  230. data/spec_app/lib/tasks/.keep +0 -0
  231. data/spec_app/lib/tasks/cucumber.rake +0 -65
  232. data/spec_app/log/.keep +0 -0
  233. data/spec_app/public/404.html +0 -67
  234. data/spec_app/public/422.html +0 -67
  235. data/spec_app/public/500.html +0 -66
  236. data/spec_app/public/favicon.ico +0 -0
  237. data/spec_app/public/robots.txt +0 -5
  238. data/spec_app/script/cucumber +0 -10
  239. data/spec_app/spec/controllers/binding_test_controller_spec.rb +0 -248
  240. data/spec_app/spec/javascripts/helpers/agent_detector.coffee +0 -20
  241. data/spec_app/spec/javascripts/helpers/async_sequence.js.coffee +0 -103
  242. data/spec_app/spec/javascripts/helpers/browser_switches.js.coffee +0 -21
  243. data/spec_app/spec/javascripts/helpers/enable_logging.js.coffee +0 -2
  244. data/spec_app/spec/javascripts/helpers/fixture.js.coffee +0 -25
  245. data/spec_app/spec/javascripts/helpers/index.js.coffee +0 -1
  246. data/spec_app/spec/javascripts/helpers/jquery_no_conflict.js +0 -1
  247. data/spec_app/spec/javascripts/helpers/knife.js.coffee +0 -69
  248. data/spec_app/spec/javascripts/helpers/last_request.js.coffee +0 -25
  249. data/spec_app/spec/javascripts/helpers/mock_ajax.js.coffee +0 -8
  250. data/spec_app/spec/javascripts/helpers/mock_clock.js.coffee +0 -2
  251. data/spec_app/spec/javascripts/helpers/parse_form_data.js.coffee +0 -24
  252. data/spec_app/spec/javascripts/helpers/promise_state.js +0 -18
  253. data/spec_app/spec/javascripts/helpers/protect_jasmine_runner.coffee +0 -12
  254. data/spec_app/spec/javascripts/helpers/remove_body_margin.js.coffee +0 -8
  255. data/spec_app/spec/javascripts/helpers/reset_history.js.coffee +0 -23
  256. data/spec_app/spec/javascripts/helpers/reset_knife.js.coffee +0 -2
  257. data/spec_app/spec/javascripts/helpers/reset_up.js.coffee +0 -25
  258. data/spec_app/spec/javascripts/helpers/restore_body_scroll.js.coffee +0 -5
  259. data/spec_app/spec/javascripts/helpers/show_lib_versions.coffee +0 -12
  260. data/spec_app/spec/javascripts/helpers/spec_util.coffee +0 -47
  261. data/spec_app/spec/javascripts/helpers/to_be_around.js.coffee +0 -8
  262. data/spec_app/spec/javascripts/helpers/to_be_array.coffee +0 -5
  263. data/spec_app/spec/javascripts/helpers/to_be_attached.coffee +0 -9
  264. data/spec_app/spec/javascripts/helpers/to_be_blank.js.coffee +0 -8
  265. data/spec_app/spec/javascripts/helpers/to_be_detached.coffee +0 -9
  266. data/spec_app/spec/javascripts/helpers/to_be_element.js.coffee +0 -8
  267. data/spec_app/spec/javascripts/helpers/to_be_error.coffee +0 -8
  268. data/spec_app/spec/javascripts/helpers/to_be_given.js.coffee +0 -8
  269. data/spec_app/spec/javascripts/helpers/to_be_hidden.js.coffee +0 -8
  270. data/spec_app/spec/javascripts/helpers/to_be_jquery.js.coffee +0 -5
  271. data/spec_app/spec/javascripts/helpers/to_be_missing.js.coffee +0 -8
  272. data/spec_app/spec/javascripts/helpers/to_be_present.js.coffee +0 -8
  273. data/spec_app/spec/javascripts/helpers/to_be_scrolled_to.coffee +0 -11
  274. data/spec_app/spec/javascripts/helpers/to_be_visible.js.coffee +0 -9
  275. data/spec_app/spec/javascripts/helpers/to_contain.js.coffee +0 -8
  276. data/spec_app/spec/javascripts/helpers/to_end_with.js.coffee +0 -11
  277. data/spec_app/spec/javascripts/helpers/to_equal_jquery.js.coffee +0 -8
  278. data/spec_app/spec/javascripts/helpers/to_equal_node_list.coffee +0 -7
  279. data/spec_app/spec/javascripts/helpers/to_equal_via_is_equal.js.coffee +0 -7
  280. data/spec_app/spec/javascripts/helpers/to_have_class.js.coffee +0 -10
  281. data/spec_app/spec/javascripts/helpers/to_have_descendant.js.coffee +0 -10
  282. data/spec_app/spec/javascripts/helpers/to_have_length.js.coffee +0 -8
  283. data/spec_app/spec/javascripts/helpers/to_have_opacity.coffee +0 -15
  284. data/spec_app/spec/javascripts/helpers/to_have_own_property.js.coffee +0 -8
  285. data/spec_app/spec/javascripts/helpers/to_have_request_method.js.coffee +0 -16
  286. data/spec_app/spec/javascripts/helpers/to_have_text.js.coffee +0 -9
  287. data/spec_app/spec/javascripts/helpers/to_have_unhandled_rejections.coffee +0 -18
  288. data/spec_app/spec/javascripts/helpers/to_match_list.coffee +0 -14
  289. data/spec_app/spec/javascripts/helpers/to_match_selector.coffee +0 -8
  290. data/spec_app/spec/javascripts/helpers/to_match_text.js.coffee +0 -13
  291. data/spec_app/spec/javascripts/helpers/to_match_url.coffee +0 -14
  292. data/spec_app/spec/javascripts/helpers/trigger.js.coffee +0 -200
  293. data/spec_app/spec/javascripts/helpers/wait_until_dom_ready.js.coffee +0 -5
  294. data/spec_app/spec/javascripts/support/jasmine.yml +0 -51
  295. data/spec_app/spec/javascripts/up/browser_spec.js.coffee +0 -150
  296. data/spec_app/spec/javascripts/up/classes/cache_spec.js.coffee +0 -82
  297. data/spec_app/spec/javascripts/up/classes/config_spec.coffee +0 -24
  298. data/spec_app/spec/javascripts/up/classes/divertible_chain_spec.coffee +0 -45
  299. data/spec_app/spec/javascripts/up/classes/focus_tracker_spec.coffee +0 -34
  300. data/spec_app/spec/javascripts/up/classes/params_spec.coffee +0 -557
  301. data/spec_app/spec/javascripts/up/classes/request_spec.coffee +0 -50
  302. data/spec_app/spec/javascripts/up/classes/scroll_motion_spec.js.coffee +0 -51
  303. data/spec_app/spec/javascripts/up/classes/store/memory_spec.js.coffee +0 -70
  304. data/spec_app/spec/javascripts/up/classes/store/session_spec.js.coffee +0 -114
  305. data/spec_app/spec/javascripts/up/element_spec.coffee +0 -897
  306. data/spec_app/spec/javascripts/up/event_spec.js.coffee +0 -530
  307. data/spec_app/spec/javascripts/up/feedback_spec.js.coffee +0 -401
  308. data/spec_app/spec/javascripts/up/form_spec.js.coffee +0 -1527
  309. data/spec_app/spec/javascripts/up/fragment_spec.js.coffee +0 -2624
  310. data/spec_app/spec/javascripts/up/history_spec.js.coffee +0 -340
  311. data/spec_app/spec/javascripts/up/jquery_spec.js.coffee +0 -4
  312. data/spec_app/spec/javascripts/up/legacy_spec.js.coffee +0 -27
  313. data/spec_app/spec/javascripts/up/link_spec.js.coffee +0 -1098
  314. data/spec_app/spec/javascripts/up/log_spec.js.coffee +0 -119
  315. data/spec_app/spec/javascripts/up/modal_spec.js.coffee +0 -939
  316. data/spec_app/spec/javascripts/up/motion_spec.js.coffee +0 -582
  317. data/spec_app/spec/javascripts/up/popup_spec.js.coffee +0 -508
  318. data/spec_app/spec/javascripts/up/protocol_spec.js.coffee +0 -39
  319. data/spec_app/spec/javascripts/up/proxy_spec.js.coffee +0 -1145
  320. data/spec_app/spec/javascripts/up/radio_spec.js.coffee +0 -212
  321. data/spec_app/spec/javascripts/up/rails_spec.js.coffee +0 -118
  322. data/spec_app/spec/javascripts/up/spec_spec.js.coffee +0 -9
  323. data/spec_app/spec/javascripts/up/syntax_spec.js.coffee +0 -304
  324. data/spec_app/spec/javascripts/up/toast_spec.js.coffee +0 -37
  325. data/spec_app/spec/javascripts/up/tooltip_spec.js.coffee +0 -163
  326. data/spec_app/spec/javascripts/up/util_spec.js.coffee +0 -1434
  327. data/spec_app/spec/javascripts/up/viewport_spec.js.coffee +0 -655
  328. data/spec_app/spec/spec_helper.rb +0 -62
  329. data/spec_app/test/controllers/.keep +0 -0
  330. data/spec_app/test/fixtures/.keep +0 -0
  331. data/spec_app/test/helpers/.keep +0 -0
  332. data/spec_app/test/integration/.keep +0 -0
  333. data/spec_app/test/mailers/.keep +0 -0
  334. data/spec_app/test/models/.keep +0 -0
  335. data/spec_app/test/test_helper.rb +0 -10
  336. data/spec_app/vendor/asset-libs/es6-promise-4.1.6/es6-promise.auto.js +0 -1159
  337. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.bower.json +0 -43
  338. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.gitignore +0 -6
  339. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.npmignore +0 -10
  340. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.pairs +0 -6
  341. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.travis.yml +0 -56
  342. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/jasmine-ajax.js +0 -790
  343. data/spec_app/vendor/assets/.keep +0 -0
  344. data/unpoly-rails.gemspec +0 -24
@@ -1,248 +0,0 @@
1
- describe BindingTestController do
2
-
3
- describe '#up?' do
4
-
5
- it 'returns true if the request has an X-Up-Target header' do
6
- request.headers['X-Up-Target'] = 'body'
7
- get :is_up
8
- expect(response.body).to eq('true')
9
- end
10
-
11
- it 'returns false if the request has no X-Up-Target header' do
12
- get :is_up
13
- expect(response.body).to eq('false')
14
- end
15
-
16
- end
17
-
18
- describe '#up' do
19
-
20
- describe '#target' do
21
-
22
- it 'returns the CSS selector that Unpoly requested for a sucessful response' do
23
- request.headers['X-Up-Target'] = '.foo'
24
- get :up_target
25
- expect(response.body).to eq('.foo')
26
- end
27
-
28
- end
29
-
30
- describe '#fail_target' do
31
-
32
- it 'returns the CSS selector that Unpoly requested for an error response' do
33
- request.headers['X-Up-Target'] = '.foo'
34
- request.headers['X-Up-Fail-Target'] = '.bar'
35
- get :up_fail_target
36
- expect(response.body).to eq('.bar')
37
- end
38
-
39
- end
40
-
41
- shared_examples_for 'target query' do |opts|
42
-
43
- let(:header) { opts.fetch(:header) }
44
-
45
- let (:action) { opts.fetch(:action)}
46
-
47
- def set_header(value)
48
- request.headers[header] = value
49
- if header != 'X-Up-Target'
50
- # Make sure that it's considered a fragment update
51
- request.headers['X-Up-Target'] = '.other-selector'
52
- end
53
- end
54
-
55
- it 'returns true if the tested CSS selector is requested via Unpoly' do
56
- set_header '.foo'
57
- get action, tested_target: '.foo'
58
- expect(response.body).to eq('true')
59
- end
60
-
61
- it 'returns false if Unpoly is requesting another CSS selector' do
62
- set_header '.bar'
63
- get action, tested_target: '.foo'
64
- expect(response.body).to eq('false')
65
- end
66
-
67
- it 'returns true if the request is not an Unpoly request' do
68
- get action, tested_target: '.foo'
69
- expect(response.body).to eq('true')
70
- end
71
-
72
- it 'returns true if testing a custom selector, and Unpoly requests "body"' do
73
- set_header 'body'
74
- get action, tested_target: '.foo'
75
- expect(response.body).to eq('true')
76
- end
77
-
78
- it 'returns true if testing a custom selector, and Unpoly requests "html"' do
79
- set_header 'html'
80
- get action, tested_target: '.foo'
81
- expect(response.body).to eq('true')
82
- end
83
-
84
- it 'returns true if testing "body", and Unpoly requests "html"' do
85
- set_header 'html'
86
- get action, tested_target: 'body'
87
- expect(response.body).to eq('true')
88
- end
89
-
90
- it 'returns true if testing "head", and Unpoly requests "html"' do
91
- set_header 'html'
92
- get action, tested_target: 'head'
93
- expect(response.body).to eq('true')
94
- end
95
-
96
- it 'returns false if the tested CSS selector is "head" but Unpoly requests "body"' do
97
- set_header 'body'
98
- get action, tested_target: 'head'
99
- expect(response.body).to eq('false')
100
- end
101
-
102
- it 'returns false if the tested CSS selector is "title" but Unpoly requests "body"' do
103
- set_header 'body'
104
- get action, tested_target: 'title'
105
- expect(response.body).to eq('false')
106
- end
107
-
108
- it 'returns false if the tested CSS selector is "meta" but Unpoly requests "body"' do
109
- set_header 'body'
110
- get action, tested_target: 'meta'
111
- expect(response.body).to eq('false')
112
- end
113
-
114
- it 'returns true if the tested CSS selector is "head", and Unpoly requests "html"' do
115
- set_header 'html'
116
- get action, tested_target: 'head'
117
- expect(response.body).to eq('true')
118
- end
119
-
120
- it 'returns true if the tested CSS selector is "title", Unpoly requests "html"' do
121
- set_header 'html'
122
- get action, tested_target: 'title'
123
- expect(response.body).to eq('true')
124
- end
125
-
126
- it 'returns true if the tested CSS selector is "meta", and Unpoly requests "html"' do
127
- set_header 'html'
128
- get action, tested_target: 'meta'
129
- expect(response.body).to eq('true')
130
- end
131
-
132
- end
133
-
134
- describe '#target?' do
135
- it_behaves_like 'target query', action: :up_is_target, header: 'X-Up-Target'
136
- end
137
-
138
- describe '#fail_target?' do
139
- it_behaves_like 'target query', action: :up_is_fail_target, header: 'X-Up-Fail-Target'
140
- end
141
-
142
- describe '#any_target?' do
143
-
144
- before :each do
145
- request.headers['X-Up-Target'] = '.success'
146
- request.headers['X-Up-Fail-Target'] = '.failure'
147
- end
148
-
149
- it 'returns true if the tested CSS selector is the target for a successful response' do
150
- get :up_is_any_target, tested_target: '.success'
151
- expect(response.body).to eq('true')
152
- end
153
-
154
- it 'returns true if the tested CSS selector is the target for a failed response' do
155
- get :up_is_any_target, tested_target: '.failure'
156
- expect(response.body).to eq('true')
157
- end
158
-
159
- it 'returns false if the tested CSS selector is a target for neither successful nor failed response' do
160
- get :up_is_any_target, tested_target: '.other'
161
- expect(response.body).to eq('false')
162
- end
163
-
164
- end
165
-
166
- describe '#validate?' do
167
-
168
- it 'returns true the request is an Unpoly validation call' do
169
- request.headers['X-Up-Validate'] = 'user[email]'
170
- get :is_up_validate
171
- expect(response.body).to eq('true')
172
- end
173
-
174
- it 'returns false if the request is not an Unpoly validation call' do
175
- get :is_up_validate
176
- expect(response.body).to eq('false')
177
- end
178
-
179
- end
180
-
181
- describe '#validate_name' do
182
-
183
- it 'returns the name of the field that is being validated' do
184
- request.headers['X-Up-Validate'] = 'user[email]'
185
- get :up_validate_name
186
- expect(response.body).to eq('user[email]')
187
- end
188
-
189
- end
190
-
191
- describe '#title=' do
192
-
193
- it 'sets an X-Up-Title header to push a document title to the client' do
194
- get :set_up_title
195
- expect(response.headers['X-Up-Title']).to eq('Pushed document title')
196
- end
197
-
198
- end
199
-
200
- end
201
-
202
- describe 'request method cookie' do
203
-
204
- describe 'if the request is both non-GET and not a fragment update' do
205
-
206
- it 'echoes the request method in an _up_method cookie ' do
207
- put :text
208
- expect(response.cookies['_up_method']).to eq('PUT')
209
- end
210
-
211
- end
212
-
213
- describe 'if the request is not a fragment update, but GET' do
214
-
215
- it 'does not set the cookie' do
216
- get :text
217
- expect(response.cookies['_up_method']).to be_nil
218
- end
219
-
220
- it 'deletes an existing cookie' do
221
- request.cookies['_up_method'] = 'PUT'
222
- get :text
223
- expect(response.cookies['_up_method']).to be_nil
224
- end
225
-
226
- end
227
-
228
- describe 'if the request is non-GET but a fragment update' do
229
-
230
- it 'does not set the cookie' do
231
- request.headers['X-Up-Target'] = '.target'
232
- put :text
233
- expect(response.cookies['_up_method']).to be_nil
234
- end
235
-
236
- it 'deletes an existing cookie' do
237
- request.cookies['_up_method'] = 'PUT'
238
- request.headers['X-Up-Target'] = '.target'
239
- put :text
240
- expect(response.cookies['_up_method']).to be_nil
241
- end
242
-
243
- end
244
-
245
-
246
- end
247
-
248
- end
@@ -1,20 +0,0 @@
1
- u = up.util
2
- $ = jQuery
3
-
4
- @AgentDetector = do ->
5
-
6
- match = (regexp) ->
7
- navigator.userAgent.match(regexp)
8
-
9
- isIE = ->
10
- match(/\bTrident\b/)
11
-
12
- isEdge = ->
13
- match(/\bEdge\b/)
14
-
15
- isSafari = ->
16
- match(/\bSafari\b/) && !match(/\bChrome\b/)
17
-
18
- isIE: isIE
19
- isEdge: isEdge
20
- isSafari: isSafari
@@ -1,103 +0,0 @@
1
- u = up.util
2
- $ = jQuery
3
-
4
- LOG_ENABLED = false
5
-
6
- unstubbedSetTimeout = window.setTimeout
7
-
8
- window.asyncSpec = (args...) ->
9
- (originalDone) ->
10
-
11
- done = ->
12
- # For some reason Jasmine ignores done() calls if its own clock is stubbed
13
- jasmine.clock().uninstall()
14
- originalDone()
15
-
16
- fail = (args...) ->
17
- # For some reason Jasmine ignores done() calls if its own clock is stubbed
18
- jasmine.clock().uninstall()
19
- originalDone.fail(args...)
20
-
21
- plan = args.pop()
22
-
23
- queue = []
24
-
25
- insertCursor = 0
26
-
27
- log = (args...) ->
28
- if LOG_ENABLED
29
- args[0] = "[asyncSpec] #{args[0]}"
30
- up.log.debug(args...)
31
-
32
- insertAtCursor = (task) ->
33
- log('Inserting task at index %d: %o', insertCursor, task)
34
- # We insert at pointer instead of pushing to the end.
35
- # This way tasks can insert additional tasks at runtime.
36
- queue.splice(insertCursor, 0, task)
37
- insertCursor++
38
-
39
- next = (block) ->
40
- insertAtCursor [0, block, 'sync']
41
-
42
- next.next = next # alternative API
43
-
44
- next.after = (delay, block) ->
45
- insertAtCursor [delay, block, 'sync']
46
-
47
- next.await = (block) ->
48
- insertAtCursor [0, block, 'async']
49
-
50
- next.fail = fail
51
-
52
- # Call example body
53
- plan.call(this, next)
54
-
55
- runBlockSyncAndPoke = (block) ->
56
- try
57
- log('runBlockSync')
58
- block()
59
- pokeQueue()
60
- catch e
61
- fail(e)
62
- throw e
63
-
64
- runBlockAsyncThenPoke = (blockOrPromise) ->
65
- log('runBlockAsync')
66
- # On plan-level people will usually pass a function returning a promise.
67
- # During runtime people will usually pass a promise to delay the next step.
68
- promise = if u.isPromise(blockOrPromise) then blockOrPromise else blockOrPromise()
69
- promise.then -> pokeQueue()
70
- promise.catch (e) -> fail(e)
71
-
72
- pokeQueue = ->
73
- if entry = queue[runtimeCursor]
74
- log('Playing task at index %d', runtimeCursor)
75
- runtimeCursor++
76
- insertCursor++
77
-
78
- timing = entry[0]
79
- block = entry[1]
80
- callStyle = entry[2]
81
-
82
- log('Task is %s after %d ms: %o', callStyle, timing, block)
83
-
84
- switch timing
85
- when 'now'
86
- runBlockSyncAndPoke(block)
87
- else
88
- fun = ->
89
- # Move the block behind the microtask queue of that frame
90
- Promise.resolve().then ->
91
- if callStyle == 'sync'
92
- runBlockSyncAndPoke(block)
93
- else # async
94
- runBlockAsyncThenPoke(block)
95
-
96
- # Also move to the next frame
97
- unstubbedSetTimeout(fun, timing)
98
- else
99
- log('calling done()')
100
- done()
101
-
102
- runtimeCursor = insertCursor = 0
103
- pokeQueue()
@@ -1,21 +0,0 @@
1
- u = up.util
2
- $ = jQuery
3
-
4
- window.describeCapability = (capabilities, examples) ->
5
- capabilities = u.wrapList(capabilities)
6
- allSupported = u.every capabilities, (c) ->
7
- if fn = up.browser[c]
8
- fn()
9
- else
10
- u.fail("Unknown capability: up.browser.#{c}()")
11
- up.browser[c]()
12
- if allSupported
13
- examples()
14
-
15
- window.describeFallback = (capabilities, examples) ->
16
- capabilities = u.wrapList(capabilities)
17
- describe "(in a browser without #{capabilities.join(', ')})", ->
18
- beforeEach ->
19
- u.each capabilities, (c) ->
20
- spyOn(up.browser, c).and.returnValue(false)
21
- examples()
@@ -1,2 +0,0 @@
1
- beforeEach ->
2
- up.log.disable()
@@ -1,25 +0,0 @@
1
- e = up.element
2
- $ = jQuery
3
-
4
- fixturesContainer = undefined
5
-
6
- ensureContainerExists = ->
7
- fixturesContainer ||= e.affix(document.body, '.fixtures')
8
-
9
- afterEach ->
10
- if fixturesContainer
11
- e.remove(fixturesContainer)
12
- fixturesContainer = undefined
13
-
14
- appendFixture = (args...) ->
15
- container = ensureContainerExists()
16
- e.affix(container, args...)
17
-
18
- $appendFixture = (args...) ->
19
- $(appendFixture(args...))
20
-
21
- window.fixture = appendFixture
22
- window.$fixture = $appendFixture
23
-
24
- # A lot of legacy tests require this jQuery function
25
- $.fn.affix = (args...) -> $(e.affix(this[0], args...))
@@ -1 +0,0 @@
1
- #= require_tree .
@@ -1 +0,0 @@
1
- jQuery.noConflict();
@@ -1,69 +0,0 @@
1
- ##
2
- # Knife: Get, set or mock inaccessible variables in a JavaScript closure
3
- # ======================================================================
4
- #
5
- # Requires [Jasmine](http://jasmine.github.io/) 2+.
6
- #
7
- # Usage:
8
- #
9
- # klass = (->
10
- #
11
- # privateVariable = 0
12
- #
13
- # privateMethod = ->
14
- # privateVariable += 1
15
- #
16
- # publicMethod = ->
17
- # privateMethod()
18
- #
19
- # add: add
20
- # knife: eval(Knife.point)
21
- #
22
- # )()
23
- #
24
- # klass.knife.get('privateVariable') => 0
25
- # klass.knife.set('privateCounter', 5)
26
- # klass.knife.get('privateCounter') => 5
27
- # spy = klass.knife.mock('privateMethod').and.returnValue("mocked!")
28
- # klass.publicMethod() # => 'mocked!'
29
- # expect(spy).toHaveBeenCalled()
30
- #
31
- window.Knife = (->
32
-
33
- contextBleeder = ->
34
-
35
- get = (symbol) ->
36
- eval(symbol)
37
-
38
- set = (symbol, value) ->
39
- eval("#{symbol} = value")
40
-
41
- mock = (symbol) ->
42
- oldImpl = get(symbol)
43
- spy = jasmine.createSpy(symbol, oldImpl)
44
- set(symbol, spy)
45
- cleaner = -> set(symbol, oldImpl)
46
- Knife.cleaners.push(cleaner)
47
- spy
48
-
49
- get: get
50
- set: set
51
- mock: mock
52
-
53
- reset = ->
54
- cleaner() while cleaner = Knife.cleaners.pop()
55
-
56
- me = {}
57
- me.reset = reset
58
- me.cleaners = []
59
-
60
- if jasmine?
61
- me.point = "(#{contextBleeder.toString()})()"
62
- # Jasmine defines afterEach on window
63
- afterEach reset
64
- else
65
- me.point = "undefined"
66
-
67
- me
68
-
69
- )()
@@ -1,25 +0,0 @@
1
- u = up.util
2
- $ = jQuery
3
-
4
- beforeEach ->
5
- @lastRequest = ->
6
- jasmine.Ajax.requests.mostRecent() or u.fail('There is no last request')
7
-
8
- @respondWith = (args...) ->
9
- firstArg = args.shift()
10
- responseText = undefined
11
- options = undefined
12
- if u.isString(firstArg)
13
- responseText = firstArg
14
- options = args[0] || {}
15
- else
16
- options = firstArg
17
- responseText = options.responseText || 'response-text'
18
- request = options.request || @lastRequest()
19
- request.respondWith
20
- status: options.status || 200
21
- contentType: options.contentType || 'text/html'
22
- responseHeaders: options.responseHeaders
23
- responseText: responseText
24
- responseURL: options.responseURL
25
-
@@ -1,8 +0,0 @@
1
- beforeEach ->
2
- jasmine.Ajax.install()
3
-
4
- afterEach (done) ->
5
- up.util.task ->
6
- jasmine.Ajax.uninstall()
7
- done()
8
-
@@ -1,2 +0,0 @@
1
- afterEach ->
2
- jasmine.clock().uninstall()
@@ -1,24 +0,0 @@
1
- beforeEach ->
2
-
3
- jasmine.Ajax.addCustomParamParser
4
- test: (xhr) ->
5
- up.util.isFormData(xhr.params)
6
-
7
- parse: (params) ->
8
- if up.browser.canInspectFormData()
9
- array = new up.Params(params).toArray()
10
- else if params.originalArray
11
- # In browser that don't support FormData#entries(),
12
- # up.Params#toArray() stores the original array with the generated
13
- # FormData object.
14
- array = params.originalArray
15
- else
16
- throw "Cannot parse FormData for inspection in tests"
17
-
18
- obj = {}
19
-
20
- for entry in array
21
- obj[entry.name] ||= []
22
- obj[entry.name].push(entry.value)
23
-
24
- obj
@@ -1,18 +0,0 @@
1
- function promiseState(promise) {
2
- var uniqueValue = window['Symbol'] ? Symbol('unique') : Math.random().toString(36)
3
-
4
- function notifyPendingOrResolved(value) {
5
- if (value === uniqueValue) {
6
- return Promise.resolve({ state: 'pending' })
7
- } else {
8
- return Promise.resolve({ state: 'fulfilled', value: value })
9
- }
10
- }
11
-
12
- function notifyRejected(reason) {
13
- return Promise.resolve({ state: 'rejected', value: reason })
14
- }
15
-
16
- var race = [promise, Promise.resolve(uniqueValue)]
17
- return Promise.race(race).then(notifyPendingOrResolved, notifyRejected)
18
- }
@@ -1,12 +0,0 @@
1
- u = up.util
2
- $ = jQuery
3
-
4
- beforeEach ->
5
- up.fragment.config.fallbacks = ['.default-fallback']
6
- up.history.config.popTargets = ['.default-fallback']
7
- $element = $('<div class="default-fallback"></div>')
8
- $element.appendTo(document.body)
9
-
10
- afterEach ->
11
- up.destroy('.default-fallback', log: false)
12
-
@@ -1,8 +0,0 @@
1
- u = up.util
2
- $ = jQuery
3
-
4
- # We have a lot of specs that measure the distance of elements
5
- # from the screen edge, so we can't have the Jasmine runner to have
6
- # any margins on the body.
7
- beforeEach ->
8
- $('body').css('margin-top': 0)
@@ -1,23 +0,0 @@
1
- u = up.util
2
- $ = jQuery
3
-
4
- replaceStateHelperCount = 0
5
-
6
- beforeAll ->
7
- @hrefBeforeSuite = location.href
8
- @titleBeforeSuite = document.title
9
-
10
- afterAll (done) ->
11
- up.util.task =>
12
- history.replaceState?({ fromResetPathHelper: true }, '', @hrefBeforeSuite)
13
- document.title = @titleBeforeSuite
14
- done()
15
-
16
- beforeEach ->
17
- # Webkit ignores replaceState() calls after 100 calls / 30 sec.
18
- # So specs need to explicitely activate history handling.
19
- up.history.config.enabled = false
20
-
21
- # Store original URL and title so we can restore it in afterEach.
22
- @hrefBeforeExample = location.href
23
- @titleBeforeExample = document.title
@@ -1,2 +0,0 @@
1
- afterEach ->
2
- Knife.reset()
@@ -1,25 +0,0 @@
1
- u = up.util
2
- $ = jQuery
3
-
4
- afterEach (done) ->
5
- # If the spec has installed the Jasmine clock, uninstall it so
6
- # the timeout below will actually happen.
7
- jasmine.clock().uninstall()
8
-
9
- # Most pending promises will wait for an animation to finish.
10
- promise = up.motion.finish()
11
-
12
- u.always promise, ->
13
-
14
- # Wait one more frame so pending callbacks have a chance to run.
15
- # Pending callbacks might change the URL or cause errors that bleed into
16
- # the next example.
17
- up.util.task =>
18
- up.framework.reset()
19
- up.browser.popCookie(up.protocol.config.methodCookie)
20
-
21
- # Give async reset behavior another frame to play out,
22
- # then start the next example.
23
- up.util.task ->
24
- $('.up-toast').remove()
25
- done()
@@ -1,5 +0,0 @@
1
- u = up.util
2
- $ = jQuery
3
-
4
- afterEach ->
5
- $('body').scrollTop(0)
@@ -1,12 +0,0 @@
1
- u = up.util
2
- $ = jQuery
3
-
4
- showVersions = ->
5
- $('.jasmine-version').text """
6
- jQuery #{$.fn.jquery}
7
- Jasmine #{jasmine.version}
8
- """
9
-
10
- $ ->
11
- # Give Jasmine time to initialize
12
- setTimeout(showVersions, 0)