discourse-ember-source 3.5.1.1 → 3.5.1.2

Sign up to get free protection for your applications and to get access to all the features.
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
- }