@angular/material
Version:
Angular Material
429 lines (422 loc) • 19 kB
JavaScript
import { __extends, __awaiter, __generator, __read } from 'tslib';
import { HarnessPredicate, ComponentHarness } from '@angular/cdk/testing';
/**
* @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 Angular Material table cell. */
var MatCellHarness = /** @class */ (function (_super) {
__extends(MatCellHarness, _super);
function MatCellHarness() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Gets a `HarnessPredicate` that can be used to search for a table cell with specific attributes.
* @param options Options for narrowing the search
* @return a `HarnessPredicate` configured with the given options.
*/
MatCellHarness.with = function (options) {
if (options === void 0) { options = {}; }
return getCellPredicate(MatCellHarness, options);
};
/** Gets the cell's text. */
MatCellHarness.prototype.getText = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.host()];
case 1: return [2 /*return*/, (_a.sent()).text()];
}
});
});
};
/** Gets the name of the column that the cell belongs to. */
MatCellHarness.prototype.getColumnName = function () {
return __awaiter(this, void 0, void 0, function () {
var host, classAttribute, prefix_1, name_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.host()];
case 1:
host = _a.sent();
return [4 /*yield*/, host.getAttribute('class')];
case 2:
classAttribute = _a.sent();
if (classAttribute) {
prefix_1 = 'mat-column-';
name_1 = classAttribute.split(' ').map(function (c) { return c.trim(); }).find(function (c) { return c.startsWith(prefix_1); });
if (name_1) {
return [2 /*return*/, name_1.split(prefix_1)[1]];
}
}
throw Error('Could not determine column name of cell.');
}
});
});
};
/** The selector for the host element of a `MatCellHarness` instance. */
MatCellHarness.hostSelector = '.mat-cell';
return MatCellHarness;
}(ComponentHarness));
/** Harness for interacting with a standard Angular Material table header cell. */
var MatHeaderCellHarness = /** @class */ (function (_super) {
__extends(MatHeaderCellHarness, _super);
function MatHeaderCellHarness() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Gets a `HarnessPredicate` that can be used to search for
* a table header cell with specific attributes.
* @param options Options for narrowing the search
* @return a `HarnessPredicate` configured with the given options.
*/
MatHeaderCellHarness.with = function (options) {
if (options === void 0) { options = {}; }
return getCellPredicate(MatHeaderCellHarness, options);
};
/** The selector for the host element of a `MatHeaderCellHarness` instance. */
MatHeaderCellHarness.hostSelector = '.mat-header-cell';
return MatHeaderCellHarness;
}(MatCellHarness));
/** Harness for interacting with a standard Angular Material table footer cell. */
var MatFooterCellHarness = /** @class */ (function (_super) {
__extends(MatFooterCellHarness, _super);
function MatFooterCellHarness() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Gets a `HarnessPredicate` that can be used to search for
* a table footer cell with specific attributes.
* @param options Options for narrowing the search
* @return a `HarnessPredicate` configured with the given options.
*/
MatFooterCellHarness.with = function (options) {
if (options === void 0) { options = {}; }
return getCellPredicate(MatFooterCellHarness, options);
};
/** The selector for the host element of a `MatFooterCellHarness` instance. */
MatFooterCellHarness.hostSelector = '.mat-footer-cell';
return MatFooterCellHarness;
}(MatCellHarness));
function getCellPredicate(type, options) {
return new HarnessPredicate(type, options)
.addOption('text', options.text, function (harness, text) { return HarnessPredicate.stringMatches(harness.getText(), text); });
}
/**
* @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 Angular Material table row. */
var MatRowHarness = /** @class */ (function (_super) {
__extends(MatRowHarness, _super);
function MatRowHarness() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Gets a `HarnessPredicate` that can be used to search for a table row with specific attributes.
* @param options Options for narrowing the search
* @return a `HarnessPredicate` configured with the given options.
*/
MatRowHarness.with = function (options) {
if (options === void 0) { options = {}; }
return new HarnessPredicate(MatRowHarness, options);
};
/** Gets a list of `MatCellHarness` for all cells in the row. */
MatRowHarness.prototype.getCells = function (filter) {
if (filter === void 0) { filter = {}; }
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, this.locatorForAll(MatCellHarness.with(filter))()];
});
});
};
/** Gets the text of the cells in the row. */
MatRowHarness.prototype.getCellTextByIndex = function (filter) {
if (filter === void 0) { filter = {}; }
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, getCellTextByIndex(this, filter)];
});
});
};
/** Gets the text inside the row organized by columns. */
MatRowHarness.prototype.getCellTextByColumnName = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, getCellTextByColumnName(this)];
});
});
};
/** The selector for the host element of a `MatRowHarness` instance. */
MatRowHarness.hostSelector = '.mat-row';
return MatRowHarness;
}(ComponentHarness));
/** Harness for interacting with a standard Angular Material table header row. */
var MatHeaderRowHarness = /** @class */ (function (_super) {
__extends(MatHeaderRowHarness, _super);
function MatHeaderRowHarness() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Gets a `HarnessPredicate` that can be used to search for
* a table header row with specific attributes.
* @param options Options for narrowing the search
* @return a `HarnessPredicate` configured with the given options.
*/
MatHeaderRowHarness.with = function (options) {
if (options === void 0) { options = {}; }
return new HarnessPredicate(MatHeaderRowHarness, options);
};
/** Gets a list of `MatHeaderCellHarness` for all cells in the row. */
MatHeaderRowHarness.prototype.getCells = function (filter) {
if (filter === void 0) { filter = {}; }
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, this.locatorForAll(MatHeaderCellHarness.with(filter))()];
});
});
};
/** Gets the text of the cells in the header row. */
MatHeaderRowHarness.prototype.getCellTextByIndex = function (filter) {
if (filter === void 0) { filter = {}; }
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, getCellTextByIndex(this, filter)];
});
});
};
/** Gets the text inside the header row organized by columns. */
MatHeaderRowHarness.prototype.getCellTextByColumnName = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, getCellTextByColumnName(this)];
});
});
};
/** The selector for the host element of a `MatHeaderRowHarness` instance. */
MatHeaderRowHarness.hostSelector = '.mat-header-row';
return MatHeaderRowHarness;
}(ComponentHarness));
/** Harness for interacting with a standard Angular Material table footer row. */
var MatFooterRowHarness = /** @class */ (function (_super) {
__extends(MatFooterRowHarness, _super);
function MatFooterRowHarness() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Gets a `HarnessPredicate` that can be used to search for
* a table footer row cell with specific attributes.
* @param options Options for narrowing the search
* @return a `HarnessPredicate` configured with the given options.
*/
MatFooterRowHarness.with = function (options) {
if (options === void 0) { options = {}; }
return new HarnessPredicate(MatFooterRowHarness, options);
};
/** Gets a list of `MatFooterCellHarness` for all cells in the row. */
MatFooterRowHarness.prototype.getCells = function (filter) {
if (filter === void 0) { filter = {}; }
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, this.locatorForAll(MatFooterCellHarness.with(filter))()];
});
});
};
/** Gets the text of the cells in the footer row. */
MatFooterRowHarness.prototype.getCellTextByIndex = function (filter) {
if (filter === void 0) { filter = {}; }
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, getCellTextByIndex(this, filter)];
});
});
};
/** Gets the text inside the footer row organized by columns. */
MatFooterRowHarness.prototype.getCellTextByColumnName = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, getCellTextByColumnName(this)];
});
});
};
/** The selector for the host element of a `MatFooterRowHarness` instance. */
MatFooterRowHarness.hostSelector = '.mat-footer-row';
return MatFooterRowHarness;
}(ComponentHarness));
function getCellTextByIndex(harness, filter) {
return __awaiter(this, void 0, void 0, function () {
var cells;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, harness.getCells(filter)];
case 1:
cells = _a.sent();
return [2 /*return*/, Promise.all(cells.map(function (cell) { return cell.getText(); }))];
}
});
});
}
function getCellTextByColumnName(harness) {
return __awaiter(this, void 0, void 0, function () {
var output, cells, cellsData;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
output = {};
return [4 /*yield*/, harness.getCells()];
case 1:
cells = _a.sent();
return [4 /*yield*/, Promise.all(cells.map(function (cell) {
return Promise.all([cell.getColumnName(), cell.getText()]);
}))];
case 2:
cellsData = _a.sent();
cellsData.forEach(function (_a) {
var _b = __read(_a, 2), columnName = _b[0], text = _b[1];
return output[columnName] = text;
});
return [2 /*return*/, output];
}
});
});
}
/**
* @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-table in tests. */
var MatTableHarness = /** @class */ (function (_super) {
__extends(MatTableHarness, _super);
function MatTableHarness() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Gets a `HarnessPredicate` that can be used to search for a table with specific attributes.
* @param options Options for narrowing the search
* @return a `HarnessPredicate` configured with the given options.
*/
MatTableHarness.with = function (options) {
if (options === void 0) { options = {}; }
return new HarnessPredicate(MatTableHarness, options);
};
/** Gets all of the header rows in a table. */
MatTableHarness.prototype.getHeaderRows = function (filter) {
if (filter === void 0) { filter = {}; }
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, this.locatorForAll(MatHeaderRowHarness.with(filter))()];
});
});
};
/** Gets all of the regular data rows in a table. */
MatTableHarness.prototype.getRows = function (filter) {
if (filter === void 0) { filter = {}; }
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, this.locatorForAll(MatRowHarness.with(filter))()];
});
});
};
/** Gets all of the footer rows in a table. */
MatTableHarness.prototype.getFooterRows = function (filter) {
if (filter === void 0) { filter = {}; }
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, this.locatorForAll(MatFooterRowHarness.with(filter))()];
});
});
};
/** Gets the text inside the entire table organized by rows. */
MatTableHarness.prototype.getCellTextByIndex = function () {
return __awaiter(this, void 0, void 0, function () {
var rows;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getRows()];
case 1:
rows = _a.sent();
return [2 /*return*/, Promise.all(rows.map(function (row) { return row.getCellTextByIndex(); }))];
}
});
});
};
/** Gets the text inside the entire table organized by columns. */
MatTableHarness.prototype.getCellTextByColumnName = function () {
return __awaiter(this, void 0, void 0, function () {
var _a, headerRows, footerRows, dataRows, text, _b, headerData, footerData, rowsData;
return __generator(this, function (_c) {
switch (_c.label) {
case 0: return [4 /*yield*/, Promise.all([
this.getHeaderRows(),
this.getFooterRows(),
this.getRows()
])];
case 1:
_a = __read.apply(void 0, [_c.sent(), 3]), headerRows = _a[0], footerRows = _a[1], dataRows = _a[2];
text = {};
return [4 /*yield*/, Promise.all([
Promise.all(headerRows.map(function (row) { return row.getCellTextByColumnName(); })),
Promise.all(footerRows.map(function (row) { return row.getCellTextByColumnName(); })),
Promise.all(dataRows.map(function (row) { return row.getCellTextByColumnName(); })),
])];
case 2:
_b = __read.apply(void 0, [_c.sent(), 3]), headerData = _b[0], footerData = _b[1], rowsData = _b[2];
rowsData.forEach(function (data) {
Object.keys(data).forEach(function (columnName) {
var cellText = data[columnName];
if (!text[columnName]) {
text[columnName] = {
headerText: getCellTextsByColumn(headerData, columnName),
footerText: getCellTextsByColumn(footerData, columnName),
text: []
};
}
text[columnName].text.push(cellText);
});
});
return [2 /*return*/, text];
}
});
});
};
/** The selector for the host element of a `MatTableHarness` instance. */
MatTableHarness.hostSelector = '.mat-table';
return MatTableHarness;
}(ComponentHarness));
/** Extracts the text of cells only under a particular column. */
function getCellTextsByColumn(rowsData, column) {
var columnTexts = [];
rowsData.forEach(function (data) {
Object.keys(data).forEach(function (columnName) {
if (columnName === column) {
columnTexts.push(data[columnName]);
}
});
});
return columnTexts;
}
/**
* @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 { MatCellHarness, MatFooterCellHarness, MatFooterRowHarness, MatHeaderCellHarness, MatHeaderRowHarness, MatRowHarness, MatTableHarness };
//# sourceMappingURL=testing.js.map