discourse-ember-source 3.5.1.1 → 3.5.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (741) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ember/version.rb +1 -1
  3. metadata +2 -740
  4. data/.gitignore +0 -9
  5. data/.travis.yml +0 -5
  6. data/Gemfile +0 -6
  7. data/LICENSE.txt +0 -21
  8. data/README +0 -18
  9. data/README.md +0 -39
  10. data/Rakefile +0 -27
  11. data/bin/console +0 -14
  12. data/bin/setup +0 -8
  13. data/discourse-ember-source-3.5.1.0.gem +0 -0
  14. data/dist/ember-all.debug.map +0 -1
  15. data/dist/ember-template-compiler.map +0 -1
  16. data/dist/ember-testing.map +0 -1
  17. data/dist/ember-tests.map +0 -1
  18. data/dist/ember-tests.prod.map +0 -1
  19. data/dist/ember.debug.map +0 -1
  20. data/dist/ember.min.map +0 -1
  21. data/dist/ember.prod.map +0 -1
  22. data/dist/es/@ember/application/globals-resolver.js +0 -425
  23. data/dist/es/@ember/application/index.js +0 -3
  24. data/dist/es/@ember/application/instance.js +0 -513
  25. data/dist/es/@ember/application/lib/application.js +0 -1139
  26. data/dist/es/@ember/application/lib/lazy_load.js +0 -69
  27. data/dist/es/@ember/application/lib/validate-type.js +0 -24
  28. data/dist/es/@ember/application/tests/application_instance_test.js +0 -230
  29. data/dist/es/@ember/application/tests/application_test.js +0 -470
  30. data/dist/es/@ember/application/tests/bootstrap-test.js +0 -28
  31. data/dist/es/@ember/application/tests/dependency_injection/custom_resolver_test.js +0 -32
  32. data/dist/es/@ember/application/tests/dependency_injection/default_resolver_test.js +0 -363
  33. data/dist/es/@ember/application/tests/dependency_injection/normalization_test.js +0 -70
  34. data/dist/es/@ember/application/tests/dependency_injection/to_string_test.js +0 -71
  35. data/dist/es/@ember/application/tests/dependency_injection_test.js +0 -93
  36. data/dist/es/@ember/application/tests/initializers_test.js +0 -391
  37. data/dist/es/@ember/application/tests/instance_initializers_test.js +0 -395
  38. data/dist/es/@ember/application/tests/lazy_load_test.js +0 -79
  39. data/dist/es/@ember/application/tests/logging_test.js +0 -179
  40. data/dist/es/@ember/application/tests/readiness_test.js +0 -138
  41. data/dist/es/@ember/application/tests/reset_test.js +0 -185
  42. data/dist/es/@ember/application/tests/visit_test.js +0 -783
  43. data/dist/es/@ember/canary-features/index.js +0 -76
  44. data/dist/es/@ember/controller/index.js +0 -50
  45. data/dist/es/@ember/controller/lib/controller_mixin.js +0 -42
  46. data/dist/es/@ember/controller/tests/controller_test.js +0 -209
  47. data/dist/es/@ember/debug/index.js +0 -264
  48. data/dist/es/@ember/debug/lib/deprecate.js +0 -198
  49. data/dist/es/@ember/debug/lib/handlers.js +0 -22
  50. data/dist/es/@ember/debug/lib/testing.js +0 -7
  51. data/dist/es/@ember/debug/lib/warn.js +0 -107
  52. data/dist/es/@ember/debug/tests/handlers-test.js +0 -144
  53. data/dist/es/@ember/debug/tests/main_test.js +0 -444
  54. data/dist/es/@ember/deprecated-features/index.js +0 -21
  55. data/dist/es/@ember/engine/index.js +0 -532
  56. data/dist/es/@ember/engine/instance.js +0 -228
  57. data/dist/es/@ember/engine/lib/engine-parent.js +0 -32
  58. data/dist/es/@ember/engine/tests/engine_initializers_test.js +0 -366
  59. data/dist/es/@ember/engine/tests/engine_instance_initializers_test.js +0 -409
  60. data/dist/es/@ember/engine/tests/engine_instance_test.js +0 -115
  61. data/dist/es/@ember/engine/tests/engine_parent_test.js +0 -20
  62. data/dist/es/@ember/engine/tests/engine_test.js +0 -121
  63. data/dist/es/@ember/error/index.js +0 -36
  64. data/dist/es/@ember/error/tests/index_test.js +0 -19
  65. data/dist/es/@ember/instrumentation/index.js +0 -240
  66. data/dist/es/@ember/instrumentation/tests/index-test.js +0 -214
  67. data/dist/es/@ember/map/index.js +0 -218
  68. data/dist/es/@ember/map/lib/ordered-set.js +0 -186
  69. data/dist/es/@ember/map/lib/utils.js +0 -29
  70. data/dist/es/@ember/map/tests/map_test.js +0 -578
  71. data/dist/es/@ember/map/with-default.js +0 -87
  72. data/dist/es/@ember/object/computed.js +0 -35
  73. data/dist/es/@ember/object/lib/computed/computed_macros.js +0 -742
  74. data/dist/es/@ember/object/lib/computed/reduce_computed_macros.js +0 -894
  75. data/dist/es/@ember/object/tests/computed/computed_macros_test.js +0 -533
  76. data/dist/es/@ember/object/tests/computed/reduce_computed_macros_test.js +0 -2243
  77. data/dist/es/@ember/polyfills/index.js +0 -3
  78. data/dist/es/@ember/polyfills/lib/assign.js +0 -43
  79. data/dist/es/@ember/polyfills/lib/merge.js +0 -35
  80. data/dist/es/@ember/polyfills/tests/assign_test.js +0 -64
  81. data/dist/es/@ember/runloop/index.js +0 -749
  82. data/dist/es/@ember/runloop/tests/debounce_test.js +0 -87
  83. data/dist/es/@ember/runloop/tests/later_test.js +0 -264
  84. data/dist/es/@ember/runloop/tests/next_test.js +0 -56
  85. data/dist/es/@ember/runloop/tests/once_test.js +0 -62
  86. data/dist/es/@ember/runloop/tests/onerror_test.js +0 -59
  87. data/dist/es/@ember/runloop/tests/run_bind_test.js +0 -59
  88. data/dist/es/@ember/runloop/tests/run_test.js +0 -28
  89. data/dist/es/@ember/runloop/tests/schedule_test.js +0 -86
  90. data/dist/es/@ember/runloop/tests/sync_test.js +0 -32
  91. data/dist/es/@ember/runloop/tests/unwind_test.js +0 -54
  92. data/dist/es/@ember/service/index.js +0 -57
  93. data/dist/es/@ember/string/index.js +0 -362
  94. data/dist/es/@ember/string/lib/string_registry.js +0 -13
  95. data/dist/es/@ember/string/tests/camelize_test.js +0 -53
  96. data/dist/es/@ember/string/tests/capitalize_test.js +0 -58
  97. data/dist/es/@ember/string/tests/classify_test.js +0 -79
  98. data/dist/es/@ember/string/tests/dasherize_test.js +0 -57
  99. data/dist/es/@ember/string/tests/decamelize_test.js +0 -51
  100. data/dist/es/@ember/string/tests/loc_test.js +0 -76
  101. data/dist/es/@ember/string/tests/underscore_test.js +0 -51
  102. data/dist/es/@ember/string/tests/w_test.js +0 -39
  103. data/dist/es/@glimmer/compiler.js +0 -1226
  104. data/dist/es/@glimmer/encoder.js +0 -39
  105. data/dist/es/@glimmer/low-level.js +0 -82
  106. data/dist/es/@glimmer/node.js +0 -112
  107. data/dist/es/@glimmer/opcode-compiler.js +0 -1999
  108. data/dist/es/@glimmer/program.js +0 -405
  109. data/dist/es/@glimmer/reference.js +0 -478
  110. data/dist/es/@glimmer/runtime.js +0 -4086
  111. data/dist/es/@glimmer/syntax.js +0 -1424
  112. data/dist/es/@glimmer/util.js +0 -189
  113. data/dist/es/@glimmer/vm.js +0 -27
  114. data/dist/es/@glimmer/wire-format.js +0 -56
  115. data/dist/es/backburner.js +0 -936
  116. data/dist/es/container/index.js +0 -8
  117. data/dist/es/container/lib/container.js +0 -437
  118. data/dist/es/container/lib/registry.js +0 -646
  119. data/dist/es/container/tests/container_test.js +0 -872
  120. data/dist/es/container/tests/owner_test.js +0 -20
  121. data/dist/es/container/tests/registry_test.js +0 -943
  122. data/dist/es/dag-map.js +0 -209
  123. data/dist/es/ember-browser-environment/index.js +0 -8
  124. data/dist/es/ember-browser-environment/lib/has-dom.js +0 -19
  125. data/dist/es/ember-console/index.js +0 -177
  126. data/dist/es/ember-environment/index.js +0 -3
  127. data/dist/es/ember-environment/lib/context.js +0 -20
  128. data/dist/es/ember-environment/lib/env.js +0 -185
  129. data/dist/es/ember-environment/lib/global.js +0 -14
  130. data/dist/es/ember-error-handling/index.js +0 -22
  131. data/dist/es/ember-extension-support/index.js +0 -2
  132. data/dist/es/ember-extension-support/lib/container_debug_adapter.js +0 -99
  133. data/dist/es/ember-extension-support/lib/data_adapter.js +0 -493
  134. data/dist/es/ember-extension-support/tests/container_debug_adapter_test.js +0 -73
  135. data/dist/es/ember-extension-support/tests/data_adapter_test.js +0 -301
  136. data/dist/es/ember-glimmer/index.js +0 -286
  137. data/dist/es/ember-glimmer/lib/compile-time-lookup.js +0 -37
  138. data/dist/es/ember-glimmer/lib/component-managers/abstract.js +0 -49
  139. data/dist/es/ember-glimmer/lib/component-managers/curly.js +0 -395
  140. data/dist/es/ember-glimmer/lib/component-managers/custom.js +0 -145
  141. data/dist/es/ember-glimmer/lib/component-managers/definition-state.js +0 -1
  142. data/dist/es/ember-glimmer/lib/component-managers/mount.js +0 -103
  143. data/dist/es/ember-glimmer/lib/component-managers/outlet.js +0 -114
  144. data/dist/es/ember-glimmer/lib/component-managers/render.js +0 -112
  145. data/dist/es/ember-glimmer/lib/component-managers/root.js +0 -74
  146. data/dist/es/ember-glimmer/lib/component-managers/template-only.js +0 -46
  147. data/dist/es/ember-glimmer/lib/component.js +0 -633
  148. data/dist/es/ember-glimmer/lib/components/checkbox.js +0 -57
  149. data/dist/es/ember-glimmer/lib/components/link-to.js +0 -777
  150. data/dist/es/ember-glimmer/lib/components/text_area.js +0 -236
  151. data/dist/es/ember-glimmer/lib/components/text_field.js +0 -145
  152. data/dist/es/ember-glimmer/lib/dom.js +0 -3
  153. data/dist/es/ember-glimmer/lib/environment.js +0 -102
  154. data/dist/es/ember-glimmer/lib/helper.js +0 -128
  155. data/dist/es/ember-glimmer/lib/helpers/-class.js +0 -23
  156. data/dist/es/ember-glimmer/lib/helpers/-html-safe.js +0 -9
  157. data/dist/es/ember-glimmer/lib/helpers/-input-type.js +0 -11
  158. data/dist/es/ember-glimmer/lib/helpers/-normalize-class.js +0 -22
  159. data/dist/es/ember-glimmer/lib/helpers/action.js +0 -360
  160. data/dist/es/ember-glimmer/lib/helpers/component.js +0 -135
  161. data/dist/es/ember-glimmer/lib/helpers/concat.js +0 -38
  162. data/dist/es/ember-glimmer/lib/helpers/each-in.js +0 -126
  163. data/dist/es/ember-glimmer/lib/helpers/get.js +0 -100
  164. data/dist/es/ember-glimmer/lib/helpers/hash.js +0 -44
  165. data/dist/es/ember-glimmer/lib/helpers/if-unless.js +0 -142
  166. data/dist/es/ember-glimmer/lib/helpers/loc.js +0 -40
  167. data/dist/es/ember-glimmer/lib/helpers/log.js +0 -25
  168. data/dist/es/ember-glimmer/lib/helpers/mut.js +0 -107
  169. data/dist/es/ember-glimmer/lib/helpers/query-param.js +0 -31
  170. data/dist/es/ember-glimmer/lib/helpers/readonly.js +0 -104
  171. data/dist/es/ember-glimmer/lib/helpers/unbound.js +0 -36
  172. data/dist/es/ember-glimmer/lib/modifiers/action.js +0 -185
  173. data/dist/es/ember-glimmer/lib/protocol-for-url.js +0 -48
  174. data/dist/es/ember-glimmer/lib/renderer.js +0 -371
  175. data/dist/es/ember-glimmer/lib/resolver.js +0 -290
  176. data/dist/es/ember-glimmer/lib/setup-registry.js +0 -77
  177. data/dist/es/ember-glimmer/lib/syntax.js +0 -73
  178. data/dist/es/ember-glimmer/lib/syntax/-text-area.js +0 -8
  179. data/dist/es/ember-glimmer/lib/syntax/input.js +0 -173
  180. data/dist/es/ember-glimmer/lib/syntax/let.js +0 -50
  181. data/dist/es/ember-glimmer/lib/syntax/mount.js +0 -101
  182. data/dist/es/ember-glimmer/lib/syntax/outlet.js +0 -120
  183. data/dist/es/ember-glimmer/lib/syntax/render.js +0 -140
  184. data/dist/es/ember-glimmer/lib/syntax/utils.js +0 -6
  185. data/dist/es/ember-glimmer/lib/template-compiler.js +0 -7
  186. data/dist/es/ember-glimmer/lib/template.js +0 -16
  187. data/dist/es/ember-glimmer/lib/template_registry.js +0 -18
  188. data/dist/es/ember-glimmer/lib/templates/component.js +0 -2
  189. data/dist/es/ember-glimmer/lib/templates/empty.js +0 -2
  190. data/dist/es/ember-glimmer/lib/templates/link-to.js +0 -2
  191. data/dist/es/ember-glimmer/lib/templates/outlet.js +0 -2
  192. data/dist/es/ember-glimmer/lib/templates/root.js +0 -2
  193. data/dist/es/ember-glimmer/lib/utils/bindings.js +0 -180
  194. data/dist/es/ember-glimmer/lib/utils/curly-component-state-bucket.js +0 -36
  195. data/dist/es/ember-glimmer/lib/utils/custom-component-manager.js +0 -20
  196. data/dist/es/ember-glimmer/lib/utils/debug-stack.js +0 -57
  197. data/dist/es/ember-glimmer/lib/utils/iterable.js +0 -358
  198. data/dist/es/ember-glimmer/lib/utils/outlet.js +0 -89
  199. data/dist/es/ember-glimmer/lib/utils/process-args.js +0 -40
  200. data/dist/es/ember-glimmer/lib/utils/references.js +0 -325
  201. data/dist/es/ember-glimmer/lib/utils/serialization-first-node-helpers.js +0 -1
  202. data/dist/es/ember-glimmer/lib/utils/string.js +0 -98
  203. data/dist/es/ember-glimmer/lib/utils/to-bool.js +0 -9
  204. data/dist/es/ember-glimmer/lib/views/outlet.js +0 -71
  205. data/dist/es/ember-glimmer/tests/integration/application/actions-test.js +0 -107
  206. data/dist/es/ember-glimmer/tests/integration/application/engine-test.js +0 -912
  207. data/dist/es/ember-glimmer/tests/integration/application/rendering-test.js +0 -530
  208. data/dist/es/ember-glimmer/tests/integration/components/angle-bracket-invocation-test.js +0 -852
  209. data/dist/es/ember-glimmer/tests/integration/components/append-test.js +0 -742
  210. data/dist/es/ember-glimmer/tests/integration/components/attribute-bindings-test.js +0 -999
  211. data/dist/es/ember-glimmer/tests/integration/components/attrs-lookup-test.js +0 -268
  212. data/dist/es/ember-glimmer/tests/integration/components/class-bindings-test.js +0 -849
  213. data/dist/es/ember-glimmer/tests/integration/components/contextual-components-test.js +0 -1493
  214. data/dist/es/ember-glimmer/tests/integration/components/curly-components-test.js +0 -3705
  215. data/dist/es/ember-glimmer/tests/integration/components/destroy-test.js +0 -33
  216. data/dist/es/ember-glimmer/tests/integration/components/dynamic-components-test.js +0 -896
  217. data/dist/es/ember-glimmer/tests/integration/components/error-handling-test.js +0 -164
  218. data/dist/es/ember-glimmer/tests/integration/components/fragment-components-test.js +0 -285
  219. data/dist/es/ember-glimmer/tests/integration/components/instrumentation-compile-test.js +0 -108
  220. data/dist/es/ember-glimmer/tests/integration/components/instrumentation-test.js +0 -157
  221. data/dist/es/ember-glimmer/tests/integration/components/life-cycle-test.js +0 -1653
  222. data/dist/es/ember-glimmer/tests/integration/components/link-to-test.js +0 -218
  223. data/dist/es/ember-glimmer/tests/integration/components/local-lookup-test.js +0 -414
  224. data/dist/es/ember-glimmer/tests/integration/components/namespaced-lookup-test.js +0 -185
  225. data/dist/es/ember-glimmer/tests/integration/components/render-to-element-test.js +0 -0
  226. data/dist/es/ember-glimmer/tests/integration/components/target-action-test.js +0 -779
  227. data/dist/es/ember-glimmer/tests/integration/components/template-only-components-test.js +0 -225
  228. data/dist/es/ember-glimmer/tests/integration/components/to-string-test.js +0 -27
  229. data/dist/es/ember-glimmer/tests/integration/components/utils-test.js +0 -401
  230. data/dist/es/ember-glimmer/tests/integration/components/web-component-fallback-test.js +0 -35
  231. data/dist/es/ember-glimmer/tests/integration/components/will-destroy-element-hook-test.js +0 -40
  232. data/dist/es/ember-glimmer/tests/integration/content-test.js +0 -1759
  233. data/dist/es/ember-glimmer/tests/integration/custom-component-manager-test.js +0 -508
  234. data/dist/es/ember-glimmer/tests/integration/event-dispatcher-test.js +0 -607
  235. data/dist/es/ember-glimmer/tests/integration/helpers/-class-test.js +0 -76
  236. data/dist/es/ember-glimmer/tests/integration/helpers/closure-action-test.js +0 -1240
  237. data/dist/es/ember-glimmer/tests/integration/helpers/concat-test.js +0 -106
  238. data/dist/es/ember-glimmer/tests/integration/helpers/custom-helper-test.js +0 -672
  239. data/dist/es/ember-glimmer/tests/integration/helpers/element-action-test.js +0 -1595
  240. data/dist/es/ember-glimmer/tests/integration/helpers/get-test.js +0 -618
  241. data/dist/es/ember-glimmer/tests/integration/helpers/hash-test.js +0 -188
  242. data/dist/es/ember-glimmer/tests/integration/helpers/if-unless-test.js +0 -149
  243. data/dist/es/ember-glimmer/tests/integration/helpers/input-test.js +0 -827
  244. data/dist/es/ember-glimmer/tests/integration/helpers/loc-test.js +0 -103
  245. data/dist/es/ember-glimmer/tests/integration/helpers/log-test.js +0 -61
  246. data/dist/es/ember-glimmer/tests/integration/helpers/mut-test.js +0 -580
  247. data/dist/es/ember-glimmer/tests/integration/helpers/partial-test.js +0 -386
  248. data/dist/es/ember-glimmer/tests/integration/helpers/readonly-test.js +0 -293
  249. data/dist/es/ember-glimmer/tests/integration/helpers/render-test.js +0 -522
  250. data/dist/es/ember-glimmer/tests/integration/helpers/text-area-test.js +0 -166
  251. data/dist/es/ember-glimmer/tests/integration/helpers/unbound-test.js +0 -650
  252. data/dist/es/ember-glimmer/tests/integration/helpers/yield-test.js +0 -275
  253. data/dist/es/ember-glimmer/tests/integration/input-test.js +0 -242
  254. data/dist/es/ember-glimmer/tests/integration/mount-test.js +0 -424
  255. data/dist/es/ember-glimmer/tests/integration/outlet-test.js +0 -318
  256. data/dist/es/ember-glimmer/tests/integration/refinements-test.js +0 -74
  257. data/dist/es/ember-glimmer/tests/integration/render-settled-test.js +0 -72
  258. data/dist/es/ember-glimmer/tests/integration/svg-test.js +0 -158
  259. data/dist/es/ember-glimmer/tests/integration/syntax/each-in-test.js +0 -697
  260. data/dist/es/ember-glimmer/tests/integration/syntax/each-test.js +0 -1251
  261. data/dist/es/ember-glimmer/tests/integration/syntax/experimental-syntax-test.js +0 -42
  262. data/dist/es/ember-glimmer/tests/integration/syntax/if-unless-test.js +0 -108
  263. data/dist/es/ember-glimmer/tests/integration/syntax/in-element-test.js +0 -119
  264. data/dist/es/ember-glimmer/tests/integration/syntax/let-test.js +0 -390
  265. data/dist/es/ember-glimmer/tests/integration/syntax/with-dynamic-var-test.js +0 -36
  266. data/dist/es/ember-glimmer/tests/integration/syntax/with-test.js +0 -422
  267. data/dist/es/ember-glimmer/tests/unit/outlet-test.js +0 -48
  268. data/dist/es/ember-glimmer/tests/unit/runtime-resolver-cache-test.js +0 -263
  269. data/dist/es/ember-glimmer/tests/unit/template-factory-test.js +0 -67
  270. data/dist/es/ember-glimmer/tests/unit/utils/debug-stack-test.js +0 -38
  271. data/dist/es/ember-glimmer/tests/utils/abstract-test-case.js +0 -1
  272. data/dist/es/ember-glimmer/tests/utils/helpers.js +0 -15
  273. data/dist/es/ember-glimmer/tests/utils/shared-conditional-tests.js +0 -965
  274. data/dist/es/ember-glimmer/tests/utils/string-test.js +0 -47
  275. data/dist/es/ember-glimmer/tests/utils/test-case.js +0 -6
  276. data/dist/es/ember-glimmer/tests/utils/test-helpers.js +0 -1
  277. data/dist/es/ember-meta/index.js +0 -1
  278. data/dist/es/ember-meta/lib/meta.js +0 -623
  279. data/dist/es/ember-meta/tests/meta_test.js +0 -169
  280. data/dist/es/ember-metal/index.js +0 -33
  281. data/dist/es/ember-metal/lib/alias.js +0 -80
  282. data/dist/es/ember-metal/lib/array.js +0 -55
  283. data/dist/es/ember-metal/lib/array_events.js +0 -65
  284. data/dist/es/ember-metal/lib/chains.js +0 -315
  285. data/dist/es/ember-metal/lib/change_event.js +0 -4
  286. data/dist/es/ember-metal/lib/computed.js +0 -526
  287. data/dist/es/ember-metal/lib/computed_cache.js +0 -58
  288. data/dist/es/ember-metal/lib/dependent_keys.js +0 -34
  289. data/dist/es/ember-metal/lib/deprecate_property.js +0 -34
  290. data/dist/es/ember-metal/lib/descriptor.js +0 -28
  291. data/dist/es/ember-metal/lib/each_proxy.js +0 -106
  292. data/dist/es/ember-metal/lib/each_proxy_events.js +0 -13
  293. data/dist/es/ember-metal/lib/events.js +0 -174
  294. data/dist/es/ember-metal/lib/expand_properties.js +0 -64
  295. data/dist/es/ember-metal/lib/get_properties.js +0 -45
  296. data/dist/es/ember-metal/lib/injected_property.js +0 -53
  297. data/dist/es/ember-metal/lib/is_blank.js +0 -34
  298. data/dist/es/ember-metal/lib/is_empty.js +0 -63
  299. data/dist/es/ember-metal/lib/is_none.js +0 -27
  300. data/dist/es/ember-metal/lib/is_present.js +0 -38
  301. data/dist/es/ember-metal/lib/libraries.js +0 -80
  302. data/dist/es/ember-metal/lib/mixin.js +0 -646
  303. data/dist/es/ember-metal/lib/namespace_search.js +0 -166
  304. data/dist/es/ember-metal/lib/observer.js +0 -34
  305. data/dist/es/ember-metal/lib/observer_set.js +0 -48
  306. data/dist/es/ember-metal/lib/path_cache.js +0 -5
  307. data/dist/es/ember-metal/lib/properties.js +0 -192
  308. data/dist/es/ember-metal/lib/property_events.js +0 -198
  309. data/dist/es/ember-metal/lib/property_get.js +0 -160
  310. data/dist/es/ember-metal/lib/property_set.js +0 -157
  311. data/dist/es/ember-metal/lib/set_properties.js +0 -43
  312. data/dist/es/ember-metal/lib/tags.js +0 -81
  313. data/dist/es/ember-metal/lib/tracked.js +0 -201
  314. data/dist/es/ember-metal/lib/transaction.js +0 -137
  315. data/dist/es/ember-metal/lib/watch_key.js +0 -113
  316. data/dist/es/ember-metal/lib/watch_path.js +0 -24
  317. data/dist/es/ember-metal/lib/watching.js +0 -54
  318. data/dist/es/ember-metal/tests/accessors/get_path_test.js +0 -82
  319. data/dist/es/ember-metal/tests/accessors/get_properties_test.js +0 -36
  320. data/dist/es/ember-metal/tests/accessors/get_test.js +0 -335
  321. data/dist/es/ember-metal/tests/accessors/mandatory_setters_test.js +0 -470
  322. data/dist/es/ember-metal/tests/accessors/set_path_test.js +0 -97
  323. data/dist/es/ember-metal/tests/accessors/set_test.js +0 -128
  324. data/dist/es/ember-metal/tests/alias_test.js +0 -167
  325. data/dist/es/ember-metal/tests/chains_test.js +0 -210
  326. data/dist/es/ember-metal/tests/computed_test.js +0 -1040
  327. data/dist/es/ember-metal/tests/descriptor_test.js +0 -368
  328. data/dist/es/ember-metal/tests/events_test.js +0 -210
  329. data/dist/es/ember-metal/tests/expand_properties_test.js +0 -119
  330. data/dist/es/ember-metal/tests/injected_property_test.js +0 -76
  331. data/dist/es/ember-metal/tests/is_blank_test.js +0 -29
  332. data/dist/es/ember-metal/tests/is_empty_test.js +0 -55
  333. data/dist/es/ember-metal/tests/is_none_test.js +0 -23
  334. data/dist/es/ember-metal/tests/is_present_test.js +0 -30
  335. data/dist/es/ember-metal/tests/libraries_test.js +0 -99
  336. data/dist/es/ember-metal/tests/main_test.js +0 -31
  337. data/dist/es/ember-metal/tests/mixin/alias_method_test.js +0 -91
  338. data/dist/es/ember-metal/tests/mixin/apply_test.js +0 -40
  339. data/dist/es/ember-metal/tests/mixin/computed_test.js +0 -166
  340. data/dist/es/ember-metal/tests/mixin/concatenated_properties_test.js +0 -117
  341. data/dist/es/ember-metal/tests/mixin/detect_test.js +0 -40
  342. data/dist/es/ember-metal/tests/mixin/introspection_test.js +0 -75
  343. data/dist/es/ember-metal/tests/mixin/merged_properties_test.js +0 -200
  344. data/dist/es/ember-metal/tests/mixin/method_test.js +0 -252
  345. data/dist/es/ember-metal/tests/mixin/observer_test.js +0 -202
  346. data/dist/es/ember-metal/tests/mixin/reopen_test.js +0 -53
  347. data/dist/es/ember-metal/tests/mixin/without_test.js +0 -22
  348. data/dist/es/ember-metal/tests/namespace_search_test.js +0 -16
  349. data/dist/es/ember-metal/tests/observer_test.js +0 -961
  350. data/dist/es/ember-metal/tests/performance_test.js +0 -81
  351. data/dist/es/ember-metal/tests/properties_test.js +0 -120
  352. data/dist/es/ember-metal/tests/property_did_change_hook.js +0 -73
  353. data/dist/es/ember-metal/tests/set_properties_test.js +0 -49
  354. data/dist/es/ember-metal/tests/tracked/computed_test.js +0 -67
  355. data/dist/es/ember-metal/tests/tracked/get_test.js +0 -86
  356. data/dist/es/ember-metal/tests/tracked/set_test.js +0 -44
  357. data/dist/es/ember-metal/tests/tracked/support.js +0 -37
  358. data/dist/es/ember-metal/tests/tracked/validation_test.js +0 -233
  359. data/dist/es/ember-metal/tests/watching/is_watching_test.js +0 -97
  360. data/dist/es/ember-metal/tests/watching/unwatch_test.js +0 -109
  361. data/dist/es/ember-metal/tests/watching/watch_test.js +0 -255
  362. data/dist/es/ember-owner/index.js +0 -66
  363. data/dist/es/ember-routing/index.js +0 -21
  364. data/dist/es/ember-routing/lib/ext/controller.js +0 -222
  365. data/dist/es/ember-routing/lib/location/api.js +0 -118
  366. data/dist/es/ember-routing/lib/location/auto_location.js +0 -323
  367. data/dist/es/ember-routing/lib/location/hash_location.js +0 -171
  368. data/dist/es/ember-routing/lib/location/history_location.js +0 -298
  369. data/dist/es/ember-routing/lib/location/none_location.js +0 -122
  370. data/dist/es/ember-routing/lib/location/util.js +0 -114
  371. data/dist/es/ember-routing/lib/services/router.js +0 -243
  372. data/dist/es/ember-routing/lib/services/routing.js +0 -101
  373. data/dist/es/ember-routing/lib/system/cache.js +0 -40
  374. data/dist/es/ember-routing/lib/system/controller_for.js +0 -14
  375. data/dist/es/ember-routing/lib/system/dsl.js +0 -208
  376. data/dist/es/ember-routing/lib/system/generate_controller.js +0 -54
  377. data/dist/es/ember-routing/lib/system/query_params.js +0 -6
  378. data/dist/es/ember-routing/lib/system/route.js +0 -2476
  379. data/dist/es/ember-routing/lib/system/router.js +0 -1607
  380. data/dist/es/ember-routing/lib/system/router_state.js +0 -26
  381. data/dist/es/ember-routing/lib/system/transition.js +0 -153
  382. data/dist/es/ember-routing/lib/utils.js +0 -230
  383. data/dist/es/ember-routing/tests/ext/controller_test.js +0 -85
  384. data/dist/es/ember-routing/tests/location/auto_location_test.js +0 -379
  385. data/dist/es/ember-routing/tests/location/hash_location_test.js +0 -207
  386. data/dist/es/ember-routing/tests/location/history_location_test.js +0 -322
  387. data/dist/es/ember-routing/tests/location/none_location_test.js +0 -88
  388. data/dist/es/ember-routing/tests/location/util_test.js +0 -159
  389. data/dist/es/ember-routing/tests/system/cache_test.js +0 -54
  390. data/dist/es/ember-routing/tests/system/controller_for_test.js +0 -75
  391. data/dist/es/ember-routing/tests/system/dsl_test.js +0 -413
  392. data/dist/es/ember-routing/tests/system/route_test.js +0 -587
  393. data/dist/es/ember-routing/tests/system/router_test.js +0 -287
  394. data/dist/es/ember-routing/tests/utils_test.js +0 -37
  395. data/dist/es/ember-runtime/.gitignore +0 -1
  396. data/dist/es/ember-runtime/README +0 -12
  397. data/dist/es/ember-runtime/index.js +0 -35
  398. data/dist/es/ember-runtime/lib/compare.js +0 -149
  399. data/dist/es/ember-runtime/lib/copy.js +0 -106
  400. data/dist/es/ember-runtime/lib/ext/function.js +0 -154
  401. data/dist/es/ember-runtime/lib/ext/rsvp.js +0 -59
  402. data/dist/es/ember-runtime/lib/is-equal.js +0 -60
  403. data/dist/es/ember-runtime/lib/mixins/-proxy.js +0 -109
  404. data/dist/es/ember-runtime/lib/mixins/action_handler.js +0 -222
  405. data/dist/es/ember-runtime/lib/mixins/array.js +0 -1661
  406. data/dist/es/ember-runtime/lib/mixins/comparable.js +0 -38
  407. data/dist/es/ember-runtime/lib/mixins/container_proxy.js +0 -154
  408. data/dist/es/ember-runtime/lib/mixins/copyable.js +0 -34
  409. data/dist/es/ember-runtime/lib/mixins/enumerable.js +0 -16
  410. data/dist/es/ember-runtime/lib/mixins/evented.js +0 -149
  411. data/dist/es/ember-runtime/lib/mixins/mutable_enumerable.js +0 -18
  412. data/dist/es/ember-runtime/lib/mixins/observable.js +0 -482
  413. data/dist/es/ember-runtime/lib/mixins/promise_proxy.js +0 -224
  414. data/dist/es/ember-runtime/lib/mixins/registry_proxy.js +0 -265
  415. data/dist/es/ember-runtime/lib/mixins/target_action_support.js +0 -172
  416. data/dist/es/ember-runtime/lib/system/array_proxy.js +0 -298
  417. data/dist/es/ember-runtime/lib/system/core_object.js +0 -1037
  418. data/dist/es/ember-runtime/lib/system/namespace.js +0 -69
  419. data/dist/es/ember-runtime/lib/system/object.js +0 -73
  420. data/dist/es/ember-runtime/lib/system/object_proxy.js +0 -81
  421. data/dist/es/ember-runtime/lib/type-of.js +0 -107
  422. data/dist/es/ember-runtime/tests/array/any-test.js +0 -55
  423. data/dist/es/ember-runtime/tests/array/compact-test.js +0 -12
  424. data/dist/es/ember-runtime/tests/array/every-test.js +0 -82
  425. data/dist/es/ember-runtime/tests/array/filter-test.js +0 -123
  426. data/dist/es/ember-runtime/tests/array/find-test.js +0 -86
  427. data/dist/es/ember-runtime/tests/array/firstObject-test.js +0 -27
  428. data/dist/es/ember-runtime/tests/array/forEach-test.js +0 -68
  429. data/dist/es/ember-runtime/tests/array/includes-test.js +0 -46
  430. data/dist/es/ember-runtime/tests/array/indexOf-test.js +0 -27
  431. data/dist/es/ember-runtime/tests/array/invoke-test.js +0 -60
  432. data/dist/es/ember-runtime/tests/array/isAny-test.js +0 -53
  433. data/dist/es/ember-runtime/tests/array/lastIndexOf-test.js +0 -78
  434. data/dist/es/ember-runtime/tests/array/lastObject-test.js +0 -31
  435. data/dist/es/ember-runtime/tests/array/map-test.js +0 -68
  436. data/dist/es/ember-runtime/tests/array/mapBy-test.js +0 -16
  437. data/dist/es/ember-runtime/tests/array/objectAt-test.js +0 -34
  438. data/dist/es/ember-runtime/tests/array/reduce-test.js +0 -24
  439. data/dist/es/ember-runtime/tests/array/reject-test.js +0 -134
  440. data/dist/es/ember-runtime/tests/array/sortBy-test.js +0 -23
  441. data/dist/es/ember-runtime/tests/array/toArray-test.js +0 -11
  442. data/dist/es/ember-runtime/tests/array/uniq-test.js +0 -27
  443. data/dist/es/ember-runtime/tests/array/uniqBy-test.js +0 -33
  444. data/dist/es/ember-runtime/tests/array/without-test.js +0 -39
  445. data/dist/es/ember-runtime/tests/copyable-array/copy-test.js +0 -12
  446. data/dist/es/ember-runtime/tests/core/compare_test.js +0 -89
  447. data/dist/es/ember-runtime/tests/core/copy_test.js +0 -47
  448. data/dist/es/ember-runtime/tests/core/isEqual_test.js +0 -65
  449. data/dist/es/ember-runtime/tests/core/is_array_test.js +0 -59
  450. data/dist/es/ember-runtime/tests/core/is_empty_test.js +0 -15
  451. data/dist/es/ember-runtime/tests/core/type_of_test.js +0 -54
  452. data/dist/es/ember-runtime/tests/ext/function_test.js +0 -121
  453. data/dist/es/ember-runtime/tests/ext/rsvp_test.js +0 -269
  454. data/dist/es/ember-runtime/tests/helpers/array.js +0 -336
  455. data/dist/es/ember-runtime/tests/inject_test.js +0 -51
  456. data/dist/es/ember-runtime/tests/legacy_1x/mixins/observable/chained_test.js +0 -63
  457. data/dist/es/ember-runtime/tests/legacy_1x/mixins/observable/observable_test.js +0 -892
  458. data/dist/es/ember-runtime/tests/legacy_1x/mixins/observable/propertyChanges_test.js +0 -142
  459. data/dist/es/ember-runtime/tests/legacy_1x/system/object/base_test.js +0 -98
  460. data/dist/es/ember-runtime/tests/legacy_1x/system/object/concatenated_test.js +0 -131
  461. data/dist/es/ember-runtime/tests/mixins/array_test.js +0 -400
  462. data/dist/es/ember-runtime/tests/mixins/comparable_test.js +0 -37
  463. data/dist/es/ember-runtime/tests/mixins/container_proxy_test.js +0 -48
  464. data/dist/es/ember-runtime/tests/mixins/enumerable_test.js +0 -17
  465. data/dist/es/ember-runtime/tests/mixins/evented_test.js +0 -23
  466. data/dist/es/ember-runtime/tests/mixins/mutable_enumerable_test.js +0 -17
  467. data/dist/es/ember-runtime/tests/mixins/observable_test.js +0 -137
  468. data/dist/es/ember-runtime/tests/mixins/promise_proxy_test.js +0 -593
  469. data/dist/es/ember-runtime/tests/mixins/target_action_support_test.js +0 -237
  470. data/dist/es/ember-runtime/tests/mutable-array/addObject-test.js +0 -76
  471. data/dist/es/ember-runtime/tests/mutable-array/clear-test.js +0 -64
  472. data/dist/es/ember-runtime/tests/mutable-array/insertAt-test.js +0 -216
  473. data/dist/es/ember-runtime/tests/mutable-array/popObject-test.js +0 -91
  474. data/dist/es/ember-runtime/tests/mutable-array/pushObject-test.js +0 -98
  475. data/dist/es/ember-runtime/tests/mutable-array/pushObjects-test.js +0 -12
  476. data/dist/es/ember-runtime/tests/mutable-array/removeAt-test.js +0 -187
  477. data/dist/es/ember-runtime/tests/mutable-array/removeObject-test.js +0 -77
  478. data/dist/es/ember-runtime/tests/mutable-array/removeObjects-test.js +0 -202
  479. data/dist/es/ember-runtime/tests/mutable-array/replace-test.js +0 -221
  480. data/dist/es/ember-runtime/tests/mutable-array/reverseObjects-test.js +0 -35
  481. data/dist/es/ember-runtime/tests/mutable-array/setObjects-test.js +0 -63
  482. data/dist/es/ember-runtime/tests/mutable-array/shiftObject-test.js +0 -105
  483. data/dist/es/ember-runtime/tests/mutable-array/unshiftObject-test.js +0 -99
  484. data/dist/es/ember-runtime/tests/mutable-array/unshiftObjects-test.js +0 -102
  485. data/dist/es/ember-runtime/tests/system/array_proxy/arranged_content_test.js +0 -275
  486. data/dist/es/ember-runtime/tests/system/array_proxy/array_observer_test.js +0 -51
  487. data/dist/es/ember-runtime/tests/system/array_proxy/content_change_test.js +0 -85
  488. data/dist/es/ember-runtime/tests/system/array_proxy/length_test.js +0 -201
  489. data/dist/es/ember-runtime/tests/system/array_proxy/watching_and_listening_test.js +0 -157
  490. data/dist/es/ember-runtime/tests/system/core_object_test.js +0 -114
  491. data/dist/es/ember-runtime/tests/system/namespace/base_test.js +0 -175
  492. data/dist/es/ember-runtime/tests/system/native_array/a_test.js +0 -16
  493. data/dist/es/ember-runtime/tests/system/native_array/copyable_suite_test.js +0 -19
  494. data/dist/es/ember-runtime/tests/system/native_array/replace_test.js +0 -17
  495. data/dist/es/ember-runtime/tests/system/object/computed_test.js +0 -352
  496. data/dist/es/ember-runtime/tests/system/object/create_test.js +0 -135
  497. data/dist/es/ember-runtime/tests/system/object/destroy_test.js +0 -146
  498. data/dist/es/ember-runtime/tests/system/object/detectInstance_test.js +0 -38
  499. data/dist/es/ember-runtime/tests/system/object/detect_test.js +0 -33
  500. data/dist/es/ember-runtime/tests/system/object/es-compatibility-test.js +0 -469
  501. data/dist/es/ember-runtime/tests/system/object/events_test.js +0 -156
  502. data/dist/es/ember-runtime/tests/system/object/extend_test.js +0 -153
  503. data/dist/es/ember-runtime/tests/system/object/observer_test.js +0 -216
  504. data/dist/es/ember-runtime/tests/system/object/reopenClass_test.js +0 -36
  505. data/dist/es/ember-runtime/tests/system/object/reopen_test.js +0 -48
  506. data/dist/es/ember-runtime/tests/system/object/strict-mode-test.js +0 -31
  507. data/dist/es/ember-runtime/tests/system/object/toString_test.js +0 -125
  508. data/dist/es/ember-runtime/tests/system/object_proxy_test.js +0 -314
  509. data/dist/es/ember-template-compiler/index.js +0 -26
  510. data/dist/es/ember-template-compiler/lib/compat.js +0 -16
  511. data/dist/es/ember-template-compiler/lib/plugins/assert-if-helper-without-arguments.js +0 -38
  512. data/dist/es/ember-template-compiler/lib/plugins/assert-input-helper-without-block.js +0 -20
  513. data/dist/es/ember-template-compiler/lib/plugins/assert-reserved-named-arguments.js +0 -26
  514. data/dist/es/ember-template-compiler/lib/plugins/assert-splattribute-expression.js +0 -27
  515. data/dist/es/ember-template-compiler/lib/plugins/deprecate-render-model.js +0 -38
  516. data/dist/es/ember-template-compiler/lib/plugins/deprecate-render.js +0 -41
  517. data/dist/es/ember-template-compiler/lib/plugins/deprecate-send-action.js +0 -42
  518. data/dist/es/ember-template-compiler/lib/plugins/index.js +0 -50
  519. data/dist/es/ember-template-compiler/lib/plugins/transform-action-syntax.js +0 -52
  520. data/dist/es/ember-template-compiler/lib/plugins/transform-angle-bracket-components.js +0 -10
  521. data/dist/es/ember-template-compiler/lib/plugins/transform-attrs-into-args.js +0 -62
  522. data/dist/es/ember-template-compiler/lib/plugins/transform-dot-component-invocation.js +0 -88
  523. data/dist/es/ember-template-compiler/lib/plugins/transform-each-in-into-each.js +0 -48
  524. data/dist/es/ember-template-compiler/lib/plugins/transform-has-block-syntax.js +0 -46
  525. data/dist/es/ember-template-compiler/lib/plugins/transform-in-element.js +0 -83
  526. data/dist/es/ember-template-compiler/lib/plugins/transform-inline-link-to.js +0 -31
  527. data/dist/es/ember-template-compiler/lib/plugins/transform-input-type-syntax.js +0 -52
  528. data/dist/es/ember-template-compiler/lib/plugins/transform-old-binding-syntax.js +0 -48
  529. data/dist/es/ember-template-compiler/lib/plugins/transform-old-class-binding-syntax.js +0 -102
  530. data/dist/es/ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +0 -34
  531. data/dist/es/ember-template-compiler/lib/plugins/transform-top-level-components.js +0 -41
  532. data/dist/es/ember-template-compiler/lib/system/bootstrap.js +0 -44
  533. data/dist/es/ember-template-compiler/lib/system/calculate-location-display.js +0 -20
  534. data/dist/es/ember-template-compiler/lib/system/compile-options.js +0 -71
  535. data/dist/es/ember-template-compiler/lib/system/compile.js +0 -28
  536. data/dist/es/ember-template-compiler/lib/system/dasherize-component-name.js +0 -13
  537. data/dist/es/ember-template-compiler/lib/system/initializer.js +0 -22
  538. data/dist/es/ember-template-compiler/lib/system/precompile.js +0 -18
  539. data/dist/es/ember-template-compiler/tests/plugins/assert-if-helper-without-arguments-test.js +0 -51
  540. data/dist/es/ember-template-compiler/tests/plugins/assert-input-helper-without-block-test.js +0 -17
  541. data/dist/es/ember-template-compiler/tests/plugins/assert-reserved-named-arguments-test.js +0 -416
  542. data/dist/es/ember-template-compiler/tests/plugins/assert-splattribute-expression-test.js +0 -57
  543. data/dist/es/ember-template-compiler/tests/plugins/deprecate-render-model-test.js +0 -19
  544. data/dist/es/ember-template-compiler/tests/plugins/deprecate-render-test.js +0 -19
  545. data/dist/es/ember-template-compiler/tests/plugins/deprecate-send-action-test.js +0 -29
  546. data/dist/es/ember-template-compiler/tests/plugins/transform-dot-component-invocation-test.js +0 -27
  547. data/dist/es/ember-template-compiler/tests/plugins/transform-inline-link-to-test.js +0 -15
  548. data/dist/es/ember-template-compiler/tests/plugins/transform-input-type-syntax-test.js +0 -25
  549. data/dist/es/ember-template-compiler/tests/system/bootstrap-test.js +0 -155
  550. data/dist/es/ember-template-compiler/tests/system/compile_options_test.js +0 -115
  551. data/dist/es/ember-template-compiler/tests/system/dasherize-component-name-test.js +0 -19
  552. data/dist/es/ember-testing/index.js +0 -10
  553. data/dist/es/ember-testing/lib/adapters/adapter.js +0 -58
  554. data/dist/es/ember-testing/lib/adapters/qunit.js +0 -47
  555. data/dist/es/ember-testing/lib/events.js +0 -136
  556. data/dist/es/ember-testing/lib/ext/application.js +0 -191
  557. data/dist/es/ember-testing/lib/ext/rsvp.js +0 -19
  558. data/dist/es/ember-testing/lib/helpers.js +0 -30
  559. data/dist/es/ember-testing/lib/helpers/-is-form-control.js +0 -16
  560. data/dist/es/ember-testing/lib/helpers/and_then.js +0 -3
  561. data/dist/es/ember-testing/lib/helpers/click.js +0 -36
  562. data/dist/es/ember-testing/lib/helpers/current_path.js +0 -27
  563. data/dist/es/ember-testing/lib/helpers/current_route_name.js +0 -25
  564. data/dist/es/ember-testing/lib/helpers/current_url.js +0 -27
  565. data/dist/es/ember-testing/lib/helpers/fill_in.js +0 -46
  566. data/dist/es/ember-testing/lib/helpers/find.js +0 -41
  567. data/dist/es/ember-testing/lib/helpers/find_with_assert.js +0 -34
  568. data/dist/es/ember-testing/lib/helpers/key_event.js +0 -36
  569. data/dist/es/ember-testing/lib/helpers/pause_test.js +0 -65
  570. data/dist/es/ember-testing/lib/helpers/trigger_event.js +0 -62
  571. data/dist/es/ember-testing/lib/helpers/visit.js +0 -42
  572. data/dist/es/ember-testing/lib/helpers/wait.js +0 -72
  573. data/dist/es/ember-testing/lib/initializers.js +0 -17
  574. data/dist/es/ember-testing/lib/setup_for_testing.js +0 -44
  575. data/dist/es/ember-testing/lib/support.js +0 -62
  576. data/dist/es/ember-testing/lib/test.js +0 -70
  577. data/dist/es/ember-testing/lib/test/adapter.js +0 -33
  578. data/dist/es/ember-testing/lib/test/helpers.js +0 -125
  579. data/dist/es/ember-testing/lib/test/on_inject_helpers.js +0 -38
  580. data/dist/es/ember-testing/lib/test/pending_requests.js +0 -24
  581. data/dist/es/ember-testing/lib/test/promise.js +0 -79
  582. data/dist/es/ember-testing/lib/test/run.js +0 -9
  583. data/dist/es/ember-testing/lib/test/waiters.js +0 -117
  584. data/dist/es/ember-testing/tests/acceptance_test.js +0 -478
  585. data/dist/es/ember-testing/tests/adapters/adapter_test.js +0 -31
  586. data/dist/es/ember-testing/tests/adapters/qunit_test.js +0 -50
  587. data/dist/es/ember-testing/tests/adapters_test.js +0 -405
  588. data/dist/es/ember-testing/tests/ext/rsvp_test.js +0 -124
  589. data/dist/es/ember-testing/tests/helper_registration_test.js +0 -98
  590. data/dist/es/ember-testing/tests/helpers_test.js +0 -1228
  591. data/dist/es/ember-testing/tests/integration_test.js +0 -106
  592. data/dist/es/ember-testing/tests/reexports_test.js +0 -26
  593. data/dist/es/ember-testing/tests/test/waiters-test.js +0 -145
  594. data/dist/es/ember-utils/index.js +0 -28
  595. data/dist/es/ember-utils/lib/cache.js +0 -36
  596. data/dist/es/ember-utils/lib/dictionary.js +0 -11
  597. data/dist/es/ember-utils/lib/guid.js +0 -120
  598. data/dist/es/ember-utils/lib/inspect.js +0 -112
  599. data/dist/es/ember-utils/lib/intern.js +0 -49
  600. data/dist/es/ember-utils/lib/invoke.js +0 -53
  601. data/dist/es/ember-utils/lib/is_proxy.js +0 -14
  602. data/dist/es/ember-utils/lib/lookup-descriptor.js +0 -11
  603. data/dist/es/ember-utils/lib/make-array.js +0 -7
  604. data/dist/es/ember-utils/lib/name.js +0 -9
  605. data/dist/es/ember-utils/lib/proxy-utils.js +0 -1
  606. data/dist/es/ember-utils/lib/spec.js +0 -14
  607. data/dist/es/ember-utils/lib/super.js +0 -83
  608. data/dist/es/ember-utils/lib/symbol-utils.js +0 -8
  609. data/dist/es/ember-utils/lib/symbol.js +0 -15
  610. data/dist/es/ember-utils/lib/to-string.js +0 -35
  611. data/dist/es/ember-utils/lib/weak_set.js +0 -18
  612. data/dist/es/ember-utils/tests/cache_test.js +0 -77
  613. data/dist/es/ember-utils/tests/can_invoke_test.js +0 -46
  614. data/dist/es/ember-utils/tests/checkHasSuper_test.js +0 -17
  615. data/dist/es/ember-utils/tests/generate_guid_test.js +0 -13
  616. data/dist/es/ember-utils/tests/guid_for_test.js +0 -101
  617. data/dist/es/ember-utils/tests/inspect_test.js +0 -146
  618. data/dist/es/ember-utils/tests/is_proxy_test.js +0 -18
  619. data/dist/es/ember-utils/tests/make_array_test.js +0 -41
  620. data/dist/es/ember-utils/tests/to-string-test.js +0 -32
  621. data/dist/es/ember-utils/tests/try_invoke_test.js +0 -48
  622. data/dist/es/ember-views/index.js +0 -28
  623. data/dist/es/ember-views/lib/compat/attrs.js +0 -3
  624. data/dist/es/ember-views/lib/compat/fallback-view-registry.js +0 -3
  625. data/dist/es/ember-views/lib/component_lookup.js +0 -27
  626. data/dist/es/ember-views/lib/mixins/action_support.js +0 -189
  627. data/dist/es/ember-views/lib/mixins/child_views_support.js +0 -27
  628. data/dist/es/ember-views/lib/mixins/class_names_support.js +0 -102
  629. data/dist/es/ember-views/lib/mixins/text_support.js +0 -333
  630. data/dist/es/ember-views/lib/mixins/view_state_support.js +0 -19
  631. data/dist/es/ember-views/lib/mixins/view_support.js +0 -452
  632. data/dist/es/ember-views/lib/system/action_manager.js +0 -14
  633. data/dist/es/ember-views/lib/system/event_dispatcher.js +0 -454
  634. data/dist/es/ember-views/lib/system/jquery.js +0 -29
  635. data/dist/es/ember-views/lib/system/jquery_event_deprecation.js +0 -61
  636. data/dist/es/ember-views/lib/system/lookup_partial.js +0 -55
  637. data/dist/es/ember-views/lib/system/utils.js +0 -201
  638. data/dist/es/ember-views/lib/utils/lookup-component.js +0 -58
  639. data/dist/es/ember-views/lib/views/core_view.js +0 -83
  640. data/dist/es/ember-views/lib/views/states.js +0 -48
  641. data/dist/es/ember-views/lib/views/states/default.js +0 -17
  642. data/dist/es/ember-views/lib/views/states/destroying.js +0 -16
  643. data/dist/es/ember-views/lib/views/states/has_element.js +0 -31
  644. data/dist/es/ember-views/lib/views/states/in_dom.js +0 -28
  645. data/dist/es/ember-views/lib/views/states/pre_render.js +0 -3
  646. data/dist/es/ember/index.js +0 -645
  647. data/dist/es/ember/tests/application_lifecycle_test.js +0 -188
  648. data/dist/es/ember/tests/component_context_test.js +0 -255
  649. data/dist/es/ember/tests/component_registration_test.js +0 -252
  650. data/dist/es/ember/tests/controller_test.js +0 -44
  651. data/dist/es/ember/tests/error_handler_test.js +0 -581
  652. data/dist/es/ember/tests/helpers/helper_registration_test.js +0 -103
  653. data/dist/es/ember/tests/helpers/link_to_test.js +0 -2103
  654. data/dist/es/ember/tests/helpers/link_to_test/link_to_transitioning_classes_test.js +0 -342
  655. data/dist/es/ember/tests/helpers/link_to_test/link_to_with_query_params_test.js +0 -694
  656. data/dist/es/ember/tests/homepage_example_test.js +0 -47
  657. data/dist/es/ember/tests/integration/multiple-app-test.js +0 -101
  658. data/dist/es/ember/tests/production_build_test.js +0 -34
  659. data/dist/es/ember/tests/reexports_test.js +0 -307
  660. data/dist/es/ember/tests/routing/decoupled_basic_test.js +0 -4506
  661. data/dist/es/ember/tests/routing/query_params_test.js +0 -1579
  662. data/dist/es/ember/tests/routing/query_params_test/model_dependent_state_with_query_params_test.js +0 -1117
  663. data/dist/es/ember/tests/routing/query_params_test/overlapping_query_params_test.js +0 -185
  664. data/dist/es/ember/tests/routing/query_params_test/query_param_async_get_handler_test.js +0 -327
  665. data/dist/es/ember/tests/routing/query_params_test/query_params_paramless_link_to_test.js +0 -37
  666. data/dist/es/ember/tests/routing/query_params_test/shared_state_test.js +0 -84
  667. data/dist/es/ember/tests/routing/router_map_test.js +0 -46
  668. data/dist/es/ember/tests/routing/router_service_test/basic_test.js +0 -95
  669. data/dist/es/ember/tests/routing/router_service_test/currenturl_lifecycle_test.js +0 -149
  670. data/dist/es/ember/tests/routing/router_service_test/isActive_test.js +0 -113
  671. data/dist/es/ember/tests/routing/router_service_test/replaceWith_test.js +0 -144
  672. data/dist/es/ember/tests/routing/router_service_test/transitionTo_test.js +0 -370
  673. data/dist/es/ember/tests/routing/router_service_test/urlFor_test.js +0 -307
  674. data/dist/es/ember/tests/routing/substates_test.js +0 -1110
  675. data/dist/es/ember/tests/routing/toplevel_dom_test.js +0 -37
  676. data/dist/es/ember/tests/service_injection_test.js +0 -278
  677. data/dist/es/ember/tests/view_instrumentation_test.js +0 -47
  678. data/dist/es/ember/version.js +0 -1
  679. data/dist/es/handlebars.js +0 -1268
  680. data/dist/es/internal-test-helpers/index.js +0 -31
  681. data/dist/es/internal-test-helpers/lib/.gitkeep +0 -0
  682. data/dist/es/internal-test-helpers/lib/apply-mixins.js +0 -37
  683. data/dist/es/internal-test-helpers/lib/browser-detect.js +0 -4
  684. data/dist/es/internal-test-helpers/lib/build-owner.js +0 -49
  685. data/dist/es/internal-test-helpers/lib/confirm-export.js +0 -45
  686. data/dist/es/internal-test-helpers/lib/ember-dev/assertion.js +0 -87
  687. data/dist/es/internal-test-helpers/lib/ember-dev/containers.js +0 -34
  688. data/dist/es/internal-test-helpers/lib/ember-dev/debug.js +0 -47
  689. data/dist/es/internal-test-helpers/lib/ember-dev/deprecation.js +0 -71
  690. data/dist/es/internal-test-helpers/lib/ember-dev/index.js +0 -19
  691. data/dist/es/internal-test-helpers/lib/ember-dev/method-call-tracker.js +0 -127
  692. data/dist/es/internal-test-helpers/lib/ember-dev/namespaces.js +0 -34
  693. data/dist/es/internal-test-helpers/lib/ember-dev/run-loop.js +0 -28
  694. data/dist/es/internal-test-helpers/lib/ember-dev/setup-qunit.js +0 -26
  695. data/dist/es/internal-test-helpers/lib/ember-dev/utils.js +0 -33
  696. data/dist/es/internal-test-helpers/lib/ember-dev/warning.js +0 -71
  697. data/dist/es/internal-test-helpers/lib/equal-inner-html.js +0 -37
  698. data/dist/es/internal-test-helpers/lib/equal-tokens.js +0 -53
  699. data/dist/es/internal-test-helpers/lib/factory.js +0 -65
  700. data/dist/es/internal-test-helpers/lib/get-all-property-names.js +0 -12
  701. data/dist/es/internal-test-helpers/lib/get-text-of.js +0 -3
  702. data/dist/es/internal-test-helpers/lib/matchers.js +0 -167
  703. data/dist/es/internal-test-helpers/lib/module-for.js +0 -89
  704. data/dist/es/internal-test-helpers/lib/registry-check.js +0 -28
  705. data/dist/es/internal-test-helpers/lib/run.js +0 -11
  706. data/dist/es/internal-test-helpers/lib/strip.js +0 -12
  707. data/dist/es/internal-test-helpers/lib/system/synthetic-events.js +0 -183
  708. data/dist/es/internal-test-helpers/lib/test-cases/abstract-application.js +0 -70
  709. data/dist/es/internal-test-helpers/lib/test-cases/abstract-rendering.js +0 -203
  710. data/dist/es/internal-test-helpers/lib/test-cases/abstract.js +0 -222
  711. data/dist/es/internal-test-helpers/lib/test-cases/application.js +0 -39
  712. data/dist/es/internal-test-helpers/lib/test-cases/autoboot-application.js +0 -34
  713. data/dist/es/internal-test-helpers/lib/test-cases/default-resolver-application.js +0 -43
  714. data/dist/es/internal-test-helpers/lib/test-cases/node-query.js +0 -120
  715. data/dist/es/internal-test-helpers/lib/test-cases/query-param.js +0 -124
  716. data/dist/es/internal-test-helpers/lib/test-cases/rendering.js +0 -14
  717. data/dist/es/internal-test-helpers/lib/test-cases/router.js +0 -26
  718. data/dist/es/internal-test-helpers/lib/test-cases/test-resolver-application.js +0 -40
  719. data/dist/es/internal-test-helpers/lib/test-resolver.js +0 -86
  720. data/dist/es/internal-test-helpers/tests/index-test.js +0 -10
  721. data/dist/es/route-recognizer.js +0 -685
  722. data/dist/es/router.js +0 -2454
  723. data/dist/es/rsvp.js +0 -2394
  724. data/dist/es/simple-html-tokenizer.js +0 -638
  725. data/dist/jquery/jquery.js +0 -10364
  726. data/dist/node/app-boot-test.js +0 -146
  727. data/dist/node/build-info-test.js +0 -177
  728. data/dist/node/component-rendering-test.js +0 -34
  729. data/dist/node/helpers/app-module.js +0 -198
  730. data/dist/node/helpers/assert-html-matches.js +0 -25
  731. data/dist/node/helpers/build-owner.js +0 -28
  732. data/dist/node/helpers/component-module.js +0 -137
  733. data/dist/node/sourcemap-test.js +0 -27
  734. data/dist/node/template-compiler-test.js +0 -45
  735. data/dist/node/visit-test.js +0 -349
  736. data/dist/qunit/qunit.css +0 -436
  737. data/dist/qunit/qunit.js +0 -5188
  738. data/dist/tests/index.html +0 -254
  739. data/ember-source.gemspec +0 -28
  740. data/node_modules/.yarn-integrity +0 -10
  741. data/yarn.lock +0 -4
@@ -1,103 +0,0 @@
1
- import { moduleFor, ApplicationTestCase } from 'internal-test-helpers';
2
- import Controller from '@ember/controller';
3
- import Service, { inject as injectService } from '@ember/service';
4
- import { Helper, helper } from 'ember-glimmer';
5
-
6
- moduleFor(
7
- 'Application Lifecycle - Helper Registration',
8
- class extends ApplicationTestCase {
9
- ['@test Unbound dashed helpers registered on the container can be late-invoked'](assert) {
10
- this.addTemplate('application', `<div id='wrapper'>{{x-borf}} {{x-borf 'YES'}}</div>`);
11
-
12
- let myHelper = helper(params => params[0] || 'BORF');
13
- this.application.register('helper:x-borf', myHelper);
14
-
15
- return this.visit('/').then(() => {
16
- assert.equal(
17
- this.$('#wrapper').text(),
18
- 'BORF YES',
19
- 'The helper was invoked from the container'
20
- );
21
- });
22
- }
23
-
24
- ['@test Bound helpers registered on the container can be late-invoked'](assert) {
25
- this.addTemplate('application', `<div id='wrapper'>{{x-reverse}} {{x-reverse foo}}</div>`);
26
-
27
- this.add(
28
- 'controller:application',
29
- Controller.extend({
30
- foo: 'alex',
31
- })
32
- );
33
-
34
- this.application.register(
35
- 'helper:x-reverse',
36
- helper(function([value]) {
37
- return value
38
- ? value
39
- .split('')
40
- .reverse()
41
- .join('')
42
- : '--';
43
- })
44
- );
45
-
46
- return this.visit('/').then(() => {
47
- assert.equal(
48
- this.$('#wrapper').text(),
49
- '-- xela',
50
- 'The bound helper was invoked from the container'
51
- );
52
- });
53
- }
54
-
55
- ['@test Undashed helpers registered on the container can be invoked'](assert) {
56
- this.addTemplate(
57
- 'application',
58
- `<div id='wrapper'>{{omg}}|{{yorp 'boo'}}|{{yorp 'ya'}}</div>`
59
- );
60
-
61
- this.application.register('helper:omg', helper(() => 'OMG'));
62
-
63
- this.application.register('helper:yorp', helper(([value]) => value));
64
-
65
- return this.visit('/').then(() => {
66
- assert.equal(
67
- this.$('#wrapper').text(),
68
- 'OMG|boo|ya',
69
- 'The helper was invoked from the container'
70
- );
71
- });
72
- }
73
-
74
- ['@test Helpers can receive injections'](assert) {
75
- this.addTemplate('application', `<div id='wrapper'>{{full-name}}</div>`);
76
-
77
- let serviceCalled = false;
78
-
79
- this.add(
80
- 'service:name-builder',
81
- Service.extend({
82
- build() {
83
- serviceCalled = true;
84
- },
85
- })
86
- );
87
-
88
- this.add(
89
- 'helper:full-name',
90
- Helper.extend({
91
- nameBuilder: injectService('name-builder'),
92
- compute() {
93
- this.get('nameBuilder').build();
94
- },
95
- })
96
- );
97
-
98
- return this.visit('/').then(() => {
99
- assert.ok(serviceCalled, 'service was injected, method called');
100
- });
101
- }
102
- }
103
- );
@@ -1,2103 +0,0 @@
1
- import { moduleFor, ApplicationTestCase } from 'internal-test-helpers';
2
- import Controller, { inject as injectController } from '@ember/controller';
3
- import { A as emberA } from 'ember-runtime';
4
- import { alias } from 'ember-metal';
5
- import { subscribe, reset } from '@ember/instrumentation';
6
- import { Route, NoneLocation } from 'ember-routing';
7
- import { EMBER_IMPROVED_INSTRUMENTATION } from '@ember/canary-features';
8
-
9
- // IE includes the host name
10
- function normalizeUrl(url) {
11
- return url.replace(/https?:\/\/[^\/]+/, '');
12
- }
13
-
14
- function shouldNotBeActive(assert, element) {
15
- checkActive(assert, element, false);
16
- }
17
-
18
- function shouldBeActive(assert, element) {
19
- checkActive(assert, element, true);
20
- }
21
-
22
- function checkActive(assert, element, active) {
23
- let classList = element.attr('class');
24
- assert.equal(classList.indexOf('active') > -1, active, `${element} active should be ${active}`);
25
- }
26
-
27
- moduleFor(
28
- 'The {{link-to}} helper - basic tests',
29
- class extends ApplicationTestCase {
30
- constructor() {
31
- super();
32
-
33
- this.router.map(function() {
34
- this.route('about');
35
- });
36
-
37
- this.addTemplate(
38
- 'index',
39
- `
40
- <h3 class="home">Home</h3>
41
- {{#link-to 'about' id='about-link'}}About{{/link-to}}
42
- {{#link-to 'index' id='self-link'}}Self{{/link-to}}
43
- `
44
- );
45
- this.addTemplate(
46
- 'about',
47
- `
48
- <h3 class="about">About</h3>
49
- {{#link-to 'index' id='home-link'}}Home{{/link-to}}
50
- {{#link-to 'about' id='self-link'}}Self{{/link-to}}
51
- `
52
- );
53
- }
54
-
55
- ['@test The {{link-to}} helper moves into the named route'](assert) {
56
- return this.visit('/')
57
- .then(() => {
58
- assert.equal(this.$('h3.home').length, 1, 'The home template was rendered');
59
- assert.equal(
60
- this.$('#self-link.active').length,
61
- 1,
62
- 'The self-link was rendered with active class'
63
- );
64
- assert.equal(
65
- this.$('#about-link:not(.active)').length,
66
- 1,
67
- 'The other link was rendered without active class'
68
- );
69
-
70
- return this.click('#about-link');
71
- })
72
- .then(() => {
73
- assert.equal(this.$('h3.about').length, 1, 'The about template was rendered');
74
- assert.equal(
75
- this.$('#self-link.active').length,
76
- 1,
77
- 'The self-link was rendered with active class'
78
- );
79
- assert.equal(
80
- this.$('#home-link:not(.active)').length,
81
- 1,
82
- 'The other link was rendered without active class'
83
- );
84
- });
85
- }
86
-
87
- [`@test the {{link-to}} helper doesn't add an href when the tagName isn't 'a'`](assert) {
88
- this.addTemplate(
89
- 'index',
90
- `
91
- {{#link-to 'about' id='about-link' tagName='div'}}About{{/link-to}}
92
- `
93
- );
94
-
95
- return this.visit('/').then(() => {
96
- assert.equal(this.$('#about-link').attr('href'), undefined, 'there is no href attribute');
97
- });
98
- }
99
-
100
- [`@test the {{link-to}} applies a 'disabled' class when disabled`](assert) {
101
- this.addTemplate(
102
- 'index',
103
- `
104
- {{#link-to "about" id="about-link-static" disabledWhen="shouldDisable"}}About{{/link-to}}
105
- {{#link-to "about" id="about-link-dynamic" disabledWhen=dynamicDisabledWhen}}About{{/link-to}}
106
- `
107
- );
108
-
109
- this.add(
110
- 'controller:index',
111
- Controller.extend({
112
- shouldDisable: true,
113
- dynamicDisabledWhen: 'shouldDisable',
114
- })
115
- );
116
-
117
- return this.visit('/').then(() => {
118
- assert.equal(
119
- this.$('#about-link-static.disabled').length,
120
- 1,
121
- 'The static link is disabled when its disabledWhen is true'
122
- );
123
- assert.equal(
124
- this.$('#about-link-dynamic.disabled').length,
125
- 1,
126
- 'The dynamic link is disabled when its disabledWhen is true'
127
- );
128
-
129
- let controller = this.applicationInstance.lookup('controller:index');
130
- this.runTask(() => controller.set('dynamicDisabledWhen', false));
131
-
132
- assert.equal(
133
- this.$('#about-link-dynamic.disabled').length,
134
- 0,
135
- 'The dynamic link is re-enabled when its disabledWhen becomes false'
136
- );
137
- });
138
- }
139
-
140
- [`@test the {{link-to}} doesn't apply a 'disabled' class if disabledWhen is not provided`](
141
- assert
142
- ) {
143
- this.addTemplate('index', `{{#link-to "about" id="about-link"}}About{{/link-to}}`);
144
-
145
- return this.visit('/').then(() => {
146
- assert.ok(
147
- !this.$('#about-link').hasClass('disabled'),
148
- 'The link is not disabled if disabledWhen not provided'
149
- );
150
- });
151
- }
152
-
153
- [`@test the {{link-to}} helper supports a custom disabledClass`](assert) {
154
- this.addTemplate(
155
- 'index',
156
- `
157
- {{#link-to "about" id="about-link" disabledWhen=true disabledClass="do-not-want"}}About{{/link-to}}
158
- `
159
- );
160
-
161
- return this.visit('/').then(() => {
162
- assert.equal(
163
- this.$('#about-link.do-not-want').length,
164
- 1,
165
- 'The link can apply a custom disabled class'
166
- );
167
- });
168
- }
169
-
170
- [`@test the {{link-to}} helper supports a custom disabledClass set via bound param`](assert) {
171
- this.addTemplate(
172
- 'index',
173
- `
174
- {{#link-to "about" id="about-link" disabledWhen=true disabledClass=disabledClass}}About{{/link-to}}
175
- `
176
- );
177
-
178
- this.add(
179
- 'controller:index',
180
- Controller.extend({
181
- disabledClass: 'do-not-want',
182
- })
183
- );
184
-
185
- return this.visit('/').then(() => {
186
- assert.equal(
187
- this.$('#about-link.do-not-want').length,
188
- 1,
189
- 'The link can apply a custom disabled class via bound param'
190
- );
191
- });
192
- }
193
-
194
- [`@test the {{link-to}} helper does not respond to clicks when disabledWhen`](assert) {
195
- this.addTemplate(
196
- 'index',
197
- `
198
- {{#link-to "about" id="about-link" disabledWhen=true}}About{{/link-to}}
199
- `
200
- );
201
-
202
- return this.visit('/')
203
- .then(() => {
204
- return this.click('#about-link');
205
- })
206
- .then(() => {
207
- assert.equal(this.$('h3.about').length, 0, 'Transitioning did not occur');
208
- });
209
- }
210
-
211
- [`@test the {{link-to}} helper does not respond to clicks when disabled`](assert) {
212
- this.addTemplate(
213
- 'index',
214
- `
215
- {{#link-to "about" id="about-link" disabled=true}}About{{/link-to}}
216
- `
217
- );
218
-
219
- return this.visit('/')
220
- .then(() => {
221
- return this.click('#about-link');
222
- })
223
- .then(() => {
224
- assert.equal(this.$('h3.about').length, 0, 'Transitioning did not occur');
225
- });
226
- }
227
-
228
- [`@test the {{link-to}} helper responds to clicks according to its disabledWhen bound param`](
229
- assert
230
- ) {
231
- this.addTemplate(
232
- 'index',
233
- `
234
- {{#link-to "about" id="about-link" disabledWhen=disabledWhen}}About{{/link-to}}
235
- `
236
- );
237
-
238
- this.add(
239
- 'controller:index',
240
- Controller.extend({
241
- disabledWhen: true,
242
- })
243
- );
244
-
245
- return this.visit('/')
246
- .then(() => {
247
- return this.click('#about-link');
248
- })
249
- .then(() => {
250
- assert.equal(this.$('h3.about').length, 0, 'Transitioning did not occur');
251
-
252
- let controller = this.applicationInstance.lookup('controller:index');
253
- controller.set('disabledWhen', false);
254
-
255
- return this.runLoopSettled();
256
- })
257
- .then(() => {
258
- return this.click('#about-link');
259
- })
260
- .then(() => {
261
- assert.equal(
262
- this.$('h3.about').length,
263
- 1,
264
- 'Transitioning did occur when disabledWhen became false'
265
- );
266
- });
267
- }
268
-
269
- [`@test The {{link-to}} helper supports a custom activeClass`](assert) {
270
- this.addTemplate(
271
- 'index',
272
- `
273
- <h3 class="home">Home</h3>
274
- {{#link-to 'about' id='about-link'}}About{{/link-to}}
275
- {{#link-to 'index' id='self-link' activeClass='zomg-active'}}Self{{/link-to}}
276
- `
277
- );
278
-
279
- return this.visit('/').then(() => {
280
- assert.equal(this.$('h3.home').length, 1, 'The home template was rendered');
281
- assert.equal(
282
- this.$('#self-link.zomg-active').length,
283
- 1,
284
- 'The self-link was rendered with active class'
285
- );
286
- assert.equal(
287
- this.$('#about-link:not(.active)').length,
288
- 1,
289
- 'The other link was rendered without active class'
290
- );
291
- });
292
- }
293
-
294
- [`@test The {{link-to}} helper supports a custom activeClass from a bound param`](assert) {
295
- this.addTemplate(
296
- 'index',
297
- `
298
- <h3 class="home">Home</h3>
299
- {{#link-to 'about' id='about-link'}}About{{/link-to}}
300
- {{#link-to 'index' id='self-link' activeClass=activeClass}}Self{{/link-to}}
301
- `
302
- );
303
-
304
- this.add(
305
- 'controller:index',
306
- Controller.extend({
307
- activeClass: 'zomg-active',
308
- })
309
- );
310
-
311
- return this.visit('/').then(() => {
312
- assert.equal(this.$('h3.home').length, 1, 'The home template was rendered');
313
- assert.equal(
314
- this.$('#self-link.zomg-active').length,
315
- 1,
316
- 'The self-link was rendered with active class'
317
- );
318
- assert.equal(
319
- this.$('#about-link:not(.active)').length,
320
- 1,
321
- 'The other link was rendered without active class'
322
- );
323
- });
324
- }
325
-
326
- [`@test The {{link-to}} helper supports 'classNameBindings' with custom values [GH #11699]`](
327
- assert
328
- ) {
329
- this.addTemplate(
330
- 'index',
331
- `
332
- <h3 class="home">Home</h3>
333
- {{#link-to 'about' id='about-link' classNameBindings='foo:foo-is-true:foo-is-false'}}About{{/link-to}}
334
- `
335
- );
336
-
337
- this.add(
338
- 'controller:index',
339
- Controller.extend({
340
- foo: false,
341
- })
342
- );
343
-
344
- return this.visit('/').then(() => {
345
- assert.equal(
346
- this.$('#about-link.foo-is-false').length,
347
- 1,
348
- 'The about-link was rendered with the falsy class'
349
- );
350
-
351
- let controller = this.applicationInstance.lookup('controller:index');
352
- this.runTask(() => controller.set('foo', true));
353
-
354
- assert.equal(
355
- this.$('#about-link.foo-is-true').length,
356
- 1,
357
- 'The about-link was rendered with the truthy class after toggling the property'
358
- );
359
- });
360
- }
361
- }
362
- );
363
-
364
- moduleFor(
365
- 'The {{link-to}} helper - location hooks',
366
- class extends ApplicationTestCase {
367
- constructor() {
368
- super();
369
-
370
- this.updateCount = 0;
371
- this.replaceCount = 0;
372
-
373
- let testContext = this;
374
- this.add(
375
- 'location:none',
376
- NoneLocation.extend({
377
- setURL() {
378
- testContext.updateCount++;
379
- return this._super(...arguments);
380
- },
381
- replaceURL() {
382
- testContext.replaceCount++;
383
- return this._super(...arguments);
384
- },
385
- })
386
- );
387
-
388
- this.router.map(function() {
389
- this.route('about');
390
- });
391
-
392
- this.addTemplate(
393
- 'index',
394
- `
395
- <h3 class="home">Home</h3>
396
- {{#link-to 'about' id='about-link'}}About{{/link-to}}
397
- {{#link-to 'index' id='self-link'}}Self{{/link-to}}
398
- `
399
- );
400
- this.addTemplate(
401
- 'about',
402
- `
403
- <h3 class="about">About</h3>
404
- {{#link-to 'index' id='home-link'}}Home{{/link-to}}
405
- {{#link-to 'about' id='self-link'}}Self{{/link-to}}
406
- `
407
- );
408
- }
409
-
410
- visit() {
411
- return super.visit(...arguments).then(() => {
412
- this.updateCountAfterVisit = this.updateCount;
413
- this.replaceCountAfterVisit = this.replaceCount;
414
- });
415
- }
416
-
417
- ['@test The {{link-to}} helper supports URL replacement'](assert) {
418
- this.addTemplate(
419
- 'index',
420
- `
421
- <h3 class="home">Home</h3>
422
- {{#link-to 'about' id='about-link' replace=true}}About{{/link-to}}
423
- `
424
- );
425
-
426
- return this.visit('/')
427
- .then(() => {
428
- return this.click('#about-link');
429
- })
430
- .then(() => {
431
- assert.equal(this.updateCount, this.updateCountAfterVisit, 'setURL should not be called');
432
- assert.equal(
433
- this.replaceCount,
434
- this.replaceCountAfterVisit + 1,
435
- 'replaceURL should be called once'
436
- );
437
- });
438
- }
439
-
440
- ['@test The {{link-to}} helper supports URL replacement via replace=boundTruthyThing'](assert) {
441
- this.addTemplate(
442
- 'index',
443
- `
444
- <h3 class="home">Home</h3>
445
- {{#link-to 'about' id='about-link' replace=boundTruthyThing}}About{{/link-to}}
446
- `
447
- );
448
-
449
- this.add(
450
- 'controller:index',
451
- Controller.extend({
452
- boundTruthyThing: true,
453
- })
454
- );
455
-
456
- return this.visit('/')
457
- .then(() => {
458
- return this.click('#about-link');
459
- })
460
- .then(() => {
461
- assert.equal(this.updateCount, this.updateCountAfterVisit, 'setURL should not be called');
462
- assert.equal(
463
- this.replaceCount,
464
- this.replaceCountAfterVisit + 1,
465
- 'replaceURL should be called once'
466
- );
467
- });
468
- }
469
-
470
- ['@test The {{link-to}} helper supports setting replace=boundFalseyThing'](assert) {
471
- this.addTemplate(
472
- 'index',
473
- `
474
- <h3 class="home">Home</h3>
475
- {{#link-to 'about' id='about-link' replace=boundFalseyThing}}About{{/link-to}}
476
- `
477
- );
478
-
479
- this.add(
480
- 'controller:index',
481
- Controller.extend({
482
- boundFalseyThing: false,
483
- })
484
- );
485
-
486
- return this.visit('/')
487
- .then(() => {
488
- return this.click('#about-link');
489
- })
490
- .then(() => {
491
- assert.equal(this.updateCount, this.updateCountAfterVisit + 1, 'setURL should be called');
492
- assert.equal(
493
- this.replaceCount,
494
- this.replaceCountAfterVisit,
495
- 'replaceURL should not be called'
496
- );
497
- });
498
- }
499
- }
500
- );
501
-
502
- if (EMBER_IMPROVED_INSTRUMENTATION) {
503
- moduleFor(
504
- 'The {{link-to}} helper with EMBER_IMPROVED_INSTRUMENTATION',
505
- class extends ApplicationTestCase {
506
- constructor() {
507
- super();
508
-
509
- this.router.map(function() {
510
- this.route('about');
511
- });
512
-
513
- this.addTemplate(
514
- 'index',
515
- `
516
- <h3 class="home">Home</h3>
517
- {{#link-to 'about' id='about-link'}}About{{/link-to}}
518
- {{#link-to 'index' id='self-link'}}Self{{/link-to}}
519
- `
520
- );
521
- this.addTemplate(
522
- 'about',
523
- `
524
- <h3 class="about">About</h3>
525
- {{#link-to 'index' id='home-link'}}Home{{/link-to}}
526
- {{#link-to 'about' id='self-link'}}Self{{/link-to}}
527
- `
528
- );
529
- }
530
-
531
- beforeEach() {
532
- return this.visit('/');
533
- }
534
-
535
- afterEach() {
536
- reset();
537
-
538
- return super.afterEach();
539
- }
540
-
541
- ['@test The {{link-to}} helper fires an interaction event'](assert) {
542
- assert.expect(2);
543
-
544
- subscribe('interaction.link-to', {
545
- before() {
546
- assert.ok(true, 'instrumentation subscriber was called');
547
- },
548
- after() {
549
- assert.ok(true, 'instrumentation subscriber was called');
550
- },
551
- });
552
-
553
- return this.click('#about-link');
554
- }
555
-
556
- ['@test The {{link-to}} helper interaction event includes the route name'](assert) {
557
- assert.expect(2);
558
-
559
- subscribe('interaction.link-to', {
560
- before(name, timestamp, { routeName }) {
561
- assert.equal(routeName, 'about', 'instrumentation subscriber was passed route name');
562
- },
563
- after(name, timestamp, { routeName }) {
564
- assert.equal(routeName, 'about', 'instrumentation subscriber was passed route name');
565
- },
566
- });
567
-
568
- return this.click('#about-link');
569
- }
570
-
571
- ['@test The {{link-to}} helper interaction event includes the transition in the after hook'](
572
- assert
573
- ) {
574
- assert.expect(1);
575
-
576
- subscribe('interaction.link-to', {
577
- before() {},
578
- after(name, timestamp, { transition }) {
579
- assert.equal(
580
- transition.targetName,
581
- 'about',
582
- 'instrumentation subscriber was passed route name'
583
- );
584
- },
585
- });
586
-
587
- return this.click('#about-link');
588
- }
589
- }
590
- );
591
- }
592
-
593
- moduleFor(
594
- 'The {{link-to}} helper - nested routes and link-to arguments',
595
- class extends ApplicationTestCase {
596
- ['@test The {{link-to}} helper supports leaving off .index for nested routes'](assert) {
597
- this.router.map(function() {
598
- this.route('about', function() {
599
- this.route('item');
600
- });
601
- });
602
-
603
- this.addTemplate('about', `<h1>About</h1>{{outlet}}`);
604
- this.addTemplate('about.index', `<div id='index'>Index</div>`);
605
- this.addTemplate('about.item', `<div id='item'>{{#link-to 'about'}}About{{/link-to}}</div>`);
606
-
607
- return this.visit('/about/item').then(() => {
608
- assert.equal(normalizeUrl(this.$('#item a').attr('href')), '/about');
609
- });
610
- }
611
-
612
- [`@test The {{link-to}} helper supports custom, nested, current-when`](assert) {
613
- this.router.map(function() {
614
- this.route('index', { path: '/' }, function() {
615
- this.route('about');
616
- });
617
-
618
- this.route('item');
619
- });
620
-
621
- this.addTemplate('index', `<h3 class="home">Home</h3>{{outlet}}`);
622
- this.addTemplate(
623
- 'index.about',
624
- `
625
- {{#link-to 'item' id='other-link' current-when='index'}}ITEM{{/link-to}}
626
- `
627
- );
628
-
629
- return this.visit('/about').then(() => {
630
- assert.equal(
631
- this.$('#other-link.active').length,
632
- 1,
633
- 'The link is active since current-when is a parent route'
634
- );
635
- });
636
- }
637
-
638
- [`@test The {{link-to}} helper does not disregard current-when when it is given explicitly for a route`](
639
- assert
640
- ) {
641
- this.router.map(function() {
642
- this.route('index', { path: '/' }, function() {
643
- this.route('about');
644
- });
645
-
646
- this.route('items', function() {
647
- this.route('item');
648
- });
649
- });
650
-
651
- this.addTemplate('index', `<h3 class="home">Home</h3>{{outlet}}`);
652
- this.addTemplate(
653
- 'index.about',
654
- `
655
- {{#link-to 'items' id='other-link' current-when='index'}}ITEM{{/link-to}}
656
- `
657
- );
658
-
659
- return this.visit('/about').then(() => {
660
- assert.equal(
661
- this.$('#other-link.active').length,
662
- 1,
663
- 'The link is active when current-when is given for explicitly for a route'
664
- );
665
- });
666
- }
667
-
668
- ['@test The {{link-to}} helper does not disregard current-when when it is set via a bound param'](
669
- assert
670
- ) {
671
- this.router.map(function() {
672
- this.route('index', { path: '/' }, function() {
673
- this.route('about');
674
- });
675
-
676
- this.route('items', function() {
677
- this.route('item');
678
- });
679
- });
680
-
681
- this.add(
682
- 'controller:index.about',
683
- Controller.extend({
684
- currentWhen: 'index',
685
- })
686
- );
687
-
688
- this.addTemplate('index', `<h3 class="home">Home</h3>{{outlet}}`);
689
- this.addTemplate(
690
- 'index.about',
691
- `{{#link-to 'items' id='other-link' current-when=currentWhen}}ITEM{{/link-to}}`
692
- );
693
-
694
- return this.visit('/about').then(() => {
695
- assert.equal(
696
- this.$('#other-link.active').length,
697
- 1,
698
- 'The link is active when current-when is given for explicitly for a route'
699
- );
700
- });
701
- }
702
-
703
- ['@test The {{link-to}} helper supports multiple current-when routes'](assert) {
704
- this.router.map(function() {
705
- this.route('index', { path: '/' }, function() {
706
- this.route('about');
707
- });
708
- this.route('item');
709
- this.route('foo');
710
- });
711
-
712
- this.addTemplate('index', `<h3 class="home">Home</h3>{{outlet}}`);
713
- this.addTemplate(
714
- 'index.about',
715
- `{{#link-to 'item' id='link1' current-when='item index'}}ITEM{{/link-to}}`
716
- );
717
- this.addTemplate(
718
- 'item',
719
- `{{#link-to 'item' id='link2' current-when='item index'}}ITEM{{/link-to}}`
720
- );
721
- this.addTemplate(
722
- 'foo',
723
- `{{#link-to 'item' id='link3' current-when='item index'}}ITEM{{/link-to}}`
724
- );
725
-
726
- return this.visit('/about')
727
- .then(() => {
728
- assert.equal(
729
- this.$('#link1.active').length,
730
- 1,
731
- 'The link is active since current-when contains the parent route'
732
- );
733
-
734
- return this.visit('/item');
735
- })
736
- .then(() => {
737
- assert.equal(
738
- this.$('#link2.active').length,
739
- 1,
740
- 'The link is active since you are on the active route'
741
- );
742
-
743
- return this.visit('/foo');
744
- })
745
- .then(() => {
746
- assert.equal(
747
- this.$('#link3.active').length,
748
- 0,
749
- 'The link is not active since current-when does not contain the active route'
750
- );
751
- });
752
- }
753
-
754
- ['@test The {{link-to}} helper supports boolean values for current-when'](assert) {
755
- this.router.map(function() {
756
- this.route('index', { path: '/' }, function() {
757
- this.route('about');
758
- });
759
- this.route('item');
760
- });
761
-
762
- this.addTemplate(
763
- 'index.about',
764
- `
765
- {{#link-to 'index' id='index-link' current-when=isCurrent}}index{{/link-to}}
766
- {{#link-to 'item' id='about-link' current-when=true}}ITEM{{/link-to}}
767
- `
768
- );
769
-
770
- this.add('controller:index.about', Controller.extend({ isCurrent: false }));
771
-
772
- return this.visit('/about').then(() => {
773
- assert.ok(
774
- this.$('#about-link').hasClass('active'),
775
- 'The link is active since current-when is true'
776
- );
777
- assert.notOk(
778
- this.$('#index-link').hasClass('active'),
779
- 'The link is not active since current-when is false'
780
- );
781
-
782
- let controller = this.applicationInstance.lookup('controller:index.about');
783
- this.runTask(() => controller.set('isCurrent', true));
784
-
785
- assert.ok(
786
- this.$('#index-link').hasClass('active'),
787
- 'The link is active since current-when is true'
788
- );
789
- });
790
- }
791
-
792
- ['@test The {{link-to}} helper defaults to bubbling'](assert) {
793
- this.addTemplate(
794
- 'about',
795
- `
796
- <div {{action 'hide'}}>
797
- {{#link-to 'about.contact' id='about-contact'}}About{{/link-to}}
798
- </div>
799
- {{outlet}}
800
- `
801
- );
802
- this.addTemplate(
803
- 'about.contact',
804
- `
805
- <h1 id='contact'>Contact</h1>
806
- `
807
- );
808
-
809
- this.router.map(function() {
810
- this.route('about', function() {
811
- this.route('contact');
812
- });
813
- });
814
-
815
- let hidden = 0;
816
-
817
- this.add(
818
- 'route:about',
819
- Route.extend({
820
- actions: {
821
- hide() {
822
- hidden++;
823
- },
824
- },
825
- })
826
- );
827
-
828
- return this.visit('/about')
829
- .then(() => {
830
- return this.click('#about-contact');
831
- })
832
- .then(() => {
833
- assert.equal(this.$('#contact').text(), 'Contact', 'precond - the link worked');
834
-
835
- assert.equal(hidden, 1, 'The link bubbles');
836
- });
837
- }
838
-
839
- [`@test The {{link-to}} helper supports bubbles=false`](assert) {
840
- this.addTemplate(
841
- 'about',
842
- `
843
- <div {{action 'hide'}}>
844
- {{#link-to 'about.contact' id='about-contact' bubbles=false}}
845
- About
846
- {{/link-to}}
847
- </div>
848
- {{outlet}}
849
- `
850
- );
851
- this.addTemplate('about.contact', `<h1 id='contact'>Contact</h1>`);
852
-
853
- this.router.map(function() {
854
- this.route('about', function() {
855
- this.route('contact');
856
- });
857
- });
858
-
859
- let hidden = 0;
860
-
861
- this.add(
862
- 'route:about',
863
- Route.extend({
864
- actions: {
865
- hide() {
866
- hidden++;
867
- },
868
- },
869
- })
870
- );
871
-
872
- return this.visit('/about')
873
- .then(() => {
874
- return this.click('#about-contact');
875
- })
876
- .then(() => {
877
- assert.equal(this.$('#contact').text(), 'Contact', 'precond - the link worked');
878
-
879
- assert.equal(hidden, 0, "The link didn't bubble");
880
- });
881
- }
882
-
883
- [`@test The {{link-to}} helper supports bubbles=boundFalseyThing`](assert) {
884
- this.addTemplate(
885
- 'about',
886
- `
887
- <div {{action 'hide'}}>
888
- {{#link-to 'about.contact' id='about-contact' bubbles=boundFalseyThing}}
889
- About
890
- {{/link-to}}
891
- </div>
892
- {{outlet}}
893
- `
894
- );
895
- this.addTemplate('about.contact', `<h1 id='contact'>Contact</h1>`);
896
-
897
- this.add(
898
- 'controller:about',
899
- Controller.extend({
900
- boundFalseyThing: false,
901
- })
902
- );
903
-
904
- this.router.map(function() {
905
- this.route('about', function() {
906
- this.route('contact');
907
- });
908
- });
909
-
910
- let hidden = 0;
911
-
912
- this.add(
913
- 'route:about',
914
- Route.extend({
915
- actions: {
916
- hide() {
917
- hidden++;
918
- },
919
- },
920
- })
921
- );
922
-
923
- return this.visit('/about')
924
- .then(() => {
925
- return this.click('#about-contact');
926
- })
927
- .then(() => {
928
- assert.equal(this.$('#contact').text(), 'Contact', 'precond - the link worked');
929
- assert.equal(hidden, 0, "The link didn't bubble");
930
- });
931
- }
932
-
933
- [`@test The {{link-to}} helper moves into the named route with context`](assert) {
934
- this.router.map(function() {
935
- this.route('about');
936
- this.route('item', { path: '/item/:id' });
937
- });
938
-
939
- this.addTemplate(
940
- 'about',
941
- `
942
- <h3 class="list">List</h3>
943
- <ul>
944
- {{#each model as |person|}}
945
- <li>
946
- {{#link-to 'item' person id=person.id}}
947
- {{person.name}}
948
- {{/link-to}}
949
- </li>
950
- {{/each}}
951
- </ul>
952
- {{#link-to 'index' id='home-link'}}Home{{/link-to}}
953
- `
954
- );
955
-
956
- this.addTemplate(
957
- 'item',
958
- `
959
- <h3 class="item">Item</h3>
960
- <p>{{model.name}}</p>
961
- {{#link-to 'index' id='home-link'}}Home{{/link-to}}
962
- `
963
- );
964
-
965
- this.addTemplate(
966
- 'index',
967
- `
968
- <h3 class="home">Home</h3>
969
- {{#link-to 'about' id='about-link'}}About{{/link-to}}
970
- `
971
- );
972
-
973
- this.add(
974
- 'route:about',
975
- Route.extend({
976
- model() {
977
- return [
978
- { id: 'yehuda', name: 'Yehuda Katz' },
979
- { id: 'tom', name: 'Tom Dale' },
980
- { id: 'erik', name: 'Erik Brynroflsson' },
981
- ];
982
- },
983
- })
984
- );
985
-
986
- return this.visit('/about')
987
- .then(() => {
988
- assert.equal(this.$('h3.list').length, 1, 'The home template was rendered');
989
- assert.equal(
990
- normalizeUrl(this.$('#home-link').attr('href')),
991
- '/',
992
- 'The home link points back at /'
993
- );
994
-
995
- return this.click('#yehuda');
996
- })
997
- .then(() => {
998
- assert.equal(this.$('h3.item').length, 1, 'The item template was rendered');
999
- assert.equal(this.$('p').text(), 'Yehuda Katz', 'The name is correct');
1000
-
1001
- return this.click('#home-link');
1002
- })
1003
- .then(() => {
1004
- return this.click('#about-link');
1005
- })
1006
- .then(() => {
1007
- assert.equal(normalizeUrl(this.$('li a#yehuda').attr('href')), '/item/yehuda');
1008
- assert.equal(normalizeUrl(this.$('li a#tom').attr('href')), '/item/tom');
1009
- assert.equal(normalizeUrl(this.$('li a#erik').attr('href')), '/item/erik');
1010
-
1011
- return this.click('#erik');
1012
- })
1013
- .then(() => {
1014
- assert.equal(this.$('h3.item').length, 1, 'The item template was rendered');
1015
- assert.equal(this.$('p').text(), 'Erik Brynroflsson', 'The name is correct');
1016
- });
1017
- }
1018
-
1019
- [`@test The {{link-to}} helper binds some anchor html tag common attributes`](assert) {
1020
- this.addTemplate(
1021
- 'index',
1022
- `
1023
- <h3 class="home">Home</h3>
1024
- {{#link-to 'index' id='self-link' title='title-attr' rel='rel-attr' tabindex='-1'}}
1025
- Self
1026
- {{/link-to}}
1027
- `
1028
- );
1029
-
1030
- return this.visit('/').then(() => {
1031
- let link = this.$('#self-link');
1032
- assert.equal(link.attr('title'), 'title-attr', 'The self-link contains title attribute');
1033
- assert.equal(link.attr('rel'), 'rel-attr', 'The self-link contains rel attribute');
1034
- assert.equal(link.attr('tabindex'), '-1', 'The self-link contains tabindex attribute');
1035
- });
1036
- }
1037
-
1038
- [`@test The {{link-to}} helper supports 'target' attribute`](assert) {
1039
- this.addTemplate(
1040
- 'index',
1041
- `
1042
- <h3 class="home">Home</h3>
1043
- {{#link-to 'index' id='self-link' target='_blank'}}Self{{/link-to}}
1044
- `
1045
- );
1046
-
1047
- return this.visit('/').then(() => {
1048
- let link = this.$('#self-link');
1049
- assert.equal(link.attr('target'), '_blank', 'The self-link contains `target` attribute');
1050
- });
1051
- }
1052
-
1053
- [`@test The {{link-to}} helper supports 'target' attribute specified as a bound param`](
1054
- assert
1055
- ) {
1056
- this.addTemplate(
1057
- 'index',
1058
- `<h3 class="home">Home</h3>{{#link-to 'index' id='self-link' target=boundLinkTarget}}Self{{/link-to}}`
1059
- );
1060
-
1061
- this.add(
1062
- 'controller:index',
1063
- Controller.extend({
1064
- boundLinkTarget: '_blank',
1065
- })
1066
- );
1067
-
1068
- return this.visit('/').then(() => {
1069
- let link = this.$('#self-link');
1070
- assert.equal(link.attr('target'), '_blank', 'The self-link contains `target` attribute');
1071
- });
1072
- }
1073
-
1074
- [`@test the {{link-to}} helper calls preventDefault`](assert) {
1075
- this.router.map(function() {
1076
- this.route('about');
1077
- });
1078
-
1079
- this.addTemplate(
1080
- 'index',
1081
- `
1082
- {{#link-to 'about' id='about-link'}}About{{/link-to}}
1083
- `
1084
- );
1085
-
1086
- return this.visit('/').then(() => {
1087
- assertNav({ prevented: true }, () => this.$('#about-link').click(), assert);
1088
- });
1089
- }
1090
-
1091
- [`@test the {{link-to}} helper does not call preventDefault if 'preventDefault=false' is passed as an option`](
1092
- assert
1093
- ) {
1094
- this.router.map(function() {
1095
- this.route('about');
1096
- });
1097
-
1098
- this.addTemplate(
1099
- 'index',
1100
- `
1101
- {{#link-to 'about' id='about-link' preventDefault=false}}About{{/link-to}}
1102
- `
1103
- );
1104
-
1105
- return this.visit('/').then(() => {
1106
- assertNav({ prevented: false }, () => this.$('#about-link').trigger('click'), assert);
1107
- });
1108
- }
1109
-
1110
- [`@test the {{link-to}} helper does not call preventDefault if 'preventDefault=boundFalseyThing' is passed as an option`](
1111
- assert
1112
- ) {
1113
- this.router.map(function() {
1114
- this.route('about');
1115
- });
1116
-
1117
- this.addTemplate(
1118
- 'index',
1119
- `
1120
- {{#link-to 'about' id='about-link' preventDefault=boundFalseyThing}}About{{/link-to}}
1121
- `
1122
- );
1123
-
1124
- this.add(
1125
- 'controller:index',
1126
- Controller.extend({
1127
- boundFalseyThing: false,
1128
- })
1129
- );
1130
-
1131
- return this.visit('/').then(() => {
1132
- assertNav({ prevented: false }, () => this.$('#about-link').trigger('click'), assert);
1133
- });
1134
- }
1135
-
1136
- [`@test The {{link-to}} helper does not call preventDefault if 'target' attribute is provided`](
1137
- assert
1138
- ) {
1139
- this.addTemplate(
1140
- 'index',
1141
- `
1142
- <h3 class="home">Home</h3>
1143
- {{#link-to 'index' id='self-link' target='_blank'}}Self{{/link-to}}
1144
- `
1145
- );
1146
-
1147
- return this.visit('/').then(() => {
1148
- assertNav({ prevented: false }, () => this.$('#self-link').click(), assert);
1149
- });
1150
- }
1151
-
1152
- [`@test The {{link-to}} helper should preventDefault when 'target = _self'`](assert) {
1153
- this.addTemplate(
1154
- 'index',
1155
- `
1156
- <h3 class="home">Home</h3>
1157
- {{#link-to 'index' id='self-link' target='_self'}}Self{{/link-to}}
1158
- `
1159
- );
1160
-
1161
- return this.visit('/').then(() => {
1162
- assertNav({ prevented: true }, () => this.$('#self-link').click(), assert);
1163
- });
1164
- }
1165
-
1166
- [`@test The {{link-to}} helper should not transition if target is not equal to _self or empty`](
1167
- assert
1168
- ) {
1169
- this.addTemplate(
1170
- 'index',
1171
- `
1172
- {{#link-to 'about' id='about-link' replace=true target='_blank'}}
1173
- About
1174
- {{/link-to}}
1175
- `
1176
- );
1177
-
1178
- this.router.map(function() {
1179
- this.route('about');
1180
- });
1181
-
1182
- return this.visit('/')
1183
- .then(() => this.click('#about-link'))
1184
- .then(() => {
1185
- let currentRouteName = this.applicationInstance
1186
- .lookup('controller:application')
1187
- .get('currentRouteName');
1188
- assert.notEqual(
1189
- currentRouteName,
1190
- 'about',
1191
- 'link-to should not transition if target is not equal to _self or empty'
1192
- );
1193
- });
1194
- }
1195
-
1196
- [`@test The {{link-to}} helper accepts string/numeric arguments`](assert) {
1197
- this.router.map(function() {
1198
- this.route('filter', { path: '/filters/:filter' });
1199
- this.route('post', { path: '/post/:post_id' });
1200
- this.route('repo', { path: '/repo/:owner/:name' });
1201
- });
1202
-
1203
- this.add(
1204
- 'controller:filter',
1205
- Controller.extend({
1206
- filter: 'unpopular',
1207
- repo: { owner: 'ember', name: 'ember.js' },
1208
- post_id: 123,
1209
- })
1210
- );
1211
-
1212
- this.addTemplate(
1213
- 'filter',
1214
- `
1215
- <p>{{filter}}</p>
1216
- {{#link-to "filter" "unpopular" id="link"}}Unpopular{{/link-to}}
1217
- {{#link-to "filter" filter id="path-link"}}Unpopular{{/link-to}}
1218
- {{#link-to "post" post_id id="post-path-link"}}Post{{/link-to}}
1219
- {{#link-to "post" 123 id="post-number-link"}}Post{{/link-to}}
1220
- {{#link-to "repo" repo id="repo-object-link"}}Repo{{/link-to}}
1221
- `
1222
- );
1223
-
1224
- return this.visit('/filters/popular').then(() => {
1225
- assert.equal(normalizeUrl(this.$('#link').attr('href')), '/filters/unpopular');
1226
- assert.equal(normalizeUrl(this.$('#path-link').attr('href')), '/filters/unpopular');
1227
- assert.equal(normalizeUrl(this.$('#post-path-link').attr('href')), '/post/123');
1228
- assert.equal(normalizeUrl(this.$('#post-number-link').attr('href')), '/post/123');
1229
- assert.equal(
1230
- normalizeUrl(this.$('#repo-object-link').attr('href')),
1231
- '/repo/ember/ember.js'
1232
- );
1233
- });
1234
- }
1235
-
1236
- [`@test Issue 4201 - Shorthand for route.index shouldn't throw errors about context arguments`](
1237
- assert
1238
- ) {
1239
- assert.expect(2);
1240
- this.router.map(function() {
1241
- this.route('lobby', function() {
1242
- this.route('index', { path: ':lobby_id' });
1243
- this.route('list');
1244
- });
1245
- });
1246
-
1247
- this.add(
1248
- 'route:lobby.index',
1249
- Route.extend({
1250
- model(params) {
1251
- assert.equal(params.lobby_id, 'foobar');
1252
- return params.lobby_id;
1253
- },
1254
- })
1255
- );
1256
-
1257
- this.addTemplate(
1258
- 'lobby.index',
1259
- `
1260
- {{#link-to 'lobby' 'foobar' id='lobby-link'}}Lobby{{/link-to}}
1261
- `
1262
- );
1263
- this.addTemplate(
1264
- 'lobby.list',
1265
- `
1266
- {{#link-to 'lobby' 'foobar' id='lobby-link'}}Lobby{{/link-to}}
1267
- `
1268
- );
1269
-
1270
- return this.visit('/lobby/list')
1271
- .then(() => this.click('#lobby-link'))
1272
- .then(() => shouldBeActive(assert, this.$('#lobby-link')));
1273
- }
1274
-
1275
- [`@test Quoteless route param performs property lookup`](assert) {
1276
- this.router.map(function() {
1277
- this.route('about');
1278
- });
1279
-
1280
- this.addTemplate(
1281
- 'index',
1282
- `
1283
- {{#link-to 'index' id='string-link'}}string{{/link-to}}
1284
- {{#link-to foo id='path-link'}}path{{/link-to}}
1285
- `
1286
- );
1287
-
1288
- this.add(
1289
- 'controller:index',
1290
- Controller.extend({
1291
- foo: 'index',
1292
- })
1293
- );
1294
-
1295
- let assertEquality = href => {
1296
- assert.equal(normalizeUrl(this.$('#string-link').attr('href')), '/');
1297
- assert.equal(normalizeUrl(this.$('#path-link').attr('href')), href);
1298
- };
1299
-
1300
- return this.visit('/').then(() => {
1301
- assertEquality('/');
1302
-
1303
- let controller = this.applicationInstance.lookup('controller:index');
1304
- this.runTask(() => controller.set('foo', 'about'));
1305
-
1306
- assertEquality('/about');
1307
- });
1308
- }
1309
-
1310
- [`@test The {{link-to}} helper refreshes href element when one of params changes`](assert) {
1311
- this.router.map(function() {
1312
- this.route('post', { path: '/posts/:post_id' });
1313
- });
1314
-
1315
- let post = { id: '1' };
1316
- let secondPost = { id: '2' };
1317
-
1318
- this.addTemplate(
1319
- 'index',
1320
- `
1321
- {{#link-to "post" post id="post"}}post{{/link-to}}
1322
- `
1323
- );
1324
-
1325
- this.add('controller:index', Controller.extend());
1326
-
1327
- return this.visit('/').then(() => {
1328
- let indexController = this.applicationInstance.lookup('controller:index');
1329
- this.runTask(() => indexController.set('post', post));
1330
-
1331
- assert.equal(
1332
- normalizeUrl(this.$('#post').attr('href')),
1333
- '/posts/1',
1334
- 'precond - Link has rendered href attr properly'
1335
- );
1336
-
1337
- this.runTask(() => indexController.set('post', secondPost));
1338
-
1339
- assert.equal(
1340
- this.$('#post').attr('href'),
1341
- '/posts/2',
1342
- 'href attr was updated after one of the params had been changed'
1343
- );
1344
-
1345
- this.runTask(() => indexController.set('post', null));
1346
-
1347
- assert.equal(
1348
- this.$('#post').attr('href'),
1349
- '#',
1350
- 'href attr becomes # when one of the arguments in nullified'
1351
- );
1352
- });
1353
- }
1354
-
1355
- [`@test The {{link-to}} helper is active when a route is active`](assert) {
1356
- this.router.map(function() {
1357
- this.route('about', function() {
1358
- this.route('item');
1359
- });
1360
- });
1361
-
1362
- this.addTemplate(
1363
- 'about',
1364
- `
1365
- <div id='about'>
1366
- {{#link-to 'about' id='about-link'}}About{{/link-to}}
1367
- {{#link-to 'about.item' id='item-link'}}Item{{/link-to}}
1368
- {{outlet}}
1369
- </div>
1370
- `
1371
- );
1372
-
1373
- return this.visit('/about')
1374
- .then(() => {
1375
- assert.equal(this.$('#about-link.active').length, 1, 'The about route link is active');
1376
- assert.equal(this.$('#item-link.active').length, 0, 'The item route link is inactive');
1377
-
1378
- return this.visit('/about/item');
1379
- })
1380
- .then(() => {
1381
- assert.equal(this.$('#about-link.active').length, 1, 'The about route link is active');
1382
- assert.equal(this.$('#item-link.active').length, 1, 'The item route link is active');
1383
- });
1384
- }
1385
-
1386
- [`@test The {{link-to}} helper works in an #each'd array of string route names`](assert) {
1387
- this.router.map(function() {
1388
- this.route('foo');
1389
- this.route('bar');
1390
- this.route('rar');
1391
- });
1392
-
1393
- this.add(
1394
- 'controller:index',
1395
- Controller.extend({
1396
- routeNames: emberA(['foo', 'bar', 'rar']),
1397
- route1: 'bar',
1398
- route2: 'foo',
1399
- })
1400
- );
1401
-
1402
- this.addTemplate(
1403
- 'index',
1404
- `
1405
- {{#each routeNames as |routeName|}}
1406
- {{#link-to routeName}}{{routeName}}{{/link-to}}
1407
- {{/each}}
1408
- {{#each routeNames as |r|}}
1409
- {{#link-to r}}{{r}}{{/link-to}}
1410
- {{/each}}
1411
- {{#link-to route1}}a{{/link-to}}
1412
- {{#link-to route2}}b{{/link-to}}
1413
- `
1414
- );
1415
-
1416
- let linksEqual = (links, expected) => {
1417
- assert.equal(links.length, expected.length, 'Has correct number of links');
1418
-
1419
- let idx;
1420
- for (idx = 0; idx < links.length; idx++) {
1421
- let href = this.$(links[idx]).attr('href');
1422
- // Old IE includes the whole hostname as well
1423
- assert.equal(
1424
- href.slice(-expected[idx].length),
1425
- expected[idx],
1426
- `Expected link to be '${expected[idx]}', but was '${href}'`
1427
- );
1428
- }
1429
- };
1430
-
1431
- return this.visit('/').then(() => {
1432
- linksEqual(this.$('a'), ['/foo', '/bar', '/rar', '/foo', '/bar', '/rar', '/bar', '/foo']);
1433
-
1434
- let indexController = this.applicationInstance.lookup('controller:index');
1435
- this.runTask(() => indexController.set('route1', 'rar'));
1436
-
1437
- linksEqual(this.$('a'), ['/foo', '/bar', '/rar', '/foo', '/bar', '/rar', '/rar', '/foo']);
1438
-
1439
- this.runTask(() => indexController.routeNames.shiftObject());
1440
-
1441
- linksEqual(this.$('a'), ['/bar', '/rar', '/bar', '/rar', '/rar', '/foo']);
1442
- });
1443
- }
1444
-
1445
- [`@test The non-block form {{link-to}} helper moves into the named route`](assert) {
1446
- assert.expect(3);
1447
- this.router.map(function() {
1448
- this.route('contact');
1449
- });
1450
-
1451
- this.addTemplate(
1452
- 'index',
1453
- `
1454
- <h3 class="home">Home</h3>
1455
- {{link-to 'Contact us' 'contact' id='contact-link'}}
1456
- {{#link-to 'index' id='self-link'}}Self{{/link-to}}
1457
- `
1458
- );
1459
- this.addTemplate(
1460
- 'contact',
1461
- `
1462
- <h3 class="contact">Contact</h3>
1463
- {{link-to 'Home' 'index' id='home-link'}}
1464
- {{link-to 'Self' 'contact' id='self-link'}}
1465
- `
1466
- );
1467
-
1468
- return this.visit('/')
1469
- .then(() => {
1470
- return this.click('#contact-link');
1471
- })
1472
- .then(() => {
1473
- assert.equal(this.$('h3.contact').length, 1, 'The contact template was rendered');
1474
- assert.equal(
1475
- this.$('#self-link.active').length,
1476
- 1,
1477
- 'The self-link was rendered with active class'
1478
- );
1479
- assert.equal(
1480
- this.$('#home-link:not(.active)').length,
1481
- 1,
1482
- 'The other link was rendered without active class'
1483
- );
1484
- });
1485
- }
1486
-
1487
- [`@test The non-block form {{link-to}} helper updates the link text when it is a binding`](
1488
- assert
1489
- ) {
1490
- assert.expect(8);
1491
- this.router.map(function() {
1492
- this.route('contact');
1493
- });
1494
-
1495
- this.add(
1496
- 'controller:index',
1497
- Controller.extend({
1498
- contactName: 'Jane',
1499
- })
1500
- );
1501
-
1502
- this.addTemplate(
1503
- 'index',
1504
- `
1505
- <h3 class="home">Home</h3>
1506
- {{link-to contactName 'contact' id='contact-link'}}
1507
- {{#link-to 'index' id='self-link'}}Self{{/link-to}}
1508
- `
1509
- );
1510
- this.addTemplate(
1511
- 'contact',
1512
- `
1513
- <h3 class="contact">Contact</h3>
1514
- {{link-to 'Home' 'index' id='home-link'}}
1515
- {{link-to 'Self' 'contact' id='self-link'}}
1516
- `
1517
- );
1518
-
1519
- return this.visit('/')
1520
- .then(() => {
1521
- assert.equal(
1522
- this.$('#contact-link').text(),
1523
- 'Jane',
1524
- 'The link title is correctly resolved'
1525
- );
1526
-
1527
- let controller = this.applicationInstance.lookup('controller:index');
1528
- this.runTask(() => controller.set('contactName', 'Joe'));
1529
-
1530
- assert.equal(
1531
- this.$('#contact-link').text(),
1532
- 'Joe',
1533
- 'The link title is correctly updated when the bound property changes'
1534
- );
1535
-
1536
- this.runTask(() => controller.set('contactName', 'Robert'));
1537
-
1538
- assert.equal(
1539
- this.$('#contact-link').text(),
1540
- 'Robert',
1541
- 'The link title is correctly updated when the bound property changes a second time'
1542
- );
1543
-
1544
- return this.click('#contact-link');
1545
- })
1546
- .then(() => {
1547
- assert.equal(this.$('h3.contact').length, 1, 'The contact template was rendered');
1548
- assert.equal(
1549
- this.$('#self-link.active').length,
1550
- 1,
1551
- 'The self-link was rendered with active class'
1552
- );
1553
- assert.equal(
1554
- this.$('#home-link:not(.active)').length,
1555
- 1,
1556
- 'The other link was rendered without active class'
1557
- );
1558
-
1559
- return this.click('#home-link');
1560
- })
1561
- .then(() => {
1562
- assert.equal(this.$('h3.home').length, 1, 'The index template was rendered');
1563
- assert.equal(
1564
- this.$('#contact-link').text(),
1565
- 'Robert',
1566
- 'The link title is correctly updated when the route changes'
1567
- );
1568
- });
1569
- }
1570
-
1571
- [`@test The non-block form {{link-to}} helper moves into the named route with context`](
1572
- assert
1573
- ) {
1574
- assert.expect(5);
1575
-
1576
- this.router.map(function() {
1577
- this.route('item', { path: '/item/:id' });
1578
- });
1579
-
1580
- this.add(
1581
- 'route:index',
1582
- Route.extend({
1583
- model() {
1584
- return [
1585
- { id: 'yehuda', name: 'Yehuda Katz' },
1586
- { id: 'tom', name: 'Tom Dale' },
1587
- { id: 'erik', name: 'Erik Brynroflsson' },
1588
- ];
1589
- },
1590
- })
1591
- );
1592
-
1593
- this.addTemplate(
1594
- 'index',
1595
- `
1596
- <h3 class="home">Home</h3>
1597
- <ul>
1598
- {{#each model as |person|}}
1599
- <li>
1600
- {{link-to person.name 'item' person id=person.id}}
1601
- </li>
1602
- {{/each}}
1603
- </ul>
1604
- `
1605
- );
1606
- this.addTemplate(
1607
- 'item',
1608
- `
1609
- <h3 class="item">Item</h3>
1610
- <p>{{model.name}}</p>
1611
- {{#link-to 'index' id='home-link'}}Home{{/link-to}}
1612
- `
1613
- );
1614
-
1615
- return this.visit('/')
1616
- .then(() => {
1617
- return this.click('#yehuda');
1618
- })
1619
- .then(() => {
1620
- assert.equal(this.$('h3.item').length, 1, 'The item template was rendered');
1621
- assert.equal(this.$('p').text(), 'Yehuda Katz', 'The name is correct');
1622
-
1623
- return this.click('#home-link');
1624
- })
1625
- .then(() => {
1626
- assert.equal(normalizeUrl(this.$('li a#yehuda').attr('href')), '/item/yehuda');
1627
- assert.equal(normalizeUrl(this.$('li a#tom').attr('href')), '/item/tom');
1628
- assert.equal(normalizeUrl(this.$('li a#erik').attr('href')), '/item/erik');
1629
- });
1630
- }
1631
-
1632
- [`@test The non-block form {{link-to}} performs property lookup`](assert) {
1633
- this.router.map(function() {
1634
- this.route('about');
1635
- });
1636
-
1637
- this.addTemplate(
1638
- 'index',
1639
- `
1640
- {{link-to 'string' 'index' id='string-link'}}
1641
- {{link-to path foo id='path-link'}}
1642
- `
1643
- );
1644
-
1645
- this.add(
1646
- 'controller:index',
1647
- Controller.extend({
1648
- foo: 'index',
1649
- })
1650
- );
1651
-
1652
- return this.visit('/').then(() => {
1653
- let assertEquality = href => {
1654
- assert.equal(normalizeUrl(this.$('#string-link').attr('href')), '/');
1655
- assert.equal(normalizeUrl(this.$('#path-link').attr('href')), href);
1656
- };
1657
-
1658
- assertEquality('/');
1659
-
1660
- let controller = this.applicationInstance.lookup('controller:index');
1661
- this.runTask(() => controller.set('foo', 'about'));
1662
-
1663
- assertEquality('/about');
1664
- });
1665
- }
1666
-
1667
- [`@test The non-block form {{link-to}} protects against XSS`](assert) {
1668
- this.addTemplate('application', `{{link-to display 'index' id='link'}}`);
1669
-
1670
- this.add(
1671
- 'controller:application',
1672
- Controller.extend({
1673
- display: 'blahzorz',
1674
- })
1675
- );
1676
-
1677
- return this.visit('/').then(() => {
1678
- assert.equal(this.$('#link').text(), 'blahzorz');
1679
-
1680
- let controller = this.applicationInstance.lookup('controller:application');
1681
- this.runTask(() => controller.set('display', '<b>BLAMMO</b>'));
1682
-
1683
- assert.equal(this.$('#link').text(), '<b>BLAMMO</b>');
1684
- assert.equal(this.$('b').length, 0);
1685
- });
1686
- }
1687
-
1688
- [`@test the {{link-to}} helper throws a useful error if you invoke it wrong`](assert) {
1689
- assert.expect(1);
1690
-
1691
- this.router.map(function() {
1692
- this.route('post', { path: 'post/:post_id' });
1693
- });
1694
-
1695
- this.addTemplate('application', `{{#link-to 'post'}}Post{{/link-to}}`);
1696
-
1697
- assert.throws(() => {
1698
- this.visit('/');
1699
- }, /(You attempted to define a `\{\{link-to "post"\}\}` but did not pass the parameters required for generating its dynamic segments.|You must provide param `post_id` to `generate`)/);
1700
-
1701
- return this.runLoopSettled();
1702
- }
1703
-
1704
- [`@test the {{link-to}} helper does not throw an error if its route has exited`](assert) {
1705
- assert.expect(0);
1706
-
1707
- this.router.map(function() {
1708
- this.route('post', { path: 'post/:post_id' });
1709
- });
1710
-
1711
- this.addTemplate(
1712
- 'application',
1713
- `
1714
- {{#link-to 'index' id='home-link'}}Home{{/link-to}}
1715
- {{#link-to 'post' defaultPost id='default-post-link'}}Default Post{{/link-to}}
1716
- {{#if currentPost}}
1717
- {{#link-to 'post' currentPost id='current-post-link'}}Current Post{{/link-to}}
1718
- {{/if}}
1719
- `
1720
- );
1721
-
1722
- this.add(
1723
- 'controller:application',
1724
- Controller.extend({
1725
- defaultPost: { id: 1 },
1726
- postController: injectController('post'),
1727
- currentPost: alias('postController.model'),
1728
- })
1729
- );
1730
-
1731
- this.add('controller:post', Controller.extend());
1732
-
1733
- this.add(
1734
- 'route:post',
1735
- Route.extend({
1736
- model() {
1737
- return { id: 2 };
1738
- },
1739
- serialize(model) {
1740
- return { post_id: model.id };
1741
- },
1742
- })
1743
- );
1744
-
1745
- return this.visit('/')
1746
- .then(() => this.click('#default-post-link'))
1747
- .then(() => this.click('#home-link'))
1748
- .then(() => this.click('#current-post-link'))
1749
- .then(() => this.click('#home-link'));
1750
- }
1751
-
1752
- [`@test {{link-to}} active property respects changing parent route context`](assert) {
1753
- this.router.map(function() {
1754
- this.route('things', { path: '/things/:name' }, function() {
1755
- this.route('other');
1756
- });
1757
- });
1758
-
1759
- this.addTemplate(
1760
- 'application',
1761
- `
1762
- {{link-to 'OMG' 'things' 'omg' id='omg-link'}}
1763
- {{link-to 'LOL' 'things' 'lol' id='lol-link'}}
1764
- `
1765
- );
1766
-
1767
- return this.visit('/things/omg')
1768
- .then(() => {
1769
- shouldBeActive(assert, this.$('#omg-link'));
1770
- shouldNotBeActive(assert, this.$('#lol-link'));
1771
-
1772
- return this.visit('/things/omg/other');
1773
- })
1774
- .then(() => {
1775
- shouldBeActive(assert, this.$('#omg-link'));
1776
- shouldNotBeActive(assert, this.$('#lol-link'));
1777
- });
1778
- }
1779
-
1780
- [`@test {{link-to}} populates href with default query param values even without query-params object`](
1781
- assert
1782
- ) {
1783
- this.add(
1784
- 'controller:index',
1785
- Controller.extend({
1786
- queryParams: ['foo'],
1787
- foo: '123',
1788
- })
1789
- );
1790
-
1791
- this.addTemplate('index', `{{#link-to 'index' id='the-link'}}Index{{/link-to}}`);
1792
-
1793
- return this.visit('/').then(() => {
1794
- assert.equal(this.$('#the-link').attr('href'), '/', 'link has right href');
1795
- });
1796
- }
1797
-
1798
- [`@test {{link-to}} populates href with default query param values with empty query-params object`](
1799
- assert
1800
- ) {
1801
- this.add(
1802
- 'controller:index',
1803
- Controller.extend({
1804
- queryParams: ['foo'],
1805
- foo: '123',
1806
- })
1807
- );
1808
-
1809
- this.addTemplate(
1810
- 'index',
1811
- `
1812
- {{#link-to 'index' (query-params) id='the-link'}}Index{{/link-to}}
1813
- `
1814
- );
1815
-
1816
- return this.visit('/').then(() => {
1817
- assert.equal(this.$('#the-link').attr('href'), '/', 'link has right href');
1818
- });
1819
- }
1820
-
1821
- [`@test {{link-to}} with only query-params and a block updates when route changes`](assert) {
1822
- this.router.map(function() {
1823
- this.route('about');
1824
- });
1825
-
1826
- this.add(
1827
- 'controller:application',
1828
- Controller.extend({
1829
- queryParams: ['foo', 'bar'],
1830
- foo: '123',
1831
- bar: 'yes',
1832
- })
1833
- );
1834
-
1835
- this.addTemplate(
1836
- 'application',
1837
- `
1838
- {{#link-to (query-params foo='456' bar='NAW') id='the-link'}}Index{{/link-to}}
1839
- `
1840
- );
1841
-
1842
- return this.visit('/')
1843
- .then(() => {
1844
- assert.equal(
1845
- this.$('#the-link').attr('href'),
1846
- '/?bar=NAW&foo=456',
1847
- 'link has right href'
1848
- );
1849
-
1850
- return this.visit('/about');
1851
- })
1852
- .then(() => {
1853
- assert.equal(
1854
- this.$('#the-link').attr('href'),
1855
- '/about?bar=NAW&foo=456',
1856
- 'link has right href'
1857
- );
1858
- });
1859
- }
1860
-
1861
- [`@test Block-less {{link-to}} with only query-params updates when route changes`](assert) {
1862
- this.router.map(function() {
1863
- this.route('about');
1864
- });
1865
-
1866
- this.add(
1867
- 'controller:application',
1868
- Controller.extend({
1869
- queryParams: ['foo', 'bar'],
1870
- foo: '123',
1871
- bar: 'yes',
1872
- })
1873
- );
1874
-
1875
- this.addTemplate(
1876
- 'application',
1877
- `
1878
- {{link-to "Index" (query-params foo='456' bar='NAW') id='the-link'}}
1879
- `
1880
- );
1881
-
1882
- return this.visit('/')
1883
- .then(() => {
1884
- assert.equal(
1885
- this.$('#the-link').attr('href'),
1886
- '/?bar=NAW&foo=456',
1887
- 'link has right href'
1888
- );
1889
-
1890
- return this.visit('/about');
1891
- })
1892
- .then(() => {
1893
- assert.equal(
1894
- this.$('#the-link').attr('href'),
1895
- '/about?bar=NAW&foo=456',
1896
- 'link has right href'
1897
- );
1898
- });
1899
- }
1900
-
1901
- [`@test The {{link-to}} helper can use dynamic params`](assert) {
1902
- this.router.map(function() {
1903
- this.route('foo', { path: 'foo/:some/:thing' });
1904
- this.route('bar', { path: 'bar/:some/:thing/:else' });
1905
- });
1906
-
1907
- this.add(
1908
- 'controller:index',
1909
- Controller.extend({
1910
- init() {
1911
- this._super(...arguments);
1912
- this.dynamicLinkParams = ['foo', 'one', 'two'];
1913
- },
1914
- })
1915
- );
1916
-
1917
- this.addTemplate(
1918
- 'index',
1919
- `
1920
- <h3 class="home">Home</h3>
1921
- {{#link-to params=dynamicLinkParams id="dynamic-link"}}Dynamic{{/link-to}}
1922
- `
1923
- );
1924
-
1925
- return this.visit('/').then(() => {
1926
- let link = this.$('#dynamic-link');
1927
-
1928
- assert.equal(link.attr('href'), '/foo/one/two');
1929
-
1930
- let controller = this.applicationInstance.lookup('controller:index');
1931
- this.runTask(() => {
1932
- controller.set('dynamicLinkParams', ['bar', 'one', 'two', 'three']);
1933
- });
1934
-
1935
- assert.equal(link.attr('href'), '/bar/one/two/three');
1936
- });
1937
- }
1938
-
1939
- [`@test GJ: {{link-to}} to a parent root model hook which performs a 'transitionTo' has correct active class #13256`](
1940
- assert
1941
- ) {
1942
- assert.expect(1);
1943
-
1944
- this.router.map(function() {
1945
- this.route('parent', function() {
1946
- this.route('child');
1947
- });
1948
- });
1949
-
1950
- this.add(
1951
- 'route:parent',
1952
- Route.extend({
1953
- afterModel() {
1954
- this.transitionTo('parent.child');
1955
- },
1956
- })
1957
- );
1958
-
1959
- this.addTemplate(
1960
- 'application',
1961
- `
1962
- {{link-to 'Parent' 'parent' id='parent-link'}}
1963
- `
1964
- );
1965
-
1966
- return this.visit('/')
1967
- .then(() => {
1968
- return this.click('#parent-link');
1969
- })
1970
- .then(() => {
1971
- shouldBeActive(assert, this.$('#parent-link'));
1972
- });
1973
- }
1974
- }
1975
- );
1976
-
1977
- moduleFor(
1978
- 'The {{link-to}} helper - loading states and warnings',
1979
- class extends ApplicationTestCase {
1980
- [`@test link-to with null/undefined dynamic parameters are put in a loading state`](assert) {
1981
- assert.expect(19);
1982
- let warningMessage =
1983
- 'This link-to is in an inactive loading state because at least one of its parameters presently has a null/undefined value, or the provided route name is invalid.';
1984
-
1985
- this.router.map(function() {
1986
- this.route('thing', { path: '/thing/:thing_id' });
1987
- this.route('about');
1988
- });
1989
-
1990
- this.addTemplate(
1991
- 'index',
1992
- `
1993
- {{#link-to destinationRoute routeContext loadingClass='i-am-loading' id='context-link'}}
1994
- string
1995
- {{/link-to}}
1996
- {{#link-to secondRoute loadingClass=loadingClass id='static-link'}}
1997
- string
1998
- {{/link-to}}
1999
- `
2000
- );
2001
-
2002
- this.add(
2003
- 'controller:index',
2004
- Controller.extend({
2005
- destinationRoute: null,
2006
- routeContext: null,
2007
- loadingClass: 'i-am-loading',
2008
- })
2009
- );
2010
-
2011
- this.add(
2012
- 'route:about',
2013
- Route.extend({
2014
- activate() {
2015
- assert.ok(true, 'About was entered');
2016
- },
2017
- })
2018
- );
2019
-
2020
- function assertLinkStatus(link, url) {
2021
- if (url) {
2022
- assert.equal(normalizeUrl(link.attr('href')), url, 'loaded link-to has expected href');
2023
- assert.ok(!link.hasClass('i-am-loading'), 'loaded linkComponent has no loadingClass');
2024
- } else {
2025
- assert.equal(normalizeUrl(link.attr('href')), '#', "unloaded link-to has href='#'");
2026
- assert.ok(link.hasClass('i-am-loading'), 'loading linkComponent has loadingClass');
2027
- }
2028
- }
2029
-
2030
- let contextLink, staticLink, controller;
2031
-
2032
- return this.visit('/')
2033
- .then(() => {
2034
- contextLink = this.$('#context-link');
2035
- staticLink = this.$('#static-link');
2036
- controller = this.applicationInstance.lookup('controller:index');
2037
-
2038
- assertLinkStatus(contextLink);
2039
- assertLinkStatus(staticLink);
2040
-
2041
- return expectWarning(() => {
2042
- return this.click(contextLink[0]);
2043
- }, warningMessage);
2044
- })
2045
- .then(() => {
2046
- // Set the destinationRoute (context is still null).
2047
- this.runTask(() => controller.set('destinationRoute', 'thing'));
2048
- assertLinkStatus(contextLink);
2049
-
2050
- // Set the routeContext to an id
2051
- this.runTask(() => controller.set('routeContext', '456'));
2052
- assertLinkStatus(contextLink, '/thing/456');
2053
-
2054
- // Test that 0 isn't interpreted as falsy.
2055
- this.runTask(() => controller.set('routeContext', 0));
2056
- assertLinkStatus(contextLink, '/thing/0');
2057
-
2058
- // Set the routeContext to an object
2059
- this.runTask(() => {
2060
- controller.set('routeContext', { id: 123 });
2061
- });
2062
- assertLinkStatus(contextLink, '/thing/123');
2063
-
2064
- // Set the destinationRoute back to null.
2065
- this.runTask(() => controller.set('destinationRoute', null));
2066
- assertLinkStatus(contextLink);
2067
-
2068
- return expectWarning(() => {
2069
- return this.click(staticLink[0]);
2070
- }, warningMessage);
2071
- })
2072
- .then(() => {
2073
- this.runTask(() => controller.set('secondRoute', 'about'));
2074
- assertLinkStatus(staticLink, '/about');
2075
-
2076
- // Click the now-active link
2077
- return this.click(staticLink[0]);
2078
- });
2079
- }
2080
- }
2081
- );
2082
-
2083
- function assertNav(options, callback, assert) {
2084
- let nav = false;
2085
-
2086
- function check(event) {
2087
- assert.equal(
2088
- event.defaultPrevented,
2089
- options.prevented,
2090
- `expected defaultPrevented=${options.prevented}`
2091
- );
2092
- nav = true;
2093
- event.preventDefault();
2094
- }
2095
-
2096
- try {
2097
- document.addEventListener('click', check);
2098
- callback();
2099
- } finally {
2100
- document.removeEventListener('click', check);
2101
- assert.ok(nav, 'Expected a link to be clicked');
2102
- }
2103
- }