@angular/material
Version:
Angular Material
181 lines (176 loc) • 7.89 kB
JavaScript
import { __extends, __awaiter, __generator } from 'tslib';
import { HarnessPredicate, ComponentHarness } from '@angular/cdk/testing';
import { MatSelectHarness } from '@angular/material/select/testing';
import { coerceNumberProperty } from '@angular/cdk/coercion';
/**
* @license
* Copyright Google LLC 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
*/
/** Harness for interacting with a standard mat-paginator in tests. */
var MatPaginatorHarness = /** @class */ (function (_super) {
__extends(MatPaginatorHarness, _super);
function MatPaginatorHarness() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._nextButton = _this.locatorFor('.mat-paginator-navigation-next');
_this._previousButton = _this.locatorFor('.mat-paginator-navigation-previous');
_this._firstPageButton = _this.locatorForOptional('.mat-paginator-navigation-first');
_this._lastPageButton = _this.locatorForOptional('.mat-paginator-navigation-last');
_this._select = _this.locatorForOptional(MatSelectHarness.with({
ancestor: '.mat-paginator-page-size'
}));
_this._pageSizeFallback = _this.locatorFor('.mat-paginator-page-size-value');
_this._rangeLabel = _this.locatorFor('.mat-paginator-range-label');
return _this;
}
/**
* Gets a `HarnessPredicate` that can be used to search for a `MatPaginatorHarness` that meets
* certain criteria.
* @param options Options for filtering which paginator instances are considered a match.
* @return a `HarnessPredicate` configured with the given options.
*/
MatPaginatorHarness.with = function (options) {
if (options === void 0) { options = {}; }
return new HarnessPredicate(MatPaginatorHarness, options);
};
/** Goes to the next page in the paginator. */
MatPaginatorHarness.prototype.goToNextPage = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this._nextButton()];
case 1: return [2 /*return*/, (_a.sent()).click()];
}
});
});
};
/** Goes to the previous page in the paginator. */
MatPaginatorHarness.prototype.goToPreviousPage = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this._previousButton()];
case 1: return [2 /*return*/, (_a.sent()).click()];
}
});
});
};
/** Goes to the first page in the paginator. */
MatPaginatorHarness.prototype.goToFirstPage = function () {
return __awaiter(this, void 0, void 0, function () {
var button;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this._firstPageButton()];
case 1:
button = _a.sent();
// The first page button isn't enabled by default so we need to check for it.
if (!button) {
throw Error('Could not find first page button inside paginator. ' +
'Make sure that `showFirstLastButtons` is enabled.');
}
return [2 /*return*/, button.click()];
}
});
});
};
/** Goes to the last page in the paginator. */
MatPaginatorHarness.prototype.goToLastPage = function () {
return __awaiter(this, void 0, void 0, function () {
var button;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this._lastPageButton()];
case 1:
button = _a.sent();
// The last page button isn't enabled by default so we need to check for it.
if (!button) {
throw Error('Could not find last page button inside paginator. ' +
'Make sure that `showFirstLastButtons` is enabled.');
}
return [2 /*return*/, button.click()];
}
});
});
};
/**
* Sets the page size of the paginator.
* @param size Page size that should be select.
*/
MatPaginatorHarness.prototype.setPageSize = function (size) {
return __awaiter(this, void 0, void 0, function () {
var select;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this._select()];
case 1:
select = _a.sent();
// The select is only available if the `pageSizeOptions` are
// set to an array with more than one item.
if (!select) {
throw Error('Cannot find page size selector in paginator. ' +
'Make sure that the `pageSizeOptions` have been configured.');
}
return [2 /*return*/, select.clickOptions({ text: "" + size })];
}
});
});
};
/** Gets the page size of the paginator. */
MatPaginatorHarness.prototype.getPageSize = function () {
return __awaiter(this, void 0, void 0, function () {
var select, value, _a, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0: return [4 /*yield*/, this._select()];
case 1:
select = _c.sent();
if (!select) return [3 /*break*/, 2];
_a = select.getValueText();
return [3 /*break*/, 4];
case 2: return [4 /*yield*/, this._pageSizeFallback()];
case 3:
_a = (_c.sent()).text();
_c.label = 4;
case 4:
value = _a;
_b = coerceNumberProperty;
return [4 /*yield*/, value];
case 5: return [2 /*return*/, _b.apply(void 0, [_c.sent()])];
}
});
});
};
/** Gets the text of the range labe of the paginator. */
MatPaginatorHarness.prototype.getRangeLabel = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this._rangeLabel()];
case 1: return [2 /*return*/, (_a.sent()).text()];
}
});
});
};
/** Selector used to find paginator instances. */
MatPaginatorHarness.hostSelector = '.mat-paginator';
return MatPaginatorHarness;
}(ComponentHarness));
/**
* @license
* Copyright Google LLC 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
*/
/**
* @license
* Copyright Google LLC 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
*/
export { MatPaginatorHarness };
//# sourceMappingURL=testing.js.map