f75347472e4d3db1dd337f4365d613766791aee5
[pub/Android/ownCloud.git] / automationTest / src / test / java / com / owncloud / android / test / ui / models / FileListView.java
1 package com.owncloud.android.test.ui.models;
2
3 import java.util.List;
4
5 import io.appium.java_client.android.AndroidDriver;
6 import io.appium.java_client.android.AndroidElement;
7 import io.appium.java_client.android.AndroidKeyCode;
8 import io.appium.java_client.pagefactory.AndroidFindBy;
9 import io.appium.java_client.pagefactory.AppiumFieldDecorator;
10
11 import org.openqa.selenium.NoSuchElementException;
12 import org.openqa.selenium.support.CacheLookup;
13 import org.openqa.selenium.support.PageFactory;
14 import org.openqa.selenium.Point;
15
16 import com.owncloud.android.test.ui.actions.Actions;
17
18 public class FileListView {
19 final AndroidDriver driver;
20
21 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"More options\")")
22 private AndroidElement menuButton;
23
24 @CacheLookup
25 @AndroidFindBy(id = "com.owncloud.android:id/list_root")
26 private AndroidElement filesLayout;
27
28 @CacheLookup
29 @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/action_bar_title\")")
30 private AndroidElement titleText;
31
32 @AndroidFindBy(id = "android:id/progress_circular")
33 private AndroidElement progressCircular;
34
35 @CacheLookup
36 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"New folder\")")
37 private AndroidElement newFolderButton;
38
39 @CacheLookup
40 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"Upload\")")
41 private AndroidElement uploadButton;
42
43 private AndroidElement waitAMomentText;
44
45 @AndroidFindBy(id = "com.owncloud.android:id/ListItemLayout")
46 private List<AndroidElement> listItemLayout;
47
48 @AndroidFindBy(id = "com.owncloud.android:id/list_root")
49 private AndroidElement listRootLayout;
50
51 @AndroidFindBy(name = "Files")
52 private AndroidElement filesElementUploadFile;
53
54 @CacheLookup
55 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"List Layout\")")
56 private AndroidElement listLayout;
57
58 private AndroidElement fileElement;
59
60 private AndroidElement fileElementLayout;
61
62 private static String localFileIndicator = "com.owncloud.android:id/localFileIndicator";
63 private static String favoriteFileIndicator = "com.owncloud.android:id/favoriteIcon";
64 private static String sharedElementIndicator = "com.owncloud.android:id/sharedIcon";
65
66
67 public FileListView (AndroidDriver driver) {
68 this.driver = driver;
69 PageFactory.initElements(new AppiumFieldDecorator(driver), this);
70 }
71
72 public MenuList clickOnMenuButton () {
73 //if the menu option is not in the actionBar, it is opening again
74 try {
75 menuButton.click();
76 } catch (NoSuchElementException e){
77 driver.sendKeyEvent(AndroidKeyCode.MENU);
78 }
79 MenuList menuList = new MenuList (driver);
80 return menuList;
81 }
82
83 public SettingsView getSettingsView () {
84 SettingsView settingsView = new SettingsView(driver);
85 return settingsView;
86 }
87
88 public NewFolderPopUp clickOnNewFolderButton () {
89 newFolderButton.click();
90 NewFolderPopUp newFolderPopUp = new NewFolderPopUp(driver);
91 return newFolderPopUp;
92 }
93
94 public void clickOnUploadButton () {
95 uploadButton.click();
96 }
97
98 public UploadFilesView clickOnFilesElementUploadFile () {
99 filesElementUploadFile.click();
100 UploadFilesView uploadFilesView = new UploadFilesView(driver);
101 return uploadFilesView;
102 }
103
104 public AndroidElement getTitleTextElement () {
105 return titleText;
106 }
107
108 public AndroidElement getUploadButton () {
109 return uploadButton;
110 }
111
112 public AndroidElement getWaitAMomentTextElement () {
113 return waitAMomentText;
114 }
115
116 public AndroidElement getListRootElement () {
117 return listRootLayout;
118 }
119
120 public List<AndroidElement> getListItemLayout () {
121 return listItemLayout;
122 }
123
124 public AndroidElement getFileElement () {
125 return fileElement;
126 }
127
128 public ElementMenuOptions longPressOnElement (String elementName) {
129 scrollTillFindElement(elementName).tap(1, 1000);
130 //fileElement.tap(1, 1000);
131 ElementMenuOptions menuOptions = new ElementMenuOptions(driver);
132 return menuOptions;
133 }
134
135 public AndroidElement scrollTillFindElement (String elementName) {
136 fileElement = Actions.scrollTillFindElement (elementName,filesLayout,driver);
137 try {
138 fileElementLayout = (AndroidElement) driver.findElementByAndroidUIAutomator("new UiSelector().description(\"LinearLayout-"+ elementName +"\")");
139 } catch (NoSuchElementException e) {
140 fileElementLayout = null;
141 }
142 return fileElement;
143 }
144
145 public AndroidElement getFileElementLayout () {
146 return fileElementLayout;
147 }
148
149 public AndroidElement getProgressCircular () {
150 return progressCircular;
151 }
152
153 public static String getLocalFileIndicator() {
154 return localFileIndicator;
155 }
156
157 public static String getFavoriteFileIndicator() {
158 return favoriteFileIndicator;
159 }
160
161 public static String getSharedElementIndicator() {
162 return sharedElementIndicator;
163 }
164 public void pulldownToRefresh () throws InterruptedException {
165 Point listLocation = listLayout.getLocation();
166 driver.swipe(listLocation.getX(),listLocation.getY(), listLocation.getX(),listLocation.getY()+1000, 5000);
167 }
168
169
170 }