From 4afa9ff75e372dc419980fb5328fee8c22a51666 Mon Sep 17 00:00:00 2001 From: Stanislav Frolov Date: Fri, 25 May 2018 16:31:01 +0300 Subject: [PATCH] Add opposite checking steps part3 (#69) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * added new step, update selenide to 4.11.4, updated unit tests @Тогда("^элементы списка \"([^\"]*)\" не содержат текст \"([^\"]*)\"$") --- build.gradle | 2 +- .../java/ru/alfabank/steps/DefaultSteps.java | 19 ++++++++++++++--- .../ru/alfabank/steps/DefaultStepsTest.java | 21 ++++++++++++++++--- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index ba5c2824..d659ae29 100644 --- a/build.gradle +++ b/build.gradle @@ -53,7 +53,7 @@ targetCompatibility = 1.8 project.ext { cucumberVersion = '2.4.0' - selenideVersion = '4.11.2' + selenideVersion = '4.11.4' } dependencies { diff --git a/src/main/java/ru/alfabank/steps/DefaultSteps.java b/src/main/java/ru/alfabank/steps/DefaultSteps.java index bfab722b..6b4844c3 100644 --- a/src/main/java/ru/alfabank/steps/DefaultSteps.java +++ b/src/main/java/ru/alfabank/steps/DefaultSteps.java @@ -821,6 +821,20 @@ public void checkListElementsContainsText(String listName, String expectedValue) elementsListText.stream().allMatch(item -> item.contains(value.toLowerCase()))); } + /** + * Проверка, что каждый элемент списка не содержит ожидаемый текст + */ + @Тогда("^элементы списка \"([^\"]*)\" не содержат текст \"([^\"]*)\"$") + public void checkListElementsNotContainsText(String listName, String expectedValue) { + final String value = getPropertyOrValue(expectedValue); + List listOfElementsFromPage = akitaScenario.getCurrentPage().getElementsList(listName); + List elementsListText = listOfElementsFromPage.stream() + .map(element -> element.getText().trim().toLowerCase()) + .collect(toList()); + assertFalse(String.format("Элемены списка %s: [%s] содержат текст [%s] ", listName, elementsListText, value), + elementsListText.stream().allMatch(item -> item.contains(value.toLowerCase()))); + } + /** * Ввод в поле случайной последовательности латинских или кириллических букв задаваемой длины */ @@ -869,12 +883,11 @@ public void inputAndSetRandomNumSequence(String elementName, int seqLength, Stri public void checkListTextsByRegExp(String listName, String pattern) { akitaScenario.getCurrentPage().getElementsList(listName).forEach(element -> { String str = akitaScenario.getCurrentPage().getAnyElementText(element); - Assert.assertTrue( - format("Текст '%s' из списка '%s' не соответствует формату регулярного выражения", str, listName), isTextMatches(str, pattern)); + assertTrue(format("Текст '%s' из списка '%s' не соответствует формату регулярного выражения", str, listName), + isTextMatches(str, pattern)); }); } - /** * Выполняется запуск js-скрипта с указанием в js.executeScript его логики * Скрипт можно передать как аргумент метода или значение из application.properties diff --git a/src/test/java/ru/alfabank/steps/DefaultStepsTest.java b/src/test/java/ru/alfabank/steps/DefaultStepsTest.java index 0efa7408..1adb5395 100644 --- a/src/test/java/ru/alfabank/steps/DefaultStepsTest.java +++ b/src/test/java/ru/alfabank/steps/DefaultStepsTest.java @@ -536,20 +536,35 @@ public void selectRandomElementFromListAndSaveVarNegative() { } @Test - public void checkListElementsContainsTextPositive() { + public void testCheckListElementsContainsTextPositive() { ds.checkListElementsContainsText("List2", "item"); } @Test - public void checkListElementsContainsTextPositiveWithProps() { + public void testCheckListElementsContainsTextPositiveWithProps() { ds.checkListElementsContainsText("List2", "itemValueInProps"); } @Test(expected = AssertionError.class) - public void checkListElementsContainsTextNegative() { + public void testCheckListElementsContainsTextNegative() { ds.checkListElementsContainsText("List2", "item1"); } + @Test + public void testCheckListElementsNotContainsTextPositive() { + ds.checkListElementsNotContainsText("List2", "item1"); + } + + @Test(expected = AssertionError.class) + public void testCheckListElementsNotContainsTextNegative() { + ds.checkListElementsNotContainsText("List2", "item"); + } + + @Test(expected = AssertionError.class) + public void testCheckListElementsNotContainsTextNegativeWithProps() { + ds.checkListElementsNotContainsText("List2", "itemValueInProps"); + } + @Test public void checkIfListInnerTextConsistsOfTableElements() { ArrayList types = new ArrayList<>();