@coolon/angular-ui-powerups 12.3.0 → 12.4.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/coolon-angular-ui-powerups-cypress.umd.js +297 -93
- package/bundles/coolon-angular-ui-powerups-cypress.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.js +410 -290
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/cypress/components/aup-command-face.d.ts +2 -5
- package/cypress/components/aup-command.d.ts +18 -4
- package/cypress/components/aup-navigation.d.ts +0 -1
- package/cypress/components/aup-popup-menu.d.ts +2 -0
- package/cypress/components/aup-table.d.ts +19 -0
- package/cypress/components/button-mixin.d.ts +17 -0
- package/cypress/components/button.d.ts +17 -3
- package/cypress/coolon-angular-ui-powerups-cypress.d.ts +1 -0
- package/cypress/coolon-angular-ui-powerups-cypress.metadata.json +1 -1
- package/cypress/exports.d.ts +3 -0
- package/cypress/page-element.d.ts +11 -2
- package/cypress/page.d.ts +16 -13
- package/cypress/path.d.ts +26 -0
- package/cypress/section.d.ts +8 -1
- package/esm2015/cypress/components/aup-command-face.js +20 -11
- package/esm2015/cypress/components/aup-command-face.js.map +1 -1
- package/esm2015/cypress/components/aup-command-face.metadata.json +1 -1
- package/esm2015/cypress/components/aup-command.js +10 -7
- package/esm2015/cypress/components/aup-command.js.map +1 -1
- package/esm2015/cypress/components/aup-command.metadata.json +1 -1
- package/esm2015/cypress/components/aup-more-menu.js +1 -2
- package/esm2015/cypress/components/aup-more-menu.js.map +1 -1
- package/esm2015/cypress/components/aup-more-menu.metadata.json +1 -1
- package/esm2015/cypress/components/aup-navigation.js +1 -5
- package/esm2015/cypress/components/aup-navigation.js.map +1 -1
- package/esm2015/cypress/components/aup-popup-menu.js +12 -3
- package/esm2015/cypress/components/aup-popup-menu.js.map +1 -1
- package/esm2015/cypress/components/aup-popup-menu.metadata.json +1 -1
- package/esm2015/cypress/components/aup-table.js +36 -0
- package/esm2015/cypress/components/aup-table.js.map +1 -0
- package/esm2015/cypress/components/aup-table.metadata.json +1 -0
- package/esm2015/cypress/components/button-mixin.js +15 -0
- package/esm2015/cypress/components/button-mixin.js.map +1 -0
- package/esm2015/cypress/components/button-mixin.metadata.json +1 -0
- package/esm2015/cypress/components/button.js +11 -7
- package/esm2015/cypress/components/button.js.map +1 -1
- package/esm2015/cypress/components/button.metadata.json +1 -1
- package/esm2015/cypress/coolon-angular-ui-powerups-cypress.js.map +1 -1
- package/esm2015/cypress/coolon-angular-ui-powerups-cypress.metadata.json +1 -1
- package/esm2015/cypress/exports.js +3 -0
- package/esm2015/cypress/exports.js.map +1 -1
- package/esm2015/cypress/exports.metadata.json +1 -1
- package/esm2015/cypress/page-element.js +21 -5
- package/esm2015/cypress/page-element.js.map +1 -1
- package/esm2015/cypress/page-element.metadata.json +1 -1
- package/esm2015/cypress/page.js +32 -22
- package/esm2015/cypress/page.js.map +1 -1
- package/esm2015/cypress/page.metadata.json +1 -1
- package/esm2015/cypress/path.js +61 -0
- package/esm2015/cypress/path.js.map +1 -0
- package/esm2015/cypress/path.metadata.json +1 -0
- package/esm2015/cypress/section.js +20 -10
- package/esm2015/cypress/section.js.map +1 -1
- package/esm2015/lib/components/switch-case/switch-case.component.js +7 -0
- package/esm2015/lib/components/switch-case/switch-case.component.js.map +1 -1
- package/esm2015/lib/components/switch-case/switch-case.component.metadata.json +1 -1
- package/esm2015/lib/components/tables/abstract-table.component.js +1 -1
- package/esm2015/lib/components/tables/abstract-table.component.js.map +1 -1
- package/esm2015/lib/components/tables/table/table.component.js +1 -1
- package/esm2015/lib/components/tables/table/table.component.js.map +1 -1
- package/esm2015/lib/components/tables/table/table.component.metadata.json +1 -1
- package/esm2015/lib/components/tables/tree-table/tree-table-component.js +1 -1
- package/esm2015/lib/components/tables/tree-table/tree-table-component.js.map +1 -1
- package/esm2015/lib/components/tables/tree-table/tree-table-component.metadata.json +1 -1
- package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +1 -1
- package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.metadata.json +1 -1
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
- package/esm2015/lib/place/guards/consolidated-param-map.js +7 -2
- package/esm2015/lib/place/guards/consolidated-param-map.js.map +1 -1
- package/esm2015/lib/place/guards/consolidated-param-map.metadata.json +1 -1
- package/esm2015/lib/place/guards/place.guard.js +1 -22
- package/esm2015/lib/place/guards/place.guard.js.map +1 -1
- package/esm2015/lib/place/navigation/place-component-deactivation-handler.js +24 -14
- package/esm2015/lib/place/navigation/place-component-deactivation-handler.js.map +1 -1
- package/esm2015/lib/place/navigation/place-component-deactivation-handler.metadata.json +1 -1
- package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js.map +1 -1
- package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.metadata.json +1 -1
- package/esm2015/lib/place/place-component.js +67 -5
- package/esm2015/lib/place/place-component.js.map +1 -1
- package/esm2015/lib/place/place-component.metadata.json +1 -1
- package/esm2015/lib/place/place-definition.js +3 -3
- package/esm2015/lib/place/place-definition.js.map +1 -1
- package/esm2015/lib/place/place-router.js +9 -4
- package/esm2015/lib/place/place-router.js.map +1 -1
- package/esm2015/lib/place/place-router.metadata.json +1 -1
- package/esm2015/lib/place/route/parameter-decorators.js +13 -14
- package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
- package/esm2015/lib/place/route/parameter-decorators.metadata.json +1 -1
- package/esm2015/lib/place/route/parameter-definition.js +21 -3
- package/esm2015/lib/place/route/parameter-definition.js.map +1 -1
- package/esm2015/lib/place/route/parameter-definition.metadata.json +1 -1
- package/esm2015/lib/place/route/visit-sanitiser.js +1 -1
- package/esm2015/lib/place/route/visit-sanitiser.js.map +1 -1
- package/esm2015/lib/place/url-snapshot.js +30 -7
- package/esm2015/lib/place/url-snapshot.js.map +1 -1
- package/esm2015/lib/place/url-snapshot.metadata.json +1 -1
- package/esm2015/lib/place/visit.js +7 -7
- package/esm2015/lib/place/visit.js.map +1 -1
- package/esm2015/lib/place/visit.metadata.json +1 -1
- package/fesm2015/coolon-angular-ui-powerups-cypress.js +235 -74
- package/fesm2015/coolon-angular-ui-powerups-cypress.js.map +1 -1
- package/fesm2015/coolon-angular-ui-powerups.js +369 -269
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/components/switch-case/switch-case.component.d.ts +7 -0
- package/lib/place/guards/consolidated-param-map.d.ts +2 -2
- package/lib/place/navigation/place-component-deactivation-handler.d.ts +3 -1
- package/lib/place/place-component.d.ts +26 -3
- package/lib/place/route/parameter-definition.d.ts +8 -0
- package/lib/place/url-snapshot.d.ts +1 -0
- package/lib/place/visit.d.ts +4 -4
- package/package.json +1 -1
- package/schematics/activity/schema.json +1 -1
- package/schematics/activity/templates/component/__name@dasherize__.component.html.template +1 -1
- package/schematics/activity/templates/component/__name@dasherize__.component.ts.template +2 -2
- package/schematics/aup-i18n/schema.json +1 -1
- package/schematics/bootstrap-app/schema.json +1 -1
- package/schematics/component/schema.json +1 -1
- package/schematics/place-add/schema.json +1 -1
- package/schematics/place-bootstrap/schema.json +1 -1
- package/schematics/place-routes/schema.json +1 -1
|
@@ -1,11 +1,24 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as _ from 'lodash';
|
|
2
|
+
import { lang, Mixin } from '@coolon/typescript-utilities';
|
|
3
|
+
import { DefaultUrlSerializer } from '@angular/router';
|
|
2
4
|
|
|
3
5
|
class PageElement {
|
|
4
|
-
constructor(
|
|
5
|
-
this.
|
|
6
|
+
constructor(parent, selector) {
|
|
7
|
+
this.parentElementAccessor = parent instanceof PageElement ? () => parent.element() : parent;
|
|
8
|
+
this.elementAccessStrategy = _.isString(selector) ? {
|
|
9
|
+
findIn: p => p.find(selector),
|
|
10
|
+
shouldNotExist: (p) => p.should('not.have', selector)
|
|
11
|
+
} : selector;
|
|
6
12
|
}
|
|
7
13
|
element() {
|
|
8
|
-
|
|
14
|
+
const parent = this.getParentElement();
|
|
15
|
+
return parent ? this.elementAccessStrategy.findIn(parent) : undefined;
|
|
16
|
+
}
|
|
17
|
+
getParentElement() {
|
|
18
|
+
return this.parentElementAccessor ? this.parentElementAccessor() : undefined;
|
|
19
|
+
}
|
|
20
|
+
find(selector) {
|
|
21
|
+
return new PageElement(() => this.element(), selector);
|
|
9
22
|
}
|
|
10
23
|
click(text) {
|
|
11
24
|
text ? this.element().contains(text).click() : this.element().click();
|
|
@@ -14,46 +27,125 @@ class PageElement {
|
|
|
14
27
|
return this.element().should;
|
|
15
28
|
}
|
|
16
29
|
shouldBeVisible() {
|
|
17
|
-
this.should(
|
|
30
|
+
this.should('be.visible');
|
|
18
31
|
}
|
|
19
32
|
shouldNotBeVisible() {
|
|
20
|
-
this.
|
|
33
|
+
if (!this.elementAccessStrategy.shouldNotExist) {
|
|
34
|
+
lang.abstractMethod(this.constructor);
|
|
35
|
+
}
|
|
36
|
+
this.elementAccessStrategy.shouldNotExist(this.getParentElement());
|
|
21
37
|
}
|
|
22
38
|
}
|
|
23
39
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
40
|
+
let urlSerialiser = new DefaultUrlSerializer();
|
|
41
|
+
class Path {
|
|
42
|
+
constructor(segments) {
|
|
43
|
+
this.segments = segments;
|
|
44
|
+
}
|
|
45
|
+
static extractVisitParameters(url) {
|
|
46
|
+
let result = {};
|
|
47
|
+
const urlTree = urlSerialiser.parse(url);
|
|
48
|
+
urlTree.root.children.primary.segments.forEach(s => {
|
|
49
|
+
result = Object.assign(Object.assign({}, result), s.parameters);
|
|
50
|
+
});
|
|
51
|
+
return result;
|
|
29
52
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const finder = () => face.text ?
|
|
33
|
-
parent().contains(`aup-command-face`, face.text()) :
|
|
34
|
-
face.icon ?
|
|
35
|
-
parent().find(`aup-icon[ng-reflect-icon=${face.icon()}]`).closest('aup-command-face') :
|
|
36
|
-
undefined;
|
|
37
|
-
return finder;
|
|
53
|
+
toUrl(params) {
|
|
54
|
+
return this.segments.map(s => s.toUrlPart(params)).join('/');
|
|
38
55
|
}
|
|
39
56
|
}
|
|
57
|
+
(function (Path) {
|
|
58
|
+
function setUrlSerialiser(serialiser) {
|
|
59
|
+
urlSerialiser = serialiser;
|
|
60
|
+
}
|
|
61
|
+
Path.setUrlSerialiser = setUrlSerialiser;
|
|
62
|
+
class Segment {
|
|
63
|
+
constructor(path, params = {}) {
|
|
64
|
+
var _a;
|
|
65
|
+
this.path = path;
|
|
66
|
+
this.routeId = params === null || params === void 0 ? void 0 : params.routeId;
|
|
67
|
+
this.visitParams = (_a = params === null || params === void 0 ? void 0 : params.visitParams) !== null && _a !== void 0 ? _a : [];
|
|
68
|
+
}
|
|
69
|
+
toUrlPart(params) {
|
|
70
|
+
let path = this.path;
|
|
71
|
+
this.visitParams.forEach(p => {
|
|
72
|
+
const value = params[p];
|
|
73
|
+
if (value) {
|
|
74
|
+
path = `${path};${p}=${value}`;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
if (this.routeId && params[this.routeId]) {
|
|
78
|
+
path = path + '/' + params[this.routeId];
|
|
79
|
+
}
|
|
80
|
+
return path;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
Path.Segment = Segment;
|
|
84
|
+
class Builder {
|
|
85
|
+
constructor() {
|
|
86
|
+
this.segments = [];
|
|
87
|
+
}
|
|
88
|
+
segment(name, params) {
|
|
89
|
+
const builder = new Segment(name, params);
|
|
90
|
+
this.segments.push(builder);
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
getPath() {
|
|
94
|
+
return new Path(this.segments);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
Path.Builder = Builder;
|
|
98
|
+
})(Path || (Path = {}));
|
|
40
99
|
|
|
41
|
-
class
|
|
42
|
-
|
|
43
|
-
|
|
100
|
+
class AupCommandFace extends PageElement {
|
|
101
|
+
constructor(parentElement, face) {
|
|
102
|
+
super(() => parentElement.element(), AupCommandFace.createAccessor(face));
|
|
44
103
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
104
|
+
static createAccessor(face) {
|
|
105
|
+
// AOT barfs if we return a lambda
|
|
106
|
+
const accessor = {
|
|
107
|
+
findIn(parent) {
|
|
108
|
+
return face.text ?
|
|
109
|
+
parent.contains(`aup-command-face`, face.text()) :
|
|
110
|
+
face.icon ?
|
|
111
|
+
parent.find(`aup-icon[ng-reflect-icon=${face.icon()}]`).closest('aup-command-face') :
|
|
112
|
+
undefined;
|
|
113
|
+
},
|
|
114
|
+
shouldNotExist(parent) {
|
|
115
|
+
return face.text ?
|
|
116
|
+
parent.should("not.contain", `aup-command-face`, face.text()) :
|
|
117
|
+
face.icon ?
|
|
118
|
+
parent.should("not.contain", `aup-icon[ng-reflect-icon=${face.icon()}]`) :
|
|
119
|
+
undefined;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
return accessor;
|
|
48
123
|
}
|
|
49
124
|
}
|
|
50
125
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
126
|
+
function ButtonMixin(Base) {
|
|
127
|
+
return class extends Base {
|
|
128
|
+
constructor(...args) {
|
|
129
|
+
super(...args);
|
|
130
|
+
}
|
|
131
|
+
click() {
|
|
132
|
+
return this.element().click();
|
|
133
|
+
}
|
|
134
|
+
shouldBeDisabled() {
|
|
135
|
+
this.should("be.disabled");
|
|
136
|
+
// this.should("have.css", "color", "rgba(0,0,0,0.26)")
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
class AupCommand extends ButtonMixin(PageElement) {
|
|
142
|
+
constructor(parentElementAccessor, face) {
|
|
143
|
+
const faceAccessor = AupCommandFace.createAccessor(face);
|
|
144
|
+
super(parentElementAccessor, {
|
|
145
|
+
findIn(parent) {
|
|
146
|
+
return faceAccessor.findIn(parent).closest("aup-command");
|
|
147
|
+
}
|
|
148
|
+
});
|
|
57
149
|
}
|
|
58
150
|
get should() {
|
|
59
151
|
return this.element().find('button').should;
|
|
@@ -129,15 +221,11 @@ class AupInput extends PageElement {
|
|
|
129
221
|
})(AupInput || (AupInput = {}));
|
|
130
222
|
|
|
131
223
|
class AupNavigation extends PageElement {
|
|
132
|
-
static create(parent, selector) {
|
|
133
|
-
const rootElementAccessor = () => parent.element().find(selector);
|
|
134
|
-
return new AupNavigation(rootElementAccessor);
|
|
135
|
-
}
|
|
136
224
|
click(label) {
|
|
137
225
|
return super.click(label);
|
|
138
226
|
}
|
|
139
227
|
face(label) {
|
|
140
|
-
return AupCommandFace
|
|
228
|
+
return new AupCommandFace(this, { text: () => label });
|
|
141
229
|
}
|
|
142
230
|
shouldHaveLink(label) {
|
|
143
231
|
this.face(label).shouldBeVisible();
|
|
@@ -147,40 +235,97 @@ class AupNavigation extends PageElement {
|
|
|
147
235
|
}
|
|
148
236
|
}
|
|
149
237
|
|
|
238
|
+
class AupTable extends PageElement {
|
|
239
|
+
constructor(parentElementAccessor, selector) {
|
|
240
|
+
super(parentElementAccessor, selector);
|
|
241
|
+
}
|
|
242
|
+
row(rowId) {
|
|
243
|
+
return new AupTable.Row(() => this.element(), `tr[aup-table-id=${rowId}]`);
|
|
244
|
+
}
|
|
245
|
+
column(columnId) {
|
|
246
|
+
return new AupTable.Column(this, columnId);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
(function (AupTable) {
|
|
250
|
+
class Row extends PageElement {
|
|
251
|
+
}
|
|
252
|
+
AupTable.Row = Row;
|
|
253
|
+
class Column {
|
|
254
|
+
constructor(table, columnId) {
|
|
255
|
+
this.table = table;
|
|
256
|
+
this.columnId = columnId;
|
|
257
|
+
}
|
|
258
|
+
cell(content) {
|
|
259
|
+
const self = this;
|
|
260
|
+
return new Cell(this.table, {
|
|
261
|
+
findIn(parent) {
|
|
262
|
+
return parent.contains(`aup-table-cell-renderer[column-id=${self.columnId}]`, content);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
AupTable.Column = Column;
|
|
268
|
+
class Cell extends PageElement {
|
|
269
|
+
}
|
|
270
|
+
AupTable.Cell = Cell;
|
|
271
|
+
})(AupTable || (AupTable = {}));
|
|
272
|
+
|
|
273
|
+
class Button extends ButtonMixin(PageElement) {
|
|
274
|
+
constructor(parentElementAccessor, buttonText) {
|
|
275
|
+
super(parentElementAccessor, {
|
|
276
|
+
findIn(parent) {
|
|
277
|
+
return parent.contains('button', buttonText);
|
|
278
|
+
},
|
|
279
|
+
shouldNotExist(parent) {
|
|
280
|
+
return parent.should('not.contain', buttonText);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
150
286
|
var Section;
|
|
151
287
|
(function (Section) {
|
|
152
288
|
function Mixin$1(Base) {
|
|
153
289
|
return class extends Base {
|
|
154
290
|
section(selector, section) {
|
|
155
|
-
const impl = new Impl(() => this.element()
|
|
291
|
+
const impl = new Impl(() => this.element(), selector);
|
|
156
292
|
return Mixin.createProxy(section(impl), impl);
|
|
157
293
|
}
|
|
294
|
+
find(selector) {
|
|
295
|
+
return new PageElement(() => this.element(), selector);
|
|
296
|
+
}
|
|
158
297
|
contains(text) {
|
|
159
|
-
return new PageElement(() => this.element()
|
|
298
|
+
return new PageElement(() => this.element(), {
|
|
299
|
+
findIn: parent => parent.contains(text),
|
|
300
|
+
shouldNotExist: (parent) => parent.should("not.contain", text)
|
|
301
|
+
});
|
|
160
302
|
}
|
|
161
303
|
button(text) {
|
|
162
|
-
return new Button(() => this.element()
|
|
304
|
+
return new Button(() => this.element(), text);
|
|
163
305
|
}
|
|
164
306
|
aupStringInput(selector) {
|
|
165
|
-
return new AupInput.HtmlInput(() => this.element()
|
|
307
|
+
return new AupInput.HtmlInput(() => this.element(), selector !== null && selector !== void 0 ? selector : 'aup-string-input');
|
|
166
308
|
}
|
|
167
309
|
aupTextInput(selector) {
|
|
168
|
-
return new AupInput.TextAreaInput(() => this.element()
|
|
310
|
+
return new AupInput.TextAreaInput(() => this.element(), selector !== null && selector !== void 0 ? selector : 'aup-text-input');
|
|
169
311
|
}
|
|
170
312
|
aupPasswordInput(selector) {
|
|
171
|
-
return new AupInput.HtmlInput(() => this.element()
|
|
313
|
+
return new AupInput.HtmlInput(() => this.element(), selector !== null && selector !== void 0 ? selector : 'aup-password-input');
|
|
172
314
|
}
|
|
173
315
|
aupNumberInput(selector) {
|
|
174
|
-
return new AupInput.HtmlInput(() => this.element()
|
|
316
|
+
return new AupInput.HtmlInput(() => this.element(), selector !== null && selector !== void 0 ? selector : 'aup-number-input');
|
|
175
317
|
}
|
|
176
318
|
aupCommand(face) {
|
|
177
|
-
return AupCommand.
|
|
319
|
+
return new AupCommand(() => this.element(), face);
|
|
178
320
|
}
|
|
179
321
|
aupTabbedNavigation() {
|
|
180
|
-
return AupNavigation.
|
|
322
|
+
return new AupNavigation(() => this.element(), 'aup-tabbed-place-navigation');
|
|
181
323
|
}
|
|
182
324
|
aupSideNavigation() {
|
|
183
|
-
return AupNavigation.
|
|
325
|
+
return new AupNavigation(() => this.element(), 'aup-list-place-nav');
|
|
326
|
+
}
|
|
327
|
+
aupTable(selector) {
|
|
328
|
+
return new AupTable(() => this.element(), selector !== null && selector !== void 0 ? selector : 'aup-table');
|
|
184
329
|
}
|
|
185
330
|
};
|
|
186
331
|
}
|
|
@@ -191,19 +336,19 @@ var Section;
|
|
|
191
336
|
|
|
192
337
|
class Page extends PageElement {
|
|
193
338
|
constructor(path) {
|
|
194
|
-
super();
|
|
339
|
+
super(undefined, undefined);
|
|
195
340
|
this.path = path;
|
|
196
341
|
this.rootElementSelector = 'body';
|
|
197
342
|
}
|
|
198
343
|
element() {
|
|
199
344
|
return cy.get(this.rootElementSelector);
|
|
200
345
|
}
|
|
201
|
-
visit() {
|
|
202
|
-
this.tryAndVisit();
|
|
203
|
-
this.shouldBeActive();
|
|
346
|
+
visit(params) {
|
|
347
|
+
this.tryAndVisit(params);
|
|
348
|
+
this.shouldBeActive(params);
|
|
204
349
|
}
|
|
205
|
-
tryAndVisit() {
|
|
206
|
-
cy.visit(this.path);
|
|
350
|
+
tryAndVisit(params) {
|
|
351
|
+
cy.visit("/" + this.path.toUrl(params !== null && params !== void 0 ? params : {}));
|
|
207
352
|
}
|
|
208
353
|
shouldHaveActivityIds(...ids) {
|
|
209
354
|
cy.location('search').should('contain', `?aup-interactions=${ids.join('--')}`);
|
|
@@ -211,36 +356,44 @@ class Page extends PageElement {
|
|
|
211
356
|
shouldNotHaveActivityIds() {
|
|
212
357
|
cy.location('search').should('not.contain', `?aup-interactions`);
|
|
213
358
|
}
|
|
214
|
-
|
|
359
|
+
shouldHaveTitle(title) {
|
|
360
|
+
cy.title().should('eq', title);
|
|
361
|
+
}
|
|
362
|
+
shouldBeActive(withParameters) {
|
|
215
363
|
// Note: cy.window() doesn't return a promise... it's a chainable.
|
|
216
364
|
cy.window().then(window => {
|
|
217
365
|
cy['waitUntil'](() => {
|
|
218
366
|
return window['aup.PlaceRouter'] && !window['aup.PlaceRouter'].isNavigating();
|
|
219
367
|
});
|
|
220
368
|
});
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
if (options && options.withTitle) {
|
|
231
|
-
cy.title().should('eq', options.withTitle);
|
|
369
|
+
if (withParameters) {
|
|
370
|
+
cy.location('pathname').then(path => {
|
|
371
|
+
const urlParams = Path.extractVisitParameters(path);
|
|
372
|
+
Object.keys(withParameters).forEach(param => {
|
|
373
|
+
const expected = withParameters[param];
|
|
374
|
+
// @ts-ignore
|
|
375
|
+
expect(urlParams[param]).to.equal(expected);
|
|
376
|
+
});
|
|
377
|
+
});
|
|
232
378
|
}
|
|
233
379
|
}
|
|
234
380
|
}
|
|
235
381
|
(function (Page) {
|
|
236
|
-
function create(
|
|
237
|
-
const
|
|
382
|
+
function create(pathOrPathBuilder, page) {
|
|
383
|
+
const pathBuilder = new Path.Builder();
|
|
384
|
+
if (_.isString(pathOrPathBuilder)) {
|
|
385
|
+
pathOrPathBuilder.split("/").filter(p => !_.isEmpty(p)).forEach(p => pathBuilder.segment(p));
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
pathOrPathBuilder(pathBuilder);
|
|
389
|
+
}
|
|
390
|
+
const builder = new PageBuilder(pathBuilder.getPath());
|
|
238
391
|
return Mixin.createProxy(page(builder), builder);
|
|
239
392
|
}
|
|
240
393
|
Page.create = create;
|
|
241
|
-
class
|
|
394
|
+
class PageBuilder extends Section.Mixin(Page) {
|
|
242
395
|
}
|
|
243
|
-
Page.
|
|
396
|
+
Page.PageBuilder = PageBuilder;
|
|
244
397
|
})(Page || (Page = {}));
|
|
245
398
|
|
|
246
399
|
class AupCommandGroup extends PageElement {
|
|
@@ -248,16 +401,24 @@ class AupCommandGroup extends PageElement {
|
|
|
248
401
|
|
|
249
402
|
class AupMoreMenu extends PageElement {
|
|
250
403
|
static create(parent) {
|
|
251
|
-
|
|
252
|
-
return new AupMoreMenu(finder);
|
|
404
|
+
return new AupMoreMenu(parent, 'aup-more-menu');
|
|
253
405
|
}
|
|
254
406
|
}
|
|
255
407
|
|
|
256
408
|
class AupPopupMenu extends PageElement {
|
|
409
|
+
constructor(parentElementAccessor, face) {
|
|
410
|
+
const accessor = AupCommandFace.createAccessor(face);
|
|
411
|
+
super(parentElementAccessor, {
|
|
412
|
+
findIn(parent) {
|
|
413
|
+
return accessor.findIn(parent).closest('button');
|
|
414
|
+
},
|
|
415
|
+
shouldNotExist(parent) {
|
|
416
|
+
accessor.shouldNotExist(parent);
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
}
|
|
257
420
|
static create(parent, face) {
|
|
258
|
-
|
|
259
|
-
const buttonFinder = () => faceFinder().closest('button');
|
|
260
|
-
return new AupPopupMenu(buttonFinder);
|
|
421
|
+
return new AupPopupMenu(parent, face);
|
|
261
422
|
}
|
|
262
423
|
}
|
|
263
424
|
|
|
@@ -276,5 +437,5 @@ class AupToolBar extends PageElement {
|
|
|
276
437
|
* Generated bundle index. Do not edit.
|
|
277
438
|
*/
|
|
278
439
|
|
|
279
|
-
export { AupCommand, AupCommandFace, AupCommandGroup, AupInput, AupMoreMenu, AupNavigation, AupPopupMenu, AupToolBar, Button, Page, PageElement, Section };
|
|
440
|
+
export { AupCommand, AupCommandFace, AupCommandGroup, AupInput, AupMoreMenu, AupNavigation, AupPopupMenu, AupTable, AupToolBar, Button, ButtonMixin, Page, PageElement, Path, Section };
|
|
280
441
|
//# sourceMappingURL=coolon-angular-ui-powerups-cypress.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coolon-angular-ui-powerups-cypress.js","sources":["../../../../libs/angular-ui-powerups/cypress/src/page-element.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command-face.ts","../../../../libs/angular-ui-powerups/cypress/src/components/button.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-input.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-navigation.ts","../../../../libs/angular-ui-powerups/cypress/src/section.ts","../../../../libs/angular-ui-powerups/cypress/src/page.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command-group.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-more-menu.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-popup-menu.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-tool-bar.ts","../../../../libs/angular-ui-powerups/cypress/src/exports.ts","../../../../libs/angular-ui-powerups/cypress/src/coolon-angular-ui-powerups-cypress.ts"],"sourcesContent":["import Chainable = Cypress.Chainable;\n\nexport class PageElement {\n constructor(readonly rootElementAccessor?: () => Cypress.Chainable<JQuery>) {\n }\n\n element(): Chainable<JQuery> {\n return this.rootElementAccessor ? this.rootElementAccessor() : undefined;\n }\n\n click(text?: string) {\n text ? this.element().contains(text).click() : this.element().click();\n }\n\n get should() {\n return this.element().should;\n }\n\n shouldBeVisible() {\n this.should(\"be.visible\");\n }\n\n shouldNotBeVisible() {\n this.should(\"not.be.visible\");\n }\n}\n","import { PageElement } from '../page-element';\nimport { Types } from './types';\n\ntype ElementFinder = () => Cypress.Chainable<JQuery<HTMLElement>>\n\nexport class AupCommandFace extends PageElement {\n\n static create(parent: PageElement, face: Types.CommandFace) {\n const parentFinder: ElementFinder = () => parent.element();\n const rootElementAccessor = this.createFinder(parentFinder, face);\n return new AupCommandFace(rootElementAccessor);\n }\n\n static createFinder(parent: ElementFinder, face: Types.CommandFace) {\n // AOT barfs if we return a lambda\n const finder = () => face.text ?\n parent().contains(`aup-command-face`, face.text()) :\n face.icon ?\n parent().find(`aup-icon[ng-reflect-icon=${face.icon()}]`).closest('aup-command-face') :\n undefined;\n return finder;\n }\n}\n\n","import { PageElement } from '../page-element';\n\nexport class Button extends PageElement {\n\n click() {\n return this.element().click();\n }\n\n shouldBeDisabled() {\n this.should(\"be.disabled\");\n // this.should(\"have.css\", \"color\", \"rgba(0,0,0,0.26)\")\n }\n\n}\n","import { Types } from './types';\nimport { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\nimport { Button } from './button';\n\nexport class AupCommand extends Button {\n\n static create(parent: PageElement, face: Types.CommandFace) {\n const parentFinder = () => parent.element().find('aup-command');\n const findFace = AupCommandFace.createFinder(parentFinder, face);\n const commandFinder = () => findFace().closest(\"aup-command\");\n return new AupCommand(commandFinder);\n }\n\n get should() {\n return this.element().find('button').should\n }\n\n}\n\n","import { PageElement } from '../page-element';\n\nexport abstract class AupInput<T> extends PageElement {\n\n label() {\n return this.element().find('label');\n }\n\n hint() {\n return this.element().find('mat-hint');\n }\n\n error() {\n return this.element().find('mat-error');\n }\n\n get labelShould() {\n return this.label().should\n }\n\n get hintShould() {\n return this.hint().should\n }\n\n get errorShould() {\n return this.error().should\n }\n\n labelShouldBe(text: string) {\n return this.labelShould(\"have.text\", text);\n }\n\n hintShouldBe(text: string) {\n return this.hintShould(\"have.text\", text);\n }\n\n errorShouldBe(text: string) {\n return this.errorShould(\"have.text\", text);\n }\n\n abstract clear();\n\n abstract setValue(value: T);\n\n}\n\nexport namespace AupInput {\n export class HtmlInput<T> extends AupInput<T> {\n input() {\n return this.element().find('input');\n }\n\n clear() {\n this.input().clear();\n }\n\n setValue(value: T) {\n const input = this.input();\n input.clear();\n input.type(`${value}`);\n this.input().should('have.value', `${value}`);\n }\n\n get should() {\n return this.input().should;\n }\n\n }\n\n export class TextAreaInput<T> extends AupInput<T> {\n\n get should() {\n return this.input().should;\n }\n\n input() {\n return this.element().find('textarea');\n }\n\n clear() {\n this.input().clear();\n }\n\n setValue(value: T) {\n const input = this.input();\n input.clear();\n input.type(`${value}`);\n this.input().should('have.value', value);\n }\n }\n\n}\n","import { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\n\nexport class AupNavigation extends PageElement {\n\n static create(parent: PageElement, selector: string) {\n const rootElementAccessor = () => parent.element().find(selector);\n return new AupNavigation(rootElementAccessor);\n }\n\n click(label: string) {\n return super.click(label);\n }\n\n face(label: string): AupCommandFace {\n return AupCommandFace.create(this, { text: () => label });\n }\n\n shouldHaveLink(label: string) {\n this.face(label).shouldBeVisible();\n }\n\n shouldNotHaveLink(label: string) {\n this.face(label).shouldNotBeVisible();\n }\n}\n","import { Constructable } from '@coolon/pectin';\nimport { Mixin as CreateMixin } from '@coolon/typescript-utilities';\nimport { AupCommand } from './components/aup-command';\nimport { AupInput } from './components/aup-input';\nimport { AupNavigation } from './components/aup-navigation';\nimport { Button } from './components/button';\nimport { Types } from './components/types';\nimport { PageElement } from './page-element';\n\nexport interface Section {\n section<T extends object>(selector: string, section: (section: Section) => T): T & PageElement;\n\n contains(text: string): PageElement\n\n button(text: string): Button;\n\n aupStringInput(selector?: string): AupInput<string>;\n\n aupTextInput(selector?: string): AupInput<string>;\n\n aupPasswordInput(selector?: string): AupInput<string>;\n\n aupNumberInput(selector?: string): AupInput<number>;\n\n aupCommand(face: Types.CommandFace): AupCommand;\n\n // aupToolbar<T extends object>(builder: () => T): AupToolBar & T\n //\n // aupToolbar<T extends object>(selector: string, builder: () => T): AupToolBar & T\n //\n // aupToolbar<T extends object>(selectorOrBuilder: string | (() => T), builder?: () => T): AupToolBar & T\n //\n // aupPopupMenu<T extends object>(face: CommandFace, builder: () => T): AupPopupMenu & T\n\n aupTabbedNavigation<T extends object>(): AupNavigation;\n aupSideNavigation<T extends object>(): AupNavigation;\n\n}\n\n\nexport namespace Section {\n\n export function Mixin<BC extends Constructable<PageElement>>(Base: BC) {\n\n return class extends Base implements Section {\n\n section<T extends object>(selector: string, section: (section: Section) => T): T & PageElement {\n const impl = new Impl(() => this.element().find(selector));\n return CreateMixin.createProxy(section(impl), impl);\n }\n\n contains(text: string): PageElement {\n return new PageElement(() => this.element().contains(text));\n }\n\n button(text: string): Button {\n return new Button(() => this.element().contains(`button`, text));\n }\n\n aupStringInput(selector?: string): AupInput<string> {\n return new AupInput.HtmlInput(() => this.element().find(selector ?? 'aup-string-input'));\n }\n\n aupTextInput(selector?: string): AupInput<string> {\n return new AupInput.TextAreaInput(() => this.element().find(selector ?? 'aup-text-input'));\n }\n\n aupPasswordInput(selector?: string): AupInput<string> {\n return new AupInput.HtmlInput(() => this.element().find(selector ?? 'aup-password-input'));\n }\n\n aupNumberInput(selector?: string): AupInput<number> {\n return new AupInput.HtmlInput(() => this.element().find(selector ?? 'aup-number-input'));\n }\n\n aupCommand(face: Types.CommandFace): AupCommand {\n return AupCommand.create(this, face);\n }\n\n aupTabbedNavigation<T extends object>(): AupNavigation {\n return AupNavigation.create(this, 'aup-tabbed-place-navigation');\n }\n\n aupSideNavigation<T extends object>(): AupNavigation {\n return AupNavigation.create(this, 'aup-list-place-nav');\n }\n\n\n // aupToolbar<T extends object>(builder: () => T): AupToolBar\n // aupToolbar<T extends object>(selector: string, builder: () => T): AupToolBar\n // aupToolbar<T extends object>(selectorOrBuilder: string | (() => T), builder?: () => T): AupToolBar {\n // return lang.notImplemented();\n // }\n //\n // aupPopupMenu<T extends object>(face: CommandFace, builder: () => T): AupPopupMenu & T {\n // return lang.notImplemented();\n // }\n //\n // aupMoreMenu<T extends object>(builder: () => T): AupPopupMenu & T {\n // return lang.notImplemented();\n // }\n\n };\n }\n\n class Impl extends Mixin(PageElement) {\n }\n\n\n}\n","import { Mixin } from '@coolon/typescript-utilities';\nimport { PageElement } from './page-element';\nimport { Section } from './section';\n\nexport class Page extends PageElement {\n\n protected rootElementSelector = 'body';\n\n constructor(readonly path: string) {\n super();\n }\n\n element(): Cypress.Chainable<JQuery<HTMLElement>> {\n return cy.get(this.rootElementSelector);\n }\n\n visit() {\n this.tryAndVisit();\n this.shouldBeActive();\n }\n\n tryAndVisit() {\n cy.visit(this.path);\n }\n\n shouldHaveActivityIds(...ids: string[]) {\n cy.location('search').should('contain', `?aup-interactions=${ids.join('--')}`);\n }\n\n shouldNotHaveActivityIds() {\n cy.location('search').should('not.contain', `?aup-interactions`);\n }\n\n shouldBeActive(options?: { withTitle?: string, withActivities?: string[], withParameters?: boolean }) {\n\n // Note: cy.window() doesn't return a promise... it's a chainable.\n cy.window().then(window => {\n cy['waitUntil'](() => {\n return window['aup.PlaceRouter'] && !window['aup.PlaceRouter'].isNavigating();\n });\n })\n\n const bits = [this.path];\n\n // TODO: add support for parameter names...\n if (options && options.withParameters) {\n bits.push(`;([^\\?]+)`);\n }\n if (options && options.withActivities) {\n bits.push(`\\?aup-interactions=${options.withActivities.join('--')})`);\n }\n\n cy.location('pathname').should('match', new RegExp(`^${bits.join('')}$`));\n\n if (options && options.withTitle) {\n cy.title().should('eq', options.withTitle);\n }\n }\n\n}\n\n\nexport namespace Page {\n\n export function create<T extends object>(path: string, page: (page: Builder) => T): T & Page {\n const builder = new Builder(path);\n return Mixin.createProxy(page(builder), builder) as T & Page;\n }\n\n export class Builder extends Section.Mixin(Page) {\n }\n\n}\n","import { PageElement } from '../page-element';\n\nexport class AupCommandGroup extends PageElement {\n\n}\n","import { PageElement } from '../page-element';\n\nexport class AupMoreMenu extends PageElement {\n\n static create(parent: PageElement) {\n const finder = () => parent.element().contains('aup-more-menu');\n return new AupMoreMenu(finder);\n }\n}\n","import { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\nimport { Types } from './types';\n\nexport class AupPopupMenu extends PageElement {\n\n static create(parent: PageElement, face: Types.CommandFace) {\n const faceFinder = AupCommandFace.createFinder(() => parent.element(), face);\n const buttonFinder = () => faceFinder().closest('button');\n return new AupPopupMenu(buttonFinder);\n }\n}\n","\nimport { PageElement } from '../page-element';\nimport { Types } from './types';\n\nexport class AupToolBar extends PageElement {\n\n static create(parent: PageElement, face: Types.CommandFace) {\n // const findFace = AupCommandFace.createFinder(() => parent.element(), face)\n // return new AupCommandGroup(() => findFace().closest('button'));\n }\n}\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./page-element\";\nexport * from \"./page\";\nexport * from \"./section\";\nexport * from \"./components/aup-command-face\";\nexport * from \"./components/aup-command-group\";\nexport * from \"./components/aup-command\";\nexport * from \"./components/aup-input\";\nexport * from \"./components/aup-more-menu\";\nexport * from \"./components/aup-navigation\";\nexport * from \"./components/aup-popup-menu\";\nexport * from \"./components/aup-tool-bar\";\nexport * from \"./components/button\";\nexport * from \"./components/types\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './exports';\n"],"names":["Mixin","CreateMixin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coolon-angular-ui-powerups-cypress.js","sources":["../../../../libs/angular-ui-powerups/cypress/src/page-element.ts","../../../../libs/angular-ui-powerups/cypress/src/path.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command-face.ts","../../../../libs/angular-ui-powerups/cypress/src/components/button-mixin.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-input.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-navigation.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-table.ts","../../../../libs/angular-ui-powerups/cypress/src/components/button.ts","../../../../libs/angular-ui-powerups/cypress/src/section.ts","../../../../libs/angular-ui-powerups/cypress/src/page.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-command-group.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-more-menu.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-popup-menu.ts","../../../../libs/angular-ui-powerups/cypress/src/components/aup-tool-bar.ts","../../../../libs/angular-ui-powerups/cypress/src/exports.ts","../../../../libs/angular-ui-powerups/cypress/src/coolon-angular-ui-powerups-cypress.ts"],"sourcesContent":["import Chainable = Cypress.Chainable;\nimport * as _ from 'lodash';\nimport { lang } from '@coolon/typescript-utilities';\n\nexport class PageElement {\n\n readonly elementAccessStrategy: PageElement.Accessor;\n readonly parentElementAccessor: () => Cypress.Chainable<JQuery>;\n\n constructor(parent: PageElement | (() => Cypress.Chainable<JQuery>), selector: string | PageElement.Accessor) {\n\n this.parentElementAccessor = parent instanceof PageElement ? () => parent.element() : parent;\n this.elementAccessStrategy = _.isString(selector) ? {\n findIn: p => p.find(selector),\n shouldNotExist: (p: Cypress.Chainable<JQuery>) => p.should('not.have', selector)\n } : selector\n }\n\n element(): Chainable<JQuery> {\n const parent = this.getParentElement();\n return parent ? this.elementAccessStrategy.findIn(parent) : undefined;\n }\n\n getParentElement(): Cypress.Chainable<JQuery> {\n return this.parentElementAccessor ? this.parentElementAccessor() : undefined;\n }\n\n find(selector: string): PageElement {\n return new PageElement(() => this.element(), selector);\n }\n\n click(text?: string) {\n text ? this.element().contains(text).click() : this.element().click();\n }\n\n get should() {\n return this.element().should;\n }\n\n shouldBeVisible() {\n this.should('be.visible');\n }\n\n shouldNotBeVisible() {\n if (!this.elementAccessStrategy.shouldNotExist) {\n lang.abstractMethod(this.constructor);\n }\n this.elementAccessStrategy.shouldNotExist(this.getParentElement())\n }\n}\n\nexport namespace PageElement {\n export interface Accessor {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery>;\n shouldNotExist?(parent: Cypress.Chainable<JQuery>);\n }\n}\n","import { DefaultUrlSerializer, UrlSerializer } from '@angular/router';\n\nlet urlSerialiser: UrlSerializer = new DefaultUrlSerializer();\n\nexport class Path {\n\n constructor(readonly segments: Path.Segment[]) {\n }\n\n static extractVisitParameters(url: string): object {\n let result = {};\n const urlTree = urlSerialiser.parse(url);\n urlTree.root.children.primary.segments.forEach(s => {\n result = { ...result, ...s.parameters }\n });\n return result;\n }\n\n toUrl(params: object): string {\n return this.segments.map(s => s.toUrlPart(params)).join('/');\n }\n\n}\n\nexport namespace Path {\n\n export function setUrlSerialiser(serialiser: UrlSerializer) {\n urlSerialiser = serialiser;\n }\n\n export class Segment {\n\n private routeId: string | undefined;\n private visitParams: string[];\n\n constructor(readonly path: string, params: SegmentParams = {}) {\n this.routeId = params?.routeId;\n this.visitParams = params?.visitParams ?? [];\n }\n\n toUrlPart(params: object) {\n let path: string = this.path;\n this.visitParams.forEach(p => {\n const value = params[p];\n if (value) {\n path = `${path};${p}=${value}`;\n }\n });\n if (this.routeId && params[this.routeId]) {\n path = path + '/' + params[this.routeId];\n }\n return path;\n }\n\n }\n\n export class Builder {\n\n private segments: Segment[] = [];\n\n segment(name: string, params?: SegmentParams): this {\n const builder = new Segment(name, params);\n this.segments.push(builder);\n return this;\n }\n\n getPath(): Path {\n return new Path(this.segments);\n }\n }\n\n export interface SegmentParams {\n routeId?: string;\n visitParams?: string[]\n }\n}\n","import { lang } from '@coolon/typescript-utilities';\nimport { PageElement } from '../page-element';\nimport { Types } from './types';\n\nexport class AupCommandFace extends PageElement {\n\n constructor(parentElement: PageElement, face: Types.CommandFace) {\n super(() => parentElement.element(), AupCommandFace.createAccessor(face));\n }\n\n static createAccessor(face: Types.CommandFace): PageElement.Accessor {\n // AOT barfs if we return a lambda\n const accessor = {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery> {\n return face.text ?\n parent.contains(`aup-command-face`, face.text()) :\n face.icon ?\n parent.find(`aup-icon[ng-reflect-icon=${face.icon()}]`).closest('aup-command-face') :\n undefined;\n },\n shouldNotExist(parent: Cypress.Chainable<JQuery>) {\n return face.text ?\n parent.should(\"not.contain\", `aup-command-face`, face.text()) :\n face.icon ?\n parent.should(\"not.contain\", `aup-icon[ng-reflect-icon=${face.icon()}]`) :\n undefined;\n }\n };\n return accessor;\n }\n}\n\n","import { Constructable } from '@coolon/typescript-utilities';\nimport { PageElement } from '../page-element';\n\nexport function ButtonMixin<T, BC extends Constructable<PageElement>>(Base: BC) {\n return class extends Base {\n constructor(...args: any[]) {\n super(...args);\n }\n\n click() {\n return this.element().click();\n }\n\n shouldBeDisabled() {\n this.should(\"be.disabled\");\n // this.should(\"have.css\", \"color\", \"rgba(0,0,0,0.26)\")\n }\n\n };\n}\n","import { lang } from '@coolon/typescript-utilities';\nimport { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\nimport { ButtonMixin } from './button-mixin';\nimport { Types } from './types';\n\nexport class AupCommand extends ButtonMixin(PageElement) {\n\n constructor(parentElementAccessor: () => Cypress.Chainable<JQuery>, face: Types.CommandFace) {\n const faceAccessor = AupCommandFace.createAccessor(face);\n super(parentElementAccessor, {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery> {\n return faceAccessor.findIn(parent).closest(\"aup-command\");\n }\n });\n }\n \n get should() {\n return this.element().find('button').should;\n }\n\n}\n\n","import { PageElement } from '../page-element';\n\nexport abstract class AupInput<T> extends PageElement {\n\n label() {\n return this.element().find('label');\n }\n\n hint() {\n return this.element().find('mat-hint');\n }\n\n error() {\n return this.element().find('mat-error');\n }\n\n get labelShould() {\n return this.label().should\n }\n\n get hintShould() {\n return this.hint().should\n }\n\n get errorShould() {\n return this.error().should\n }\n\n labelShouldBe(text: string) {\n return this.labelShould(\"have.text\", text);\n }\n\n hintShouldBe(text: string) {\n return this.hintShould(\"have.text\", text);\n }\n\n errorShouldBe(text: string) {\n return this.errorShould(\"have.text\", text);\n }\n\n abstract clear();\n\n abstract setValue(value: T);\n\n}\n\nexport namespace AupInput {\n export class HtmlInput<T> extends AupInput<T> {\n input() {\n return this.element().find('input');\n }\n\n clear() {\n this.input().clear();\n }\n\n setValue(value: T) {\n const input = this.input();\n input.clear();\n input.type(`${value}`);\n this.input().should('have.value', `${value}`);\n }\n\n get should() {\n return this.input().should;\n }\n\n }\n\n export class TextAreaInput<T> extends AupInput<T> {\n\n get should() {\n return this.input().should;\n }\n\n input() {\n return this.element().find('textarea');\n }\n\n clear() {\n this.input().clear();\n }\n\n setValue(value: T) {\n const input = this.input();\n input.clear();\n input.type(`${value}`);\n this.input().should('have.value', value);\n }\n }\n\n}\n","import { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\n\nexport class AupNavigation extends PageElement {\n\n click(label: string) {\n return super.click(label);\n }\n\n face(label: string): AupCommandFace {\n return new AupCommandFace(this, { text: () => label });\n }\n\n shouldHaveLink(label: string) {\n this.face(label).shouldBeVisible();\n }\n\n shouldNotHaveLink(label: string) {\n this.face(label).shouldNotBeVisible();\n }\n}\n","import { PageElement } from '../page-element';\nimport { Section } from '../section';\n\nexport class AupTable extends PageElement {\n\n constructor(parentElementAccessor: () => Cypress.Chainable<JQuery>, selector: string | PageElement.Accessor) {\n super(parentElementAccessor, selector);\n }\n\n row(rowId: any): AupTable.Row {\n return new AupTable.Row(() => this.element(), `tr[aup-table-id=${rowId}]`);\n }\n\n column(columnId: string): AupTable.Column {\n return new AupTable.Column(this, columnId);\n }\n\n}\n\nexport namespace AupTable {\n export class Row extends PageElement {\n\n }\n\n export class Column {\n constructor(readonly table: AupTable, readonly columnId: string) {\n }\n\n cell(content: string): Cell {\n const self = this;\n return new Cell(this.table, {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery> {\n return parent.contains(`aup-table-cell-renderer[column-id=${self.columnId}]`, content);\n }\n });\n }\n }\n\n export class Cell extends PageElement {\n }\n}\n","import { PageElement } from '../page-element';\nimport { ButtonMixin } from './button-mixin';\n\nexport class Button extends ButtonMixin(PageElement) {\n\n constructor(parentElementAccessor: () => Cypress.Chainable<JQuery>, buttonText: string) {\n super(parentElementAccessor, {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery> {\n return parent.contains('button', buttonText);\n },\n shouldNotExist(parent: Cypress.Chainable<JQuery>) {\n return parent.should('not.contain', buttonText);\n }\n });\n }\n\n}\n\n","import { Constructable } from '@coolon/pectin';\nimport { Mixin as CreateMixin } from '@coolon/typescript-utilities';\nimport { AupCommand } from './components/aup-command';\nimport { AupInput } from './components/aup-input';\nimport { AupNavigation } from './components/aup-navigation';\nimport { AupTable } from './components/aup-table';\nimport { Button } from './components/button';\nimport { Types } from './components/types';\nimport { PageElement } from './page-element';\n\nexport interface Section {\n section<T extends object>(selector: string, section: (section: Section) => T): T & PageElement;\n\n find(selector: string): PageElement;\n\n contains(text: string): PageElement;\n\n button(text: string): Button;\n\n aupStringInput(selector?: string): AupInput<string>;\n\n aupTextInput(selector?: string): AupInput<string>;\n\n aupPasswordInput(selector?: string): AupInput<string>;\n\n aupNumberInput(selector?: string): AupInput<number>;\n\n aupCommand(face: Types.CommandFace): AupCommand;\n\n // aupToolbar<T extends object>(builder: () => T): AupToolBar & T\n //\n // aupToolbar<T extends object>(selector: string, builder: () => T): AupToolBar & T\n //\n // aupToolbar<T extends object>(selectorOrBuilder: string | (() => T), builder?: () => T): AupToolBar & T\n //\n // aupPopupMenu<T extends object>(face: CommandFace, builder: () => T): AupPopupMenu & T\n\n aupTabbedNavigation<T extends object>(): AupNavigation;\n aupSideNavigation<T extends object>(): AupNavigation;\n aupTable(selector?: string):AupTable;\n\n}\n\n\nexport namespace Section {\n\n export function Mixin<BC extends Constructable<PageElement>>(Base: BC) {\n\n return class extends Base implements Section {\n\n section<T extends object>(selector: string, section: (section: Section) => T): T & PageElement {\n const impl = new Impl(() => this.element(), selector);\n return CreateMixin.createProxy(section(impl), impl);\n }\n\n find(selector: string): PageElement {\n return new PageElement(() => this.element(), selector);\n }\n\n contains(text: string): PageElement {\n return new PageElement(() => this.element(), {\n findIn: parent => parent.contains(text),\n shouldNotExist: (parent: Cypress.Chainable<JQuery>) => parent.should(\"not.contain\", text)\n });\n }\n\n button(text: string): Button {\n return new Button(() => this.element(), text);\n }\n\n aupStringInput(selector?: string): AupInput<string> {\n return new AupInput.HtmlInput(() => this.element(), selector ?? 'aup-string-input');\n }\n\n aupTextInput(selector?: string): AupInput<string> {\n return new AupInput.TextAreaInput(() => this.element(), selector ?? 'aup-text-input');\n }\n\n aupPasswordInput(selector?: string): AupInput<string> {\n return new AupInput.HtmlInput(() => this.element(), selector ?? 'aup-password-input');\n }\n\n aupNumberInput(selector?: string): AupInput<number> {\n return new AupInput.HtmlInput(() => this.element(), selector ?? 'aup-number-input');\n }\n\n aupCommand(face: Types.CommandFace): AupCommand {\n return new AupCommand(() => this.element(), face);\n }\n\n aupTabbedNavigation<T extends object>(): AupNavigation {\n return new AupNavigation(() => this.element(), 'aup-tabbed-place-navigation');\n }\n\n aupSideNavigation<T extends object>(): AupNavigation {\n return new AupNavigation(() => this.element(), 'aup-list-place-nav');\n }\n\n aupTable(selector?: string):AupTable {\n return new AupTable(() => this.element(), selector ?? 'aup-table');\n }\n\n // aupToolbar<T extends object>(builder: () => T): AupToolBar\n // aupToolbar<T extends object>(selector: string, builder: () => T): AupToolBar\n // aupToolbar<T extends object>(selectorOrBuilder: string | (() => T), builder?: () => T): AupToolBar {\n // return lang.notImplemented();\n // }\n //\n // aupPopupMenu<T extends object>(face: CommandFace, builder: () => T): AupPopupMenu & T {\n // return lang.notImplemented();\n // }\n //\n // aupMoreMenu<T extends object>(builder: () => T): AupPopupMenu & T {\n // return lang.notImplemented();\n // }\n\n };\n }\n\n class Impl extends Mixin(PageElement) {\n }\n\n\n}\n","import { Mixin } from '@coolon/typescript-utilities';\nimport * as _ from 'lodash';\nimport { PageElement } from './page-element';\nimport { Path } from './path';\nimport { Section } from './section';\n\nexport class Page extends PageElement {\n\n protected rootElementSelector = 'body';\n\n constructor(readonly path: Path) {\n super(undefined, undefined);\n }\n\n element(): Cypress.Chainable<JQuery<HTMLElement>> {\n return cy.get(this.rootElementSelector);\n }\n\n visit(params?: object) {\n this.tryAndVisit(params);\n this.shouldBeActive(params);\n }\n\n tryAndVisit(params?: object) {\n cy.visit(\"/\" + this.path.toUrl(params ?? {}));\n }\n shouldHaveActivityIds(...ids: string[]) {\n cy.location('search').should('contain', `?aup-interactions=${ids.join('--')}`);\n }\n\n shouldNotHaveActivityIds() {\n cy.location('search').should('not.contain', `?aup-interactions`);\n }\n\n shouldHaveTitle(title: string) {\n cy.title().should('eq', title);\n }\n\n shouldBeActive(withParameters?: object) {\n // Note: cy.window() doesn't return a promise... it's a chainable.\n cy.window().then(window => {\n cy['waitUntil'](() => {\n return window['aup.PlaceRouter'] && !window['aup.PlaceRouter'].isNavigating();\n });\n });\n\n\n if (withParameters) {\n cy.location('pathname').then(path => {\n const urlParams = Path.extractVisitParameters(path);\n Object.keys(withParameters).forEach(param => {\n const expected = withParameters[param];\n // @ts-ignore\n expect(urlParams[param]).to.equal(expected);\n })\n });\n }\n }\n\n}\n\n\nexport namespace Page {\n\n\n export function create<T extends object>(path: string, page: (page: PageBuilder) => T): T & Page\n // tslint:disable-next-line:unified-signatures\n export function create<T extends object>(pathBuilder: ((pathBuilder: Path.Builder) => void), page: (page: PageBuilder) => T): T & Page\n export function create<T extends object>(pathOrPathBuilder: string | ((pathBuilder: Path.Builder) => void), page: (page: PageBuilder) => T): T & Page {\n const pathBuilder = new Path.Builder();\n if (_.isString(pathOrPathBuilder)) {\n pathOrPathBuilder.split(\"/\").filter(p => !_.isEmpty(p)).forEach(p => pathBuilder.segment(p))\n } else {\n pathOrPathBuilder(pathBuilder)\n }\n const builder = new PageBuilder(pathBuilder.getPath());\n return Mixin.createProxy(page(builder), builder) as T & Page;\n }\n\n\n export class PageBuilder extends Section.Mixin(Page) {\n }\n\n}\n","import { PageElement } from '../page-element';\n\nexport class AupCommandGroup extends PageElement {\n\n}\n","import { PageElement } from '../page-element';\n\nexport class AupMoreMenu extends PageElement {\n\n static create(parent: PageElement) {\n return new AupMoreMenu(parent, 'aup-more-menu');\n }\n}\n","import { lang } from '@coolon/typescript-utilities';\nimport { PageElement } from '../page-element';\nimport { AupCommandFace } from './aup-command-face';\nimport { Types } from './types';\n\nexport class AupPopupMenu extends PageElement {\n\n constructor(parentElementAccessor: PageElement | (() => Cypress.Chainable<JQuery>), face: Types.CommandFace) {\n const accessor = AupCommandFace.createAccessor(face)\n super(parentElementAccessor, {\n findIn(parent: Cypress.Chainable<JQuery>): Cypress.Chainable<JQuery> {\n return accessor.findIn(parent).closest('button');\n },\n shouldNotExist(parent: Cypress.Chainable<JQuery>) {\n accessor.shouldNotExist(parent);\n }\n });\n }\n\n static create(parent: PageElement, face: Types.CommandFace) {\n return new AupPopupMenu(parent, face);\n }\n}\n","\nimport { PageElement } from '../page-element';\nimport { Types } from './types';\n\nexport class AupToolBar extends PageElement {\n\n static create(parent: PageElement, face: Types.CommandFace) {\n // const findFace = AupCommandFace.createFinder(() => parent.element(), face)\n // return new AupCommandGroup(() => findFace().closest('button'));\n }\n}\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./page-element\";\nexport * from \"./page\";\nexport * from \"./path\";\nexport * from \"./section\";\nexport * from \"./components/aup-command-face\";\nexport * from \"./components/aup-command-group\";\nexport * from \"./components/aup-command\";\nexport * from \"./components/aup-input\";\nexport * from \"./components/aup-more-menu\";\nexport * from \"./components/aup-navigation\";\nexport * from \"./components/aup-popup-menu\";\nexport * from \"./components/aup-table\";\nexport * from \"./components/aup-tool-bar\";\nexport * from \"./components/button-mixin\";\nexport * from \"./components/button\";\nexport * from \"./components/types\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './exports';\n\nexport {Types as ɵa} from './components/types';"],"names":["Mixin","CreateMixin"],"mappings":"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"}
|