55 * and renderToHTML support for server-side rendering tests.
66 */
77import SimpleDOM from 'simple-dom' ;
8- import { loadEmber , clearEmber } from './load-ember.mjs' ;
8+ import Application from 'ember-source/@ember/application/index.js' ;
9+ import Component from 'ember-source/@ember/component/index.js' ;
10+ import { setComponentTemplate } from 'ember-source/@ember/component/index.js' ;
11+ import templateOnly from 'ember-source/@ember/component/template-only.js' ;
12+ import Controller from 'ember-source/@ember/controller/index.js' ;
13+ import EmberObject from 'ember-source/@ember/object/index.js' ;
14+ import Route from 'ember-source/@ember/routing/route.js' ;
15+ import EmberRouter from 'ember-source/@ember/routing/router.js' ;
16+ import { service } from 'ember-source/@ember/service/index.js' ;
17+ import { run } from 'ember-source/@ember/runloop/index.js' ;
18+ import RSVP from 'ember-source/@ember/-internals/runtime/lib/ext/rsvp.js' ;
19+ import { setTesting } from 'ember-source/@ember/debug/lib/testing.js' ;
20+ import { precompile } from 'ember-source/ember-template-compiler/index.js' ;
21+ import { createTemplateFactory } from 'ember-source/@ember/template-factory/index.js' ;
22+
23+ function compile ( templateString , options ) {
24+ let templateSpec = precompile ( templateString , options ) ;
25+ return createTemplateFactory ( JSON . parse ( templateSpec ) ) ;
26+ }
927
1028export async function createAppContext ( ) {
11- const { Ember, compile } = await loadEmber ( ) ;
12-
13- Ember . testing = true ;
29+ setTesting ( true ) ;
1430
1531 const ctx = {
16- Ember,
1732 compile,
18- setComponentTemplate : Ember . _setComponentTemplate ,
19- templateOnlyComponent : Ember . _templateOnlyComponent ,
20- run : Ember . run ,
21- all : Ember . RSVP . all ,
33+ setComponentTemplate,
34+ templateOnlyComponent : templateOnly ,
35+ run,
36+ all : RSVP . all . bind ( RSVP ) ,
2237 registry : { } ,
2338 routesCallback : null ,
2439 app : null ,
@@ -36,27 +51,27 @@ export async function createAppContext() {
3651 let component = ctx . setComponentTemplate (
3752 ctx . compile ( templateContents ) ,
3853 componentProps
39- ? ctx . Ember . Component . extend ( componentProps )
54+ ? Component . extend ( componentProps )
4055 : ctx . templateOnlyComponent ( )
4156 ) ;
4257 ctx . register ( 'component:' + name , component ) ;
4358 } ;
4459
4560 ctx . controller = function ( name , controllerProps ) {
46- let controller = ctx . Ember . Controller . extend ( controllerProps ) ;
61+ let controller = Controller . extend ( controllerProps ) ;
4762 ctx . register ( 'controller:' + name , controller ) ;
4863 } ;
4964
5065 ctx . route = function ( name , routeProps ) {
51- let route = ctx . Ember . Route . extend ( {
52- router : ctx . Ember . inject . service ( 'router' ) ,
66+ let route = Route . extend ( {
67+ router : service ( 'router' ) ,
5368 ...routeProps ,
5469 } ) ;
5570 ctx . register ( 'route:' + name , route ) ;
5671 } ;
5772
5873 ctx . service = function ( name , serviceProps ) {
59- let service = ctx . Ember . Object . extend ( serviceProps ) ;
74+ let service = EmberObject . extend ( serviceProps ) ;
6075 ctx . register ( 'service:' + name , service ) ;
6176 } ;
6277
@@ -67,20 +82,16 @@ export async function createAppContext() {
6782 ctx . createApplication = function ( ) {
6883 if ( ctx . app ) return ctx . app ;
6984
70- let app = class extends ctx . Ember . Application { } . create ( {
85+ let app = class extends Application { } . create ( {
7186 autoboot : false ,
7287 Resolver : {
7388 create : ( ) => {
74- // Return an object without a resolve() method.
75- // Ember's registry checks `if (registry.resolver)` before calling
76- // resolver.resolve(), so returning null makes it skip the resolver
77- // path entirely. All lookups go through app.register() instead.
7889 return null ;
7990 } ,
8091 } ,
8192 } ) ;
8293
83- let Router = class extends ctx . Ember . Router {
94+ let Router = class extends EmberRouter {
8495 location = 'none' ;
8596 } ;
8697
@@ -100,7 +111,7 @@ export async function createAppContext() {
100111 } ,
101112 } ) ;
102113
103- ctx . run ( app , 'boot' ) ;
114+ run ( app , 'boot' ) ;
104115 ctx . app = app ;
105116
106117 return app ;
@@ -110,7 +121,7 @@ export async function createAppContext() {
110121 let app = ctx . createApplication ( ) ;
111122 let dom = new SimpleDOM . Document ( ) ;
112123
113- return ctx . run ( app , 'visit' , url , {
124+ return run ( app , 'visit' , url , {
114125 isBrowser : false ,
115126 document : dom ,
116127 rootElement : dom . body ,
@@ -124,7 +135,7 @@ export async function createAppContext() {
124135 let dom = new SimpleDOM . Document ( ) ;
125136 let root = dom . body ;
126137
127- return ctx . run ( app , 'visit' , url , {
138+ return run ( app , 'visit' , url , {
128139 isBrowser : false ,
129140 document : dom ,
130141 rootElement : root ,
@@ -136,9 +147,9 @@ export async function createAppContext() {
136147
137148 ctx . destroy = function ( ) {
138149 if ( ctx . app ) {
139- ctx . run ( ctx . app , 'destroy' ) ;
150+ run ( ctx . app , 'destroy' ) ;
140151 }
141- clearEmber ( ) ;
152+ setTesting ( false ) ;
142153 } ;
143154
144155 return ctx ;
0 commit comments