@angular/common
Version:
Angular - commonly needed directives and services
438 lines (427 loc) • 13.1 kB
JavaScript
/**
* @license Angular v5.2.11
* (c) 2010-2018 Google, Inc. https://angular.io/
* License: MIT
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common')) :
typeof define === 'function' && define.amd ? define('@angular/common/testing', ['exports', '@angular/core', '@angular/common'], factory) :
(factory((global.ng = global.ng || {}, global.ng.common = global.ng.common || {}, global.ng.common.testing = {}),global.ng.core,global.ng.common));
}(this, (function (exports,_angular_core,_angular_common) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
/**
* @license Angular v5.2.11
* (c) 2010-2018 Google, Inc. https://angular.io/
* License: MIT
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
/**
* A spy for {\@link Location} that allows tests to fire simulated location events.
*
* \@experimental
*/
var SpyLocation = /** @class */ (function () {
function SpyLocation() {
this.urlChanges = [];
this._history = [new LocationState('', '')];
this._historyIndex = 0;
/**
* \@internal
*/
this._subject = new _angular_core.EventEmitter();
/**
* \@internal
*/
this._baseHref = '';
/**
* \@internal
*/
this._platformStrategy = /** @type {?} */ ((null));
}
/**
* @param {?} url
* @return {?}
*/
SpyLocation.prototype.setInitialPath = /**
* @param {?} url
* @return {?}
*/
function (url) { this._history[this._historyIndex].path = url; };
/**
* @param {?} url
* @return {?}
*/
SpyLocation.prototype.setBaseHref = /**
* @param {?} url
* @return {?}
*/
function (url) { this._baseHref = url; };
/**
* @return {?}
*/
SpyLocation.prototype.path = /**
* @return {?}
*/
function () { return this._history[this._historyIndex].path; };
/**
* @param {?} path
* @param {?=} query
* @return {?}
*/
SpyLocation.prototype.isCurrentPathEqualTo = /**
* @param {?} path
* @param {?=} query
* @return {?}
*/
function (path, query) {
if (query === void 0) { query = ''; }
var /** @type {?} */ givenPath = path.endsWith('/') ? path.substring(0, path.length - 1) : path;
var /** @type {?} */ currPath = this.path().endsWith('/') ? this.path().substring(0, this.path().length - 1) : this.path();
return currPath == givenPath + (query.length > 0 ? ('?' + query) : '');
};
/**
* @param {?} pathname
* @return {?}
*/
SpyLocation.prototype.simulateUrlPop = /**
* @param {?} pathname
* @return {?}
*/
function (pathname) {
this._subject.emit({ 'url': pathname, 'pop': true, 'type': 'popstate' });
};
/**
* @param {?} pathname
* @return {?}
*/
SpyLocation.prototype.simulateHashChange = /**
* @param {?} pathname
* @return {?}
*/
function (pathname) {
// Because we don't prevent the native event, the browser will independently update the path
this.setInitialPath(pathname);
this.urlChanges.push('hash: ' + pathname);
this._subject.emit({ 'url': pathname, 'pop': true, 'type': 'hashchange' });
};
/**
* @param {?} url
* @return {?}
*/
SpyLocation.prototype.prepareExternalUrl = /**
* @param {?} url
* @return {?}
*/
function (url) {
if (url.length > 0 && !url.startsWith('/')) {
url = '/' + url;
}
return this._baseHref + url;
};
/**
* @param {?} path
* @param {?=} query
* @return {?}
*/
SpyLocation.prototype.go = /**
* @param {?} path
* @param {?=} query
* @return {?}
*/
function (path, query) {
if (query === void 0) { query = ''; }
path = this.prepareExternalUrl(path);
if (this._historyIndex > 0) {
this._history.splice(this._historyIndex + 1);
}
this._history.push(new LocationState(path, query));
this._historyIndex = this._history.length - 1;
var /** @type {?} */ locationState = this._history[this._historyIndex - 1];
if (locationState.path == path && locationState.query == query) {
return;
}
var /** @type {?} */ url = path + (query.length > 0 ? ('?' + query) : '');
this.urlChanges.push(url);
this._subject.emit({ 'url': url, 'pop': false });
};
/**
* @param {?} path
* @param {?=} query
* @return {?}
*/
SpyLocation.prototype.replaceState = /**
* @param {?} path
* @param {?=} query
* @return {?}
*/
function (path, query) {
if (query === void 0) { query = ''; }
path = this.prepareExternalUrl(path);
var /** @type {?} */ history = this._history[this._historyIndex];
if (history.path == path && history.query == query) {
return;
}
history.path = path;
history.query = query;
var /** @type {?} */ url = path + (query.length > 0 ? ('?' + query) : '');
this.urlChanges.push('replace: ' + url);
};
/**
* @return {?}
*/
SpyLocation.prototype.forward = /**
* @return {?}
*/
function () {
if (this._historyIndex < (this._history.length - 1)) {
this._historyIndex++;
this._subject.emit({ 'url': this.path(), 'pop': true });
}
};
/**
* @return {?}
*/
SpyLocation.prototype.back = /**
* @return {?}
*/
function () {
if (this._historyIndex > 0) {
this._historyIndex--;
this._subject.emit({ 'url': this.path(), 'pop': true });
}
};
/**
* @param {?} onNext
* @param {?=} onThrow
* @param {?=} onReturn
* @return {?}
*/
SpyLocation.prototype.subscribe = /**
* @param {?} onNext
* @param {?=} onThrow
* @param {?=} onReturn
* @return {?}
*/
function (onNext, onThrow, onReturn) {
return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });
};
/**
* @param {?} url
* @return {?}
*/
SpyLocation.prototype.normalize = /**
* @param {?} url
* @return {?}
*/
function (url) { return /** @type {?} */ ((null)); };
SpyLocation.decorators = [
{ type: _angular_core.Injectable },
];
/** @nocollapse */
SpyLocation.ctorParameters = function () { return []; };
return SpyLocation;
}());
var LocationState = /** @class */ (function () {
function LocationState(path, query) {
this.path = path;
this.query = query;
}
return LocationState;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
/**
* A mock implementation of {\@link LocationStrategy} that allows tests to fire simulated
* location events.
*
* \@stable
*/
var MockLocationStrategy = /** @class */ (function (_super) {
__extends(MockLocationStrategy, _super);
function MockLocationStrategy() {
var _this = _super.call(this) || this;
_this.internalBaseHref = '/';
_this.internalPath = '/';
_this.internalTitle = '';
_this.urlChanges = [];
/**
* \@internal
*/
_this._subject = new _angular_core.EventEmitter();
return _this;
}
/**
* @param {?} url
* @return {?}
*/
MockLocationStrategy.prototype.simulatePopState = /**
* @param {?} url
* @return {?}
*/
function (url) {
this.internalPath = url;
this._subject.emit(new _MockPopStateEvent(this.path()));
};
/**
* @param {?=} includeHash
* @return {?}
*/
MockLocationStrategy.prototype.path = /**
* @param {?=} includeHash
* @return {?}
*/
function (includeHash) {
if (includeHash === void 0) { includeHash = false; }
return this.internalPath;
};
/**
* @param {?} internal
* @return {?}
*/
MockLocationStrategy.prototype.prepareExternalUrl = /**
* @param {?} internal
* @return {?}
*/
function (internal) {
if (internal.startsWith('/') && this.internalBaseHref.endsWith('/')) {
return this.internalBaseHref + internal.substring(1);
}
return this.internalBaseHref + internal;
};
/**
* @param {?} ctx
* @param {?} title
* @param {?} path
* @param {?} query
* @return {?}
*/
MockLocationStrategy.prototype.pushState = /**
* @param {?} ctx
* @param {?} title
* @param {?} path
* @param {?} query
* @return {?}
*/
function (ctx, title, path, query) {
this.internalTitle = title;
var /** @type {?} */ url = path + (query.length > 0 ? ('?' + query) : '');
this.internalPath = url;
var /** @type {?} */ externalUrl = this.prepareExternalUrl(url);
this.urlChanges.push(externalUrl);
};
/**
* @param {?} ctx
* @param {?} title
* @param {?} path
* @param {?} query
* @return {?}
*/
MockLocationStrategy.prototype.replaceState = /**
* @param {?} ctx
* @param {?} title
* @param {?} path
* @param {?} query
* @return {?}
*/
function (ctx, title, path, query) {
this.internalTitle = title;
var /** @type {?} */ url = path + (query.length > 0 ? ('?' + query) : '');
this.internalPath = url;
var /** @type {?} */ externalUrl = this.prepareExternalUrl(url);
this.urlChanges.push('replace: ' + externalUrl);
};
/**
* @param {?} fn
* @return {?}
*/
MockLocationStrategy.prototype.onPopState = /**
* @param {?} fn
* @return {?}
*/
function (fn) { this._subject.subscribe({ next: fn }); };
/**
* @return {?}
*/
MockLocationStrategy.prototype.getBaseHref = /**
* @return {?}
*/
function () { return this.internalBaseHref; };
/**
* @return {?}
*/
MockLocationStrategy.prototype.back = /**
* @return {?}
*/
function () {
if (this.urlChanges.length > 0) {
this.urlChanges.pop();
var /** @type {?} */ nextUrl = this.urlChanges.length > 0 ? this.urlChanges[this.urlChanges.length - 1] : '';
this.simulatePopState(nextUrl);
}
};
/**
* @return {?}
*/
MockLocationStrategy.prototype.forward = /**
* @return {?}
*/
function () { throw 'not implemented'; };
MockLocationStrategy.decorators = [
{ type: _angular_core.Injectable },
];
/** @nocollapse */
MockLocationStrategy.ctorParameters = function () { return []; };
return MockLocationStrategy;
}(_angular_common.LocationStrategy));
var _MockPopStateEvent = /** @class */ (function () {
function _MockPopStateEvent(newUrl) {
this.newUrl = newUrl;
this.pop = true;
this.type = 'popstate';
}
return _MockPopStateEvent;
}());
exports.SpyLocation = SpyLocation;
exports.MockLocationStrategy = MockLocationStrategy;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=common-testing.umd.js.map