From 8dfc0da348b56767f7541dc27b7fcbed27f6086a Mon Sep 17 00:00:00 2001 From: Uladzislau Arlouski Date: Mon, 10 Jun 2024 12:48:11 +0300 Subject: [PATCH] Consider sorting of one element collection as passed --- .../plugins/partials/generic-ui-steps.adoc | 2 +- .../vividus/steps/ui/GenericElementSteps.java | 2 +- .../steps/ui/GenericElementStepsTests.java | 28 ++++++++----------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/docs/modules/plugins/partials/generic-ui-steps.adoc b/docs/modules/plugins/partials/generic-ui-steps.adoc index f74c9633d5..925619ca13 100644 --- a/docs/modules/plugins/partials/generic-ui-steps.adoc +++ b/docs/modules/plugins/partials/generic-ui-steps.adoc @@ -277,7 +277,7 @@ When I wait until element located by `id(indicator)` has text matching `\d+` === Verify elements order Gets a collection of elements by locator and checks that they are sorted by -their text in the specified order. The collection should have more than 1 +their text in the specified order. The collection should have at least one element with not empty text, otherwise the step fails. [source,gherkin] diff --git a/vividus-extension-selenium/src/main/java/org/vividus/steps/ui/GenericElementSteps.java b/vividus-extension-selenium/src/main/java/org/vividus/steps/ui/GenericElementSteps.java index 38f347b27f..e7be804892 100644 --- a/vividus-extension-selenium/src/main/java/org/vividus/steps/ui/GenericElementSteps.java +++ b/vividus-extension-selenium/src/main/java/org/vividus/steps/ui/GenericElementSteps.java @@ -122,7 +122,7 @@ public void assertElementsNumberInState(State state, Locator locator, Comparison @Then("elements located by `$locator` are sorted by text in $sortingOrder order") public void areElementSorted(Locator locator, StringSortingOrder sortingOrder) { - ComparisonRule rule = ComparisonRule.GREATER_THAN; + ComparisonRule rule = ComparisonRule.GREATER_THAN_OR_EQUAL_TO; int requiredNumber = 1; List elements = baseValidations.assertNumberOfElementsFound("The elements to check the sorting", diff --git a/vividus-extension-selenium/src/test/java/org/vividus/steps/ui/GenericElementStepsTests.java b/vividus-extension-selenium/src/test/java/org/vividus/steps/ui/GenericElementStepsTests.java index f23b8a1759..6924be0a16 100644 --- a/vividus-extension-selenium/src/test/java/org/vividus/steps/ui/GenericElementStepsTests.java +++ b/vividus-extension-selenium/src/test/java/org/vividus/steps/ui/GenericElementStepsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2019-2023 the original author or authors. + * Copyright 2019-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -136,8 +136,8 @@ void shouldCheckThatElementsAreSorted() List elements = List.of(webElement, webElement, webElement); Locator locator = new Locator(TestLocatorType.SEARCH, VALUE); - when(baseValidations.assertNumberOfElementsFound(ELEMENTS_TO_CHECK, locator, 1, ComparisonRule.GREATER_THAN)) - .thenReturn(elements); + when(baseValidations.assertNumberOfElementsFound(ELEMENTS_TO_CHECK, locator, 1, + ComparisonRule.GREATER_THAN_OR_EQUAL_TO)).thenReturn(elements); when(elementActions.getElementText(webElement)).thenReturn(A_LETTER) .thenReturn(C_LETTER) .thenReturn(B_LETTER); @@ -156,14 +156,12 @@ void shouldCheckThatElementsAreSorted() } @Test - void shouldNotCheckIfNumberOfElementsIsLessThanTwo() + void shouldNotCheckIfNumberOfElementsIsLessThanOne() { - WebElement webElement = mock(WebElement.class); - List elements = List.of(webElement); Locator locator = new Locator(TestLocatorType.SEARCH, VALUE); - when(baseValidations.assertNumberOfElementsFound(ELEMENTS_TO_CHECK, locator, 1, ComparisonRule.GREATER_THAN)) - .thenReturn(elements); + when(baseValidations.assertNumberOfElementsFound(ELEMENTS_TO_CHECK, locator, 1, + ComparisonRule.GREATER_THAN_OR_EQUAL_TO)).thenReturn(List.of()); elementSteps.areElementSorted(locator, StringSortingOrder.ASCENDING); @@ -175,24 +173,22 @@ void shouldNotCheckIfNumberOfElementsIsLessThanTwo() void shouldNotCheckIfElementsAreFiltredOutByText() { WebElement webElement = mock(WebElement.class); - List elements = List.of(webElement, webElement, webElement); + List elements = List.of(webElement, webElement); Locator locator = new Locator(TestLocatorType.SEARCH, VALUE); - when(baseValidations.assertNumberOfElementsFound(ELEMENTS_TO_CHECK, locator, 1, ComparisonRule.GREATER_THAN)) - .thenReturn(elements); - when(elementActions.getElementText(webElement)).thenReturn(A_LETTER) - .thenReturn(StringUtils.EMPTY) + when(baseValidations.assertNumberOfElementsFound(ELEMENTS_TO_CHECK, locator, 1, + ComparisonRule.GREATER_THAN_OR_EQUAL_TO)).thenReturn(elements); + when(elementActions.getElementText(webElement)).thenReturn(StringUtils.EMPTY) .thenReturn(null); - when(softAssert.assertTrue(String.format(ELEMENT_CONTAINS_TEXT, 1), true)).thenReturn(true); + when(softAssert.assertTrue(String.format(ELEMENT_CONTAINS_TEXT, 1), false)).thenReturn(false); when(softAssert.assertTrue(String.format(ELEMENT_CONTAINS_TEXT, 2), false)).thenReturn(false); - when(softAssert.assertTrue(String.format(ELEMENT_CONTAINS_TEXT, 3), false)).thenReturn(false); elementSteps.areElementSorted(locator, StringSortingOrder.ASCENDING); verify(softAssert).recordFailedAssertion( - "There are not enough elements with text to check sorting: " + List.of(A_LETTER)); + "There are not enough elements with text to check sorting: " + List.of()); verifyNoMoreInteractions(baseValidations, softAssert, elementActions); }