Skip to content

Commit baa459b

Browse files
committed
[CLEANUP] Remove old code that supported old ember-test-helpers
The actual behavior change was marked with an intimate deprecation and has aged out. The actual versions of ember-test-helpers affected seems to be around <= 3.2.0, which should be fully absorbed by now. The other changes to `OutletState` doesn't actually change behavior, those fields were mostly just kept around assuming we are keeping this code frozen and to be deleted soon, so they documented what those were on the off chance that someone came into look. Now that it looks like this code may be here to stay for a bit longer, it's worth cleaning it up to make things less confusing for core devs. Follow-up to #20570
1 parent cc5db96 commit baa459b

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)