jw-ng-forward
Version:
Temporary package. The default solution for those that want to write Angular 2.x style code in Angular 1.x
96 lines (95 loc) • 4.44 kB
JavaScript
;
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var angular = __importStar(require("angular"));
var bundle_1 = require("../bundle");
var component_1 = require("../decorators/component");
var writers_1 = require("../writers");
var providers_1 = require("./providers");
var TestComponentBuilder = (function () {
function TestComponentBuilder() {
}
TestComponentBuilder.prototype.create = function (rootComponent) {
var decoratedModule = bundle_1.bundle('test.module', rootComponent);
angular.mock.module(decoratedModule.name);
angular.mock.module(function ($provide) {
return providers_1.allProviders().forEach(function (_a) {
var token = _a.token, useValue = _a.useValue;
return $provide.value(token, useValue);
});
});
var fixture = compileComponent(rootComponent);
providers_1.clearProviders();
return fixture;
};
TestComponentBuilder.prototype.createAsync = function (rootComponent) {
var fixture = this.create(rootComponent);
return Promise.resolve(fixture);
};
TestComponentBuilder.prototype.overrideTemplate = function (component, template) {
writers_1.componentStore.set('template', template, component);
return this;
};
TestComponentBuilder.prototype.overrideProviders = function (component, providers) {
writers_1.bundleStore.set('providers', providers, component);
return this;
};
TestComponentBuilder.prototype.overrideView = function (component, config) {
component_1.View(config)(component);
return this;
};
TestComponentBuilder.prototype.overrideDirective = function () { throw new Error('Method not supported in ng-forward.'); };
TestComponentBuilder.prototype.overrideViewBindings = function () { throw new Error('Method not supported in ng-forward.'); };
return TestComponentBuilder;
}());
exports.TestComponentBuilder = TestComponentBuilder;
var ComponentFixture = (function () {
function ComponentFixture(_a) {
var debugElement = _a.debugElement, rootTestScope = _a.rootTestScope, $injector = _a.$injector;
this.debugElement = debugElement;
this.debugElement.data('$injector', $injector);
this.componentInstance = debugElement.componentInstance;
this.nativeElement = debugElement.nativeElement;
this.rootTestScope = rootTestScope;
}
ComponentFixture.prototype.detectChanges = function () {
this.rootTestScope.$digest();
};
return ComponentFixture;
}());
exports.ComponentFixture = ComponentFixture;
function compileComponent(ComponentClass) {
var selector = writers_1.bundleStore.get('selector', ComponentClass), rootTestScope, debugElement, componentInstance, $injector;
inject(function ($compile, $rootScope, _$injector_) {
var controllerAs = writers_1.componentStore.get('controllerAs', ComponentClass);
componentInstance = new ComponentClass();
rootTestScope = $rootScope.$new();
debugElement = angular.element("<" + selector + "></" + selector + ">");
debugElement = $compile(debugElement)(rootTestScope);
rootTestScope.$digest();
$injector = _$injector_;
});
return new ComponentFixture({ debugElement: debugElement, rootTestScope: rootTestScope, $injector: $injector });
}
exports.compileComponent = compileComponent;
function compileHtmlAndScope(_a) {
var html = _a.html, initialScope = _a.initialScope, selector = _a.selector;
var parentScope, element, controller, isolateScope;
inject(function ($compile, $rootScope) {
parentScope = $rootScope.$new();
Object.assign(parentScope, initialScope);
element = angular.element(html);
element = $compile(element)(parentScope);
parentScope.$digest();
isolateScope = element.isolateScope();
controller = element.controller("" + selector);
});
return { parentScope: parentScope, element: element, controller: controller, isolateScope: isolateScope };
}
exports.compileHtmlAndScope = compileHtmlAndScope;