Skip to content

Commit d58ceec

Browse files
authored
Merge pull request #20798 from emberjs/cleanup-named-outlets
[CLEANUP] Remove old code that supported old ember-test-helpers
2 parents cc5db96 + baa459b commit d58ceec

File tree

7 files changed

+2
-231
lines changed

7 files changed

+2
-231
lines changed

packages/@ember/-internals/glimmer/lib/syntax/outlet.ts

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { InternalOwner } from '@ember/-internals/owner';
2-
import { assert, deprecate } from '@ember/debug';
2+
import { assert } from '@ember/debug';
33
import { DEBUG } from '@glimmer/env';
44
import type { CapturedArguments, DynamicScope } from '@glimmer/interfaces';
55
import { CurriedType } from '@glimmer/vm';
@@ -17,7 +17,6 @@ import type { OutletDefinitionState } from '../component-managers/outlet';
1717
import { OutletComponentDefinition } from '../component-managers/outlet';
1818
import { internalHelper } from '../helpers/internal-helper';
1919
import type { OutletState } from '../utils/outlet';
20-
import { isTemplateFactory } from '../template';
2120

2221
/**
2322
The `{{outlet}}` helper lets you specify where a child route will render in
@@ -121,40 +120,6 @@ function stateFor(
121120
let template = render.template;
122121
if (template === undefined) return null;
123122

124-
if (isTemplateFactory(template)) {
125-
template = template(render.owner);
126-
127-
if (DEBUG) {
128-
let message =
129-
'The `template` property of `OutletState` should be a ' +
130-
'`Template` rather than a `TemplateFactory`. This is known to be a ' +
131-
"problem in older versions of `@ember/test-helpers`. If you haven't " +
132-
'done so already, try upgrading to the latest version.\n\n';
133-
134-
if (template.result === 'ok' && typeof template.moduleName === 'string') {
135-
message +=
136-
'The offending template has a moduleName `' +
137-
template.moduleName +
138-
'`, which might be helpful for identifying ' +
139-
'source of this issue.\n\n';
140-
}
141-
142-
message +=
143-
'Please note that `OutletState` is a private API in Ember.js ' +
144-
"and not meant to be used outside of the framework's internal code.";
145-
146-
deprecate(message, false, {
147-
id: 'outlet-state-template-factory',
148-
until: '5.9.0',
149-
for: 'ember-source',
150-
since: {
151-
available: '5.6.0',
152-
enabled: '5.6.0',
153-
},
154-
});
155-
}
156-
}
157-
158123
return {
159124
ref,
160125
name: render.name,
Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,6 @@
11
import type { InternalOwner } from '@ember/-internals/owner';
22
import type { Template } from '@glimmer/interfaces';
33

4-
// Note: a lot of these does not make sense anymore. This design was from back
5-
// when we supported "named outlets", where a route can do:
6-
//
7-
// this.renderTemplate("some-template", {
8-
// into: 'some-parent-route',
9-
// outlet: 'some-name' /* {{outlet "some-name"}} */ | undefined /* {{outlet}} */,
10-
// controller: 'some-controller' | SomeController,
11-
// model: { ... },
12-
// });
13-
//
14-
// And interface reflects that. Now that this is not supported anymore, each
15-
// route implicitly renders into its immediate parent's `{{outlet}}` (no name).
16-
// Keeping around most of these to their appropriately hardcoded values for the
17-
// time being to minimize churn for external consumers, as we are about to rip
18-
// all of it out anyway.
19-
204
export interface RenderState {
215
/**
226
* This is usually inherited from the parent (all the way up to the app
@@ -25,18 +9,6 @@ export interface RenderState {
259
*/
2610
owner: InternalOwner;
2711

28-
/**
29-
* @deprecated This used to specify "which parent route to render into",
30-
* which is not a thing anymore.
31-
*/
32-
into: undefined;
33-
34-
/**
35-
* @deprecated This used to specify "which named outlet in the parent
36-
* template to render into", which is not a thing anymore.
37-
*/
38-
outlet: 'main';
39-
4012
/**
4113
* The name of the route/template
4214
*/
@@ -53,7 +25,7 @@ export interface RenderState {
5325
model: unknown;
5426

5527
/**
56-
* template (the layout of the outlet component)
28+
* The template (the route template to use in the {{outlet}})
5729
*/
5830
template: Template | undefined;
5931
}
@@ -75,22 +47,4 @@ export interface OutletState {
7547
outlets: {
7648
main: OutletState | undefined;
7749
};
78-
79-
/**
80-
* @deprecated
81-
*
82-
* This tracks whether this outlet state actually made it onto the page
83-
* somewhere. This was more of a problem when you can declare named outlets
84-
* left and right, and anything can render into anywhere else. We want to
85-
* warn users when you tried to render into somewhere that does not exist,
86-
* but we don't know what named outlets exists until after we have rendered
87-
* everything, so this was used to track these orphan renders.
88-
*
89-
* This can still happen, if, according to the router, a route is active and
90-
* so its template should be rendered, but the parent template is missing the
91-
* `{{outlet}}` keyword, or that it was hidden by an `{{#if}}` or something.
92-
* I guess that is considered valid, because nothing checks for this anymore.
93-
* seems valid for the parent to decide not to render a child template?
94-
*/
95-
wasUsed?: undefined;
9650
}

packages/@ember/-internals/glimmer/lib/views/outlet.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ export default class OutletView {
6767
outlets: { main: undefined },
6868
render: {
6969
owner: owner,
70-
into: undefined,
71-
outlet: 'main',
7270
name: TOP_LEVEL_NAME,
7371
controller: undefined,
7472
model: undefined,

packages/@ember/-internals/glimmer/tests/integration/outlet-test.js

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ moduleFor(
1616
let outletState = {
1717
render: {
1818
owner: this.owner,
19-
into: undefined,
20-
outlet: 'main',
2119
name: 'application',
2220
controller: undefined,
2321
template: undefined,
@@ -37,8 +35,6 @@ moduleFor(
3735
let outletState = {
3836
render: {
3937
owner: this.owner,
40-
into: undefined,
41-
outlet: 'main',
4238
name: 'application',
4339
controller: undefined,
4440
template: undefined,
@@ -57,8 +53,6 @@ moduleFor(
5753
outletState = {
5854
render: {
5955
owner: this.owner,
60-
into: undefined,
61-
outlet: 'main',
6256
name: 'application',
6357
controller: {},
6458
template: this.owner.lookup('template:application')(this.owner),
@@ -76,8 +70,6 @@ moduleFor(
7670
outletState.outlets.main = {
7771
render: {
7872
owner: this.owner,
79-
into: undefined,
80-
outlet: 'main',
8173
name: 'index',
8274
controller: {},
8375
template: this.owner.lookup('template:index')(this.owner),
@@ -95,8 +87,6 @@ moduleFor(
9587
let outletState = {
9688
render: {
9789
owner: this.owner,
98-
into: undefined,
99-
outlet: 'main',
10090
name: 'application',
10191
controller: {},
10292
template: this.owner.lookup('template:application')(this.owner),
@@ -116,8 +106,6 @@ moduleFor(
116106
outletState.outlets.main = {
117107
render: {
118108
owner: this.owner,
119-
into: undefined,
120-
outlet: 'main',
121109
name: 'index',
122110
controller: {},
123111
template: this.owner.lookup('template:index')(this.owner),
@@ -146,8 +134,6 @@ moduleFor(
146134
let outletState = {
147135
render: {
148136
owner: this.owner,
149-
into: undefined,
150-
outlet: 'main',
151137
name: 'outer',
152138
controller: {},
153139
template: this.owner.lookup('template:outer')(this.owner),
@@ -156,8 +142,6 @@ moduleFor(
156142
main: {
157143
render: {
158144
owner: this.owner,
159-
into: undefined,
160-
outlet: 'main',
161145
name: 'inner',
162146
controller: {},
163147
template: this.owner.lookup('template:inner')(this.owner),

packages/@ember/routing/route.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1842,8 +1842,6 @@ function buildRenderState(route: Route): RenderState {
18421842

18431843
let render: RenderState = {
18441844
owner,
1845-
into: undefined,
1846-
outlet: 'main',
18471845
name,
18481846
controller,
18491847
model,

packages/ember/tests/ember-test-helpers-test.js

Lines changed: 0 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,6 @@ module('@ember/test-helpers emulation test', function () {
8585
let outletState = {
8686
render: {
8787
owner,
88-
into: undefined,
89-
outlet: 'main',
9088
name: 'application',
9189
controller: undefined,
9290
ViewClass: undefined,
@@ -97,8 +95,6 @@ module('@ember/test-helpers emulation test', function () {
9795
main: {
9896
render: {
9997
owner,
100-
into: undefined,
101-
outlet: 'main',
10298
name: 'index',
10399
controller: context,
104100
ViewClass: undefined,
@@ -138,124 +134,4 @@ module('@ember/test-helpers emulation test', function () {
138134
});
139135
});
140136
});
141-
142-
module('v1.6.0', function () {
143-
let EMPTY_TEMPLATE = compile('');
144-
145-
function settled() {
146-
return new Promise(function (resolve) {
147-
let watcher = setInterval(() => {
148-
if (_getCurrentRunLoop() || _hasScheduledTimers()) {
149-
return;
150-
}
151-
152-
// Stop polling
153-
clearInterval(watcher);
154-
155-
// Synchronously resolve the promise
156-
run(null, resolve);
157-
}, 10);
158-
});
159-
}
160-
161-
async function setupContext(context) {
162-
// condensed version of https://github.com/emberjs/ember-test-helpers/blob/v1.6.0/addon-test-support/%40ember/test-helpers/build-owner.ts#L38
163-
// without support for "custom resolver"
164-
await context.application.boot();
165-
166-
context.owner = await context.application.buildInstance().boot();
167-
}
168-
169-
function setupRenderingContext(context) {
170-
let { owner } = context;
171-
let OutletView = owner.factoryFor('view:-outlet');
172-
let environment = owner.lookup('-environment:main');
173-
let outletTemplateFactory = owner.lookup('template:-outlet');
174-
let toplevelView = OutletView.create({ environment, template: outletTemplateFactory });
175-
176-
owner.register('-top-level-view:main', {
177-
create() {
178-
return toplevelView;
179-
},
180-
});
181-
182-
// initially render a simple empty template
183-
return render(EMPTY_TEMPLATE, context).then(() => {
184-
let rootElement = document.querySelector(owner.rootElement);
185-
run(toplevelView, 'appendTo', rootElement);
186-
187-
context.element = rootElement;
188-
189-
return settled();
190-
});
191-
}
192-
193-
let templateId = 0;
194-
function render(template, context) {
195-
let { owner } = context;
196-
let toplevelView = owner.lookup('-top-level-view:main');
197-
templateId += 1;
198-
let templateFullName = `template:-undertest-${templateId}`;
199-
owner.register(templateFullName, template);
200-
201-
let outletState = {
202-
render: {
203-
owner,
204-
into: undefined,
205-
outlet: 'main',
206-
name: 'application',
207-
controller: undefined,
208-
ViewClass: undefined,
209-
template: owner.lookup('template:-outlet'),
210-
},
211-
212-
outlets: {
213-
main: {
214-
render: {
215-
owner,
216-
into: undefined,
217-
outlet: 'main',
218-
name: 'index',
219-
controller: context,
220-
ViewClass: undefined,
221-
template: owner.lookup(templateFullName),
222-
outlets: {},
223-
},
224-
outlets: {},
225-
},
226-
},
227-
};
228-
toplevelView.setOutletState(outletState);
229-
230-
return settled();
231-
}
232-
233-
module('setupRenderingContext', function (hooks) {
234-
hooks.beforeEach(async function () {
235-
expectDeprecation(
236-
/The `template` property of `OutletState` should be a `Template` rather than a `TemplateFactory`/
237-
);
238-
239-
this.application = Application.create({
240-
rootElement: '#qunit-fixture',
241-
autoboot: false,
242-
Resolver: ModuleBasedTestResolver,
243-
});
244-
245-
await setupContext(this);
246-
await setupRenderingContext(this);
247-
});
248-
249-
hooks.afterEach(function () {
250-
run(this.owner, 'destroy');
251-
run(this.application, 'destroy');
252-
});
253-
254-
test('it basically works', async function (assert) {
255-
await render(compile('Hi!'), this);
256-
257-
assert.equal(this.element.textContent, 'Hi!');
258-
});
259-
});
260-
});
261137
});

tests/node/helpers/setup-component.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@ function setupComponentTest() {
5353
this._outletState = {
5454
render: {
5555
owner: module.owner || undefined,
56-
into: undefined,
57-
outlet: 'main',
5856
name: 'application',
5957
controller: module,
6058
model: undefined,
@@ -83,8 +81,6 @@ function render(_template) {
8381

8482
let stateToRender = {
8583
owner: this.owner,
86-
into: undefined,
87-
outlet: 'main',
8884
name: 'index',
8985
controller: this,
9086
model: undefined,

0 commit comments

Comments
 (0)