Skip to content

Commit

Permalink
Add ns predicate strategy (#11)
Browse files Browse the repository at this point in the history
* optimize clear field step

* add iOSNSPredicate strategy

* fix tests

* fix tests
  • Loading branch information
JasperJhons authored and Yaromudr committed Aug 28, 2017
1 parent 83767fd commit 7b4355f
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ public class ElementBuilder {
private String contentDesc;
private String text;
private String xpath;
private String nsPredicate;
private boolean specific;

public ElementBuilder withName(String name) {
Expand Down Expand Up @@ -41,7 +42,12 @@ public ElementBuilder withXPath(String xpath) {
return this;
}

public ElementBuilder withNSPredicate(String nsPredicate) {
this.nsPredicate = nsPredicate;
return this;
}

public IElement please() {
return new Element(name, contentDesc, id, text, xpath, specific);
return new Element(name, contentDesc, id, text, xpath, nsPredicate, specific);
}
}
6 changes: 6 additions & 0 deletions src/main/java/ru/colibri/ui/core/fields/Element.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class Element implements IElement {
private String id;
private String text;
private String xpath;
private String nsPredicate;
private boolean specific;

@Override
Expand Down Expand Up @@ -44,5 +45,10 @@ public String getText() {
public String getXpath() {
return xpath;
}

@Override
public String getNSPredicate() {
return nsPredicate;
}
}

2 changes: 2 additions & 0 deletions src/main/java/ru/colibri/ui/core/fields/IElement.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,7 @@ public interface IElement {

String getXpath();

String getNSPredicate();

boolean isSpecific();
}
7 changes: 5 additions & 2 deletions src/main/java/ru/colibri/ui/settings/general/PagesLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,22 +49,25 @@ public IPage loadPageFromFile(File file) {
}

private IElement getIElement(File file, String[] cells) {
if (cells.length == 1 || cells.length != 6) {
if (cells.length == 1 || cells.length < 6 || cells.length > 7) {
throw new PageDescriptionException(file);
}
String name = cells[0];
String contentDesc = propertyUtils.injectProperties(cells[1]);
String id = propertyUtils.injectProperties(cells[2]);
String text = propertyUtils.injectProperties(cells[3]);
String xpath = propertyUtils.injectProperties(cells[4]);
Boolean specific = Boolean.valueOf(cells[5]);
Boolean specific = Boolean.valueOf(cells[cells.length - 1]);
String nsPredicate = "";
if (cells.length == 7) nsPredicate = propertyUtils.injectProperties(cells[5]);
return element()
.withName(name)
.withContentDesc(contentDesc)
.withId(id)
.withText(text)
.withXPath(xpath)
.withSpecific(specific)
.withNSPredicate(nsPredicate)
.please();
}
}
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/ru/colibri/ui/settings/ios/IOSByFactory.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ru.colibri.ui.settings.ios;

import io.appium.java_client.MobileBy;
import org.apache.http.util.TextUtils;
import org.openqa.selenium.By;
import org.springframework.stereotype.Component;
Expand All @@ -24,6 +25,9 @@ private String createXPathByNameOrValueOrLabel(String label) {

@Override
public By byElement(IElement element) {
if (!TextUtils.isEmpty(element.getNSPredicate())) {
return MobileBy.iOSNsPredicateString(element.getNSPredicate());
}
if (TextUtils.isEmpty(element.getXpath())) {
if (TextUtils.isEmpty(element.getId())) {
return byNameOrValueOrLabel(element.getText());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class PagesLoaderTest {
private final static String FILE_PATH = "src/test/resources/loadFiles/goodPage.csv";
private final static String BAD_FILE_PATH = "src/test/resources/loadFiles/badPage.csv";
private final static String BAD_FILE_PATH2 = "src/test/resources/loadFiles/badPage2.csv";
private final static String BAD_FILE_PATH3 = "src/test/resources/loadFiles/badPage3.csv";
private final static String DIR_PATH = "src/test/resources/loadFiles/loadDir";
@Autowired
private PagesLoader pagesLoader;
Expand All @@ -42,6 +43,11 @@ public void loadPageFromFileWithOutCells() throws Exception {
pagesLoader.loadPageFromFile(new File(BAD_FILE_PATH2));
}

@Test(expected = PageDescriptionException.class)
public void loadPageFromFileWithMoreCells() throws Exception {
pagesLoader.loadPageFromFile(new File(BAD_FILE_PATH3));
}

@Test(expected = RuntimeException.class)
public void loadPageFromNotExistFile() throws Exception {
pagesLoader.loadPageFromFile(new File("not_exist.file"));
Expand Down
13 changes: 13 additions & 0 deletions src/test/java/ru/colibri/ui/settings/ios/TestIOSByFactory.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ru.colibri.ui.settings.ios;

import io.appium.java_client.MobileBy;
import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.By;
Expand Down Expand Up @@ -81,4 +82,16 @@ public void testByNestedElement() {
Assert.assertEquals("Результат работы IOSFactory по nestedElement некорректен", expected, byElementFromFactory);
}

@Test
public void testByNSPredicate() {
IElement element = ElementBuilders.element()
.withName("elementByNSPredicate")
.withNSPredicate("name like 'test'")
.please();
MobileBy expected = (MobileBy) MobileBy.iOSNsPredicateString("name like 'test'");

By byElementFromFactory = byFactory.byElement(element);
Assert.assertEquals("Результат работы IOSFactory по NSPredicate некорректен", expected, byElementFromFactory);
}

}
3 changes: 3 additions & 0 deletions src/test/resources/loadFiles/badPage3.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
"Сервис","","","","",""
"Name in story","Content-desc","ResourceId","Text","XPath","Flag is specific"
"Тарифный план","","","Тарифный план","","true","",""

0 comments on commit 7b4355f

Please sign in to comment.