From 3f46b8b8a4190fa76583e11968eb6a6aa193d437 Mon Sep 17 00:00:00 2001 From: simonihmig Date: Thu, 30 Nov 2017 23:58:59 +0100 Subject: [PATCH] [BUGFIX beta] Fix link-to throwing in integration tests Fixes #15831 Fixes a regression introduced by #15788 by returning early again from `routing.generateURL()` when `router._routerMicrolib` is not present. --- .../tests/integration/components/link-to-test.js | 16 +++++++++++++++- packages/ember-routing/lib/services/routing.js | 6 +++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/ember-glimmer/tests/integration/components/link-to-test.js b/packages/ember-glimmer/tests/integration/components/link-to-test.js index 9811d7c64b1..fd02b65e685 100644 --- a/packages/ember-glimmer/tests/integration/components/link-to-test.js +++ b/packages/ember-glimmer/tests/integration/components/link-to-test.js @@ -1,4 +1,4 @@ -import { moduleFor, ApplicationTest } from '../../utils/test-case'; +import { moduleFor, ApplicationTest, RenderingTest } from '../../utils/test-case'; import { Controller } from 'ember-runtime'; import { set } from 'ember-metal'; import { LinkComponent } from '../../utils/helpers'; @@ -176,3 +176,17 @@ moduleFor('Link-to component with query-params', class extends ApplicationTest { }); } }); + +moduleFor('Link-to component', class extends RenderingTest { + ['@test should be able to be inserted in DOM when the router is not present - block']() { + this.render('{{#link-to \'index\'}}Go to Index{{/link-to}}'); + + this.assertText('Go to Index'); + } + + ['@test should be able to be inserted in DOM when the router is not present - inline']() { + this.render(`{{link-to 'Go to Index' 'index'}}`); + + this.assertText('Go to Index'); + } +}); \ No newline at end of file diff --git a/packages/ember-routing/lib/services/routing.js b/packages/ember-routing/lib/services/routing.js index 53628afa91b..0453c0b8277 100644 --- a/packages/ember-routing/lib/services/routing.js +++ b/packages/ember-routing/lib/services/routing.js @@ -48,13 +48,17 @@ export default Service.extend({ }, generateURL(routeName, models, queryParams) { + let router = get(this, 'router'); + // return early when the router microlib is not present, which is the case for {{link-to}} in integration tests + if (!router._routerMicrolib) { return; } + let visibleQueryParams = {}; if (queryParams) { assign(visibleQueryParams, queryParams); this.normalizeQueryParams(routeName, models, visibleQueryParams); } - return get(this, 'router').generate(routeName, ...models, { queryParams: visibleQueryParams }); + return router.generate(routeName, ...models, { queryParams: visibleQueryParams }); }, isActiveForRoute(contexts, queryParams, routeName, routerState, isCurrentWhenSpecified) {