Skip to content

Commit 53a2f76

Browse files
committed
#4926: Tests refactoring: Paginator element fix
1 parent 1a7c77c commit 53a2f76

File tree

4 files changed

+140
-74
lines changed

4 files changed

+140
-74
lines changed

jdi-light-angular-tests/src/test/java/io/github/epam/angular/tests/elements/complex/PaginatorTests.java

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,21 @@ public void basicPaginatorTest() {
5757

5858
//Go through each page sequentially:
5959
for (int pageIndex = 0; pageIndex < PAGE_SIZE - 1; pageIndex++) {
60+
final String rangeLabel = format(RANGE_PATTERN, pageIndex * STEP + 1, Math.min(pageIndex * STEP + STEP, LENGTH), LENGTH);
61+
6062
paginatorConfigurable.has().pageIndex(pageIndex)
6163
.and().has().length(LENGTH)
62-
.and().has().rangeLabel(format(RANGE_PATTERN, pageIndex * STEP + 1, Math.min(pageIndex * STEP + STEP, LENGTH), LENGTH));
64+
.and().has().rangeLabel(rangeLabel);
6365
paginatorConfigurable.nextPage();
6466
}
6567

6668
//Go through each page backwards
6769
for (int pageIndex = PAGE_SIZE - 1; pageIndex > 0; pageIndex--) {
70+
final String rangeLabel = format(RANGE_PATTERN, pageIndex * STEP + 1, Math.min(pageIndex * STEP + STEP, LENGTH), LENGTH);
71+
6872
paginatorConfigurable.has().pageIndex(pageIndex)
6973
.and().has().length(LENGTH)
70-
.and().has().rangeLabel(format(RANGE_PATTERN, pageIndex * STEP + 1, Math.min(pageIndex * STEP + STEP, LENGTH), LENGTH));
74+
.and().has().rangeLabel(rangeLabel);
7175
paginatorConfigurable.previousPage();
7276
}
7377
paginatorConfigurable.has().pageIndex(0)
@@ -78,42 +82,40 @@ public void basicPaginatorTest() {
7882

7983
@Test(description = "The test checks first page and last page buttons labels for paginator")
8084
public void firstAndLastPageButtonPaginatorTest() {
81-
paginatorFirstLastButtons.has().showFirstLastButtons(true);
82-
paginatorFirstLastButtons.has().firstPageLabel("test firstPageLabel");
83-
paginatorFirstLastButtons.has().lastPageLabel("test lastPageLabel");
84-
85-
paginatorFirstLastButtons.firstPageButton().is().disabled();
86-
paginatorFirstLastButtons.lastPageButton().is().enabled();
85+
paginatorFirstLastButtons.has().firstLastButtonsShown(true)
86+
.and().has().firstPageLabel("test firstPageLabel")
87+
.and().has().lastPageLabel("test lastPageLabel")
88+
.and().has().firstPageDisplayed(true)
89+
.and().has().lastPageDisplayed(true);
8790

88-
paginatorFirstLastButtons.lastPageButton().click();
89-
paginatorFirstLastButtons.firstPageButton().is().enabled();
90-
paginatorFirstLastButtons.lastPageButton().is().disabled();
91-
92-
paginatorConfigurable.has().showFirstLastButtons(false);
91+
paginatorConfigurable.has().firstLastButtonsShown(false);
9392
}
9493

9594
@Test(description = "The test checks color theme of the paginators")
9695
public void colorPaginatorTest() {
97-
paginatorColorPrimary.has().color(PRIMARY);
98-
paginatorColorPrimary.has().colorOfBoarder(PRIMARY);
99-
paginatorColorPrimary.has().colorOfSelectedOption(PRIMARY);
96+
paginatorColorPrimary.has().colorTheme(PRIMARY)
97+
.and().has().borderColor(PRIMARY)
98+
.and().has().selectedOptionColor(PRIMARY);
99+
100+
paginatorColorPrimary.has().colorTheme("primary")
101+
.and().has().borderColor("rgb(103, 58, 183)")
102+
.and().has().selectedOptionColor("rgba(103, 58, 183, 1)");
100103

101-
paginatorColorWarn.has().color(WARN);
102-
paginatorColorWarn.has().colorOfBoarder(WARN);
103-
paginatorColorWarn.has().colorOfSelectedOption(WARN);
104+
paginatorColorWarn.has().colorTheme(WARN)
105+
.and().has().borderColor(WARN)
106+
.and().has().selectedOptionColor(WARN);
104107

105-
paginatorColorAccent.has().color(ACCENT);
106-
paginatorColorAccent.has().colorOfBoarder(ACCENT);
107-
paginatorColorAccent.has().colorOfSelectedOption(ACCENT);
108+
paginatorColorAccent.has().colorTheme(ACCENT)
109+
.and().has().borderColor(ACCENT)
110+
.and().has().selectedOptionColor(ACCENT);
108111
}
109112

110113
@Test(description = "The test checks disabled paginator and disabled elements of the paginators")
111114
public void navigationDisabledPaginatorTest() {
112-
paginatorDisabledOption.is().disabled();
113-
114-
paginatorDisabledOption.previousButton().is().disabled();
115-
paginatorDisabledOption.nextButton().is().disabled();
116-
paginatorDisabledOption.itemPerPageSelector().is().disabled();
115+
paginatorDisabledOption.is().disabled()
116+
.and().has().previousDisabled()
117+
.and().has().nextDisabled()
118+
.and().has().itemPerPageSelectorDisabled();
117119

118120
paginatorHideSizeOption.is().enabled();
119121
paginatorColorWarn.is().enabled();
@@ -138,8 +140,9 @@ public void itemPerPagePaginatorTest() {
138140

139141
for (Integer option : PAGE_SIZE_OPTIONS) {
140142
paginatorConfigurable.select(option);
143+
final String rangeLabel = format(RANGE_PATTERN, 1, Math.min(option, LENGTH), LENGTH);
141144
paginatorConfigurable.has().itemsPerPageSelected(option)
142-
.and().has().rangeLabel(format(RANGE_PATTERN, 1, Math.min(option, LENGTH), LENGTH));
145+
.and().has().rangeLabel(rangeLabel);
143146
}
144147
}
145148
}

jdi-light-angular/src/main/java/com/epam/jdi/light/angular/asserts/PaginatorAssert.java

Lines changed: 73 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import java.util.List;
1010

1111
import static com.epam.jdi.light.asserts.core.SoftAssert.jdiAssert;
12-
import static com.jdiai.tools.StringUtils.format;
1312

1413
public class PaginatorAssert extends UIAssert<PaginatorAssert, Paginator> {
1514
@JDIAction(value = "Assert that '{name}' has '{0}' label", isAssert = true)
@@ -33,53 +32,71 @@ public PaginatorAssert itemsPerPageList(final List<Integer> options) {
3332

3433
@JDIAction(value = "Assert that range is '{0}' for '{name}'", isAssert = true)
3534
public PaginatorAssert rangeLabel(String label) {
36-
String expected = format(label);
37-
jdiAssert(element().range(), Matchers.is(expected));
35+
jdiAssert(element().range(), Matchers.is(label));
3836
return this;
3937
}
4038

4139
@JDIAction(value = "Assert that '{name}' has '{0}' color theme", isAssert = true)
42-
public PaginatorAssert color(AngularColors value) {
43-
jdiAssert(element().color(), Matchers.equalTo(value));
40+
public PaginatorAssert colorTheme(AngularColors value) {
41+
final AngularColors color = AngularColors.fromName(element().colorTheme());
42+
jdiAssert(color, Matchers.equalTo(value));
43+
return this;
44+
}
45+
46+
@JDIAction(value = "Assert that '{name}' has '{0}' color theme", isAssert = true)
47+
public PaginatorAssert colorTheme(String value) {
48+
jdiAssert(element().colorTheme(), Matchers.equalToIgnoringCase(value));
4449
return this;
4550
}
4651

4752
@JDIAction(value = "Assert that '{name}' has '{0}' color of the boarder", isAssert = true)
48-
public PaginatorAssert colorOfBoarder(AngularColors value) {
49-
AngularColors actualColor = AngularColors.fromColor(element().colorOfBoarder());
53+
public PaginatorAssert borderColor(AngularColors value) {
54+
AngularColors actualColor = AngularColors.fromColor(element().boarderColor());
5055
jdiAssert(actualColor, Matchers.equalTo(value));
5156
return this;
5257
}
5358

59+
@JDIAction(value = "Assert that '{name}' has '{0}' color of the boarder", isAssert = true)
60+
public PaginatorAssert borderColor(String value) {
61+
jdiAssert(element().boarderColor(), Matchers.equalTo(value));
62+
return this;
63+
}
64+
5465
@JDIAction(value = "Assert that '{name}' has '{0}' color of the selected option", isAssert = true)
55-
public PaginatorAssert colorOfSelectedOption(AngularColors value) {
56-
AngularColors actualColorInList = AngularColors.fromColor(element().colorInList());
66+
public PaginatorAssert selectedOptionColor(AngularColors value) {
67+
AngularColors actualColorInList = AngularColors.fromColor(element().selectedOptionColor());
5768
jdiAssert(actualColorInList, Matchers.equalTo(value));
5869
return this;
5970
}
6071

72+
@JDIAction(value = "Assert that '{name}' has '{0}' color of the selected option", isAssert = true)
73+
public PaginatorAssert selectedOptionColor(String value) {
74+
jdiAssert(element().selectedOptionColor(), Matchers.equalTo(value));
75+
return this;
76+
}
77+
6178
@JDIAction(value = "Assert that '{name} has firstPageLabel='{0}'", isAssert = true)
6279
public PaginatorAssert firstPageLabel(String label) {
63-
jdiAssert(element().firstPageLabel(), Matchers.is(label));
80+
jdiAssert(element().firstPageLabel(), Matchers.equalTo(label));
6481
return this;
6582
}
6683

6784
@JDIAction(value = "Assert that '{name} has lastPageLabel='{0}'", isAssert = true)
6885
public PaginatorAssert lastPageLabel(String label) {
69-
jdiAssert(element().lastPageLabel(), Matchers.is(label));
86+
jdiAssert(element().lastPageLabel(), Matchers.equalTo(label));
7087
return this;
7188
}
7289

7390
@JDIAction(value = "Assert that '{name}' has hidden page size", isAssert = true)
7491
public PaginatorAssert hiddenPageSize(final boolean value) {
75-
jdiAssert(element().hidePageSize(), Matchers.is(value),
92+
jdiAssert(element().isPageSizeHidden(), Matchers.is(value),
7693
value ? "page size should be hidden" : "page size should be visible");
7794
return this;
7895
}
7996

8097
@JDIAction(value = "Assert that '{name}' has shown first and last page buttons", isAssert = true)
81-
public PaginatorAssert showFirstLastButtons(boolean value) {
82-
jdiAssert(element().showFirstLastButtons(), Matchers.is(value),
98+
public PaginatorAssert firstLastButtonsShown(boolean value) {
99+
jdiAssert(element().isFirstLastButtonsShown(), Matchers.is(value),
83100
value ? "first and last buttons should be shown" : "first and last buttons should be hidden"
84101
);
85102
return this;
@@ -99,5 +116,47 @@ public PaginatorAssert length(int length) {
99116
jdiAssert(element().length(), Matchers.is(length));
100117
return this;
101118
}
119+
120+
@JDIAction(value = "Assert that previous button enabled for '{name}'", isAssert = true)
121+
public PaginatorAssert previousEnabled() {
122+
jdiAssert(element().previousButton().isEnabled() ? "enabled" : "disabled", Matchers.is("enabled"));
123+
return this;
124+
}
125+
126+
@JDIAction(value = "Assert that previous button disabled for '{name}'", isAssert = true)
127+
public PaginatorAssert previousDisabled() {
128+
jdiAssert(element().previousButton().isEnabled() ? "enabled" : "disabled", Matchers.is("disabled"));
129+
return this;
130+
}
131+
132+
@JDIAction(value = "Assert that next button enabled for '{name}'", isAssert = true)
133+
public PaginatorAssert nextEnabled() {
134+
jdiAssert(element().nextButton().isEnabled() ? "enabled" : "disabled", Matchers.is("enabled"));
135+
return this;
136+
}
137+
138+
@JDIAction(value = "Assert that next button disabled for '{name}'", isAssert = true)
139+
public PaginatorAssert nextDisabled() {
140+
jdiAssert(element().nextButton().isEnabled() ? "enabled" : "disabled", Matchers.is("disabled"));
141+
return this;
142+
}
143+
144+
@JDIAction(value = "Assert that item per page selector is disabled for '{name}'", isAssert = true)
145+
public PaginatorAssert itemPerPageSelectorDisabled() {
146+
jdiAssert(element().itemPerPageSelector().isDisabled() ? "disabled" : "enabled", Matchers.is("disabled"));
147+
return this;
148+
}
149+
150+
@JDIAction(value = "Assert that first page button displayed={0} for '{name}'", isAssert = true)
151+
public PaginatorAssert firstPageDisplayed(boolean value) {
152+
jdiAssert(element().firstPageButton().isDisplayed() ? "displayed" : "hidden", Matchers.is(value ? "displayed" : "hidden"));
153+
return this;
154+
}
155+
156+
@JDIAction(value = "Assert that last page button displayed={0} for '{name}'", isAssert = true)
157+
public PaginatorAssert lastPageDisplayed(boolean value) {
158+
jdiAssert(element().lastPageButton().isDisplayed() ? "displayed" : "hidden", Matchers.is(value ? "displayed" : "hidden"));
159+
return this;
160+
}
102161
}
103162

jdi-light-angular/src/main/java/com/epam/jdi/light/angular/elements/complex/Paginator.java

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.epam.jdi.light.angular.asserts.PaginatorAssert;
44
import com.epam.jdi.light.angular.elements.common.Button;
5-
import com.epam.jdi.light.angular.elements.enums.AngularColors;
65
import com.epam.jdi.light.common.JDIAction;
76
import com.epam.jdi.light.elements.base.UIBaseElement;
87

@@ -11,6 +10,8 @@
1110
import java.util.regex.Pattern;
1211
import java.util.stream.Collectors;
1312

13+
import static java.lang.Integer.parseInt;
14+
1415
/**
1516
* To see an example of Paginator web element please visit <a href="https://material.angular.io/components/paginator/overview">...</a>.
1617
*/
@@ -27,12 +28,17 @@ public class Paginator extends UIBaseElement<PaginatorAssert> {
2728
private static final String PAGINATOR_PAGE_SIZE_SECTION_LOCATOR = ".mat-mdc-paginator-page-size";
2829
private static final String ITEM_PER_PAGE_SELECTOR_LOCATOR = "mat-select";
2930
private final PaginatorSelector itemPerPageSelector;
30-
private static final Pattern PATTERN = Pattern.compile("^(\\d+)( . (\\d+))? .+ (\\d+)");
31+
private Pattern rangeLabelPattern = Pattern.compile("^(\\d+)( . (\\d+))? .+ (\\d+)");
3132

3233
public Paginator() {
3334
itemPerPageSelector = new PaginatorSelector().setCore(PaginatorSelector.class, core().find(ITEM_PER_PAGE_SELECTOR_LOCATOR));
3435
}
3536

37+
@JDIAction("Set pattern for '{name}' range label")
38+
public void setRangeLabelPattern(String regex) {
39+
rangeLabelPattern = Pattern.compile(regex);
40+
}
41+
3642
@Override
3743
public PaginatorAssert is() {
3844
return new PaginatorAssert().set(this);
@@ -97,7 +103,7 @@ public void select(int number) {
97103

98104
@JDIAction("Get selected option for '{name}'")
99105
public int selected() {
100-
return Integer.parseInt(itemPerPageSelector.value());
106+
return parseInt(itemPerPageSelector.toggleValue());
101107
}
102108

103109
@JDIAction("Get range for '{name}'")
@@ -115,24 +121,24 @@ public void nextPage() {
115121
nextButton().click();
116122
}
117123

118-
@JDIAction("Get COLOR theme for '{name}'")
119-
public AngularColors color() {
120-
final AngularColors color = AngularColors.fromName(core().attr("color"));
121-
return color.equals(AngularColors.UNDEFINED) ? AngularColors.PRIMARY : color;
124+
@JDIAction("Get color theme for '{name}'")
125+
public String colorTheme() {
126+
final String colorAtt = "color";
127+
return core().hasAttribute(colorAtt) ? core().attr(colorAtt) : "primary";
122128
}
123129

124-
@JDIAction("Get COLOR of selector`s boarder for '{name}'")
125-
public String colorOfBoarder() {
130+
@JDIAction("Get color of selector`s boarder for '{name}'")
131+
public String boarderColor() {
126132
itemPerPageSelector.expand();
127133
final String cssValue = core().find(ITEM_PER_PAGE_FIELD_LOCATOR).find(BOARDER_LOCATOR).getCssValue("border-color");
128134
itemPerPageSelector.collapse();
129135
return cssValue;
130136
}
131137

132-
@JDIAction("Get COLOR for selected value in the list of options for '{name}'")
133-
public String colorInList() {
138+
@JDIAction("Get color for selected value in the list of options for '{name}'")
139+
public String selectedOptionColor() {
134140
itemPerPageSelector.expand();
135-
String cssValue = itemPerPageSelector.selectedElement().getCssValue("color");
141+
String cssValue = itemPerPageSelector.selectedOptionFromList().getCssValue("color");
136142
itemPerPageSelector.collapse();
137143
return cssValue;
138144
}
@@ -148,33 +154,32 @@ public String firstPageLabel() {
148154
}
149155

150156
@JDIAction("Get if '{name}' page size selector is hidden")
151-
public boolean hidePageSize() {
157+
public boolean isPageSizeHidden() {
152158
return core().find(PAGINATOR_PAGE_SIZE_SECTION_LOCATOR).isHidden();
153159
}
154160

155161
@JDIAction("Get '{name}' page index")
156162
public int pageIndex() {
157-
final int first = Integer.parseInt(getMatcherForRange().group(1));
158-
return first != 0 ? (first - 1) / selected() : 0;
163+
final int first = parseInt(getMatcherForRange().group(1));
164+
return (first - 1) / selected();
159165
}
160166

161-
@JDIAction("Get '{name}' page index")
167+
@JDIAction("Get '{name}' total number of items that are being paginated")
162168
public int length() {
163-
return Integer.parseInt(getMatcherForRange().group(4));
169+
return parseInt(getMatcherForRange().group(4));
170+
}
171+
172+
@JDIAction("Get if '{name}' has first and last page buttons shown")
173+
public boolean isFirstLastButtonsShown() {
174+
return lastPageButton().isDisplayed() && firstPageButton().isDisplayed();
164175
}
165176

166-
@JDIAction("Parse '{name}' range with pattern {PATTERN}")
177+
@JDIAction("Parse '{name}' range with pattern '{rangeLabelPattern}'")
167178
private Matcher getMatcherForRange() {
168-
Matcher matcher = PATTERN.matcher(range());
179+
Matcher matcher = rangeLabelPattern.matcher(range());
169180
if (!matcher.matches()) {
170-
throw new IllegalStateException(
171-
String.format("Pattern '%s' has no matches for string '%s'", PATTERN.pattern(), range()));
181+
throw new IllegalStateException(String.format("Pattern '%s' has no matches for string '%s'", rangeLabelPattern.pattern(), range()));
172182
}
173183
return matcher;
174184
}
175-
176-
@JDIAction("Get if '{name}' has first and last page buttons shown")
177-
public boolean showFirstLastButtons() {
178-
return lastPageButton().isDisplayed() && firstPageButton().isDisplayed();
179-
}
180185
}

0 commit comments

Comments
 (0)