|
1 | 1 | package net.osmtracker.layouts;
|
2 | 2 |
|
3 |
| -import android.Manifest; |
4 |
| -import androidx.test.rule.ActivityTestRule; |
5 |
| -import androidx.test.rule.GrantPermissionRule; |
6 |
| - |
7 |
| -import net.osmtracker.R; |
8 |
| -import net.osmtracker.activity.ButtonsPresets; |
9 |
| -import net.osmtracker.activity.Preferences; |
10 |
| -import net.osmtracker.util.CustomLayoutsUtils; |
11 |
| -import net.osmtracker.util.TestUtils; |
12 |
| - |
13 |
| -import org.junit.Rule; |
14 |
| -import org.junit.Test; |
15 |
| - |
16 |
| -import java.io.IOException; |
17 |
| -import java.util.ArrayList; |
18 |
| - |
19 | 3 | import static androidx.test.espresso.Espresso.onView;
|
20 | 4 | import static androidx.test.espresso.action.ViewActions.click;
|
21 | 5 | import static androidx.test.espresso.action.ViewActions.longClick;
|
|
26 | 10 | import static net.osmtracker.util.TestUtils.getStringResource;
|
27 | 11 | import static net.osmtracker.util.TestUtils.injectMockLayout;
|
28 | 12 | import static net.osmtracker.util.TestUtils.listFiles;
|
| 13 | +import static org.apache.commons.io.FileUtils.deleteDirectory; |
29 | 14 | import static org.hamcrest.Matchers.equalToIgnoringCase;
|
30 | 15 | import static org.junit.Assert.assertFalse;
|
31 |
| -import static org.apache.commons.io.FileUtils.deleteDirectory; |
32 | 16 |
|
| 17 | +import android.Manifest; |
| 18 | + |
| 19 | +import androidx.lifecycle.Lifecycle; |
| 20 | +import androidx.test.core.app.ActivityScenario; |
| 21 | +import androidx.test.rule.GrantPermissionRule; |
| 22 | + |
| 23 | +import net.osmtracker.R; |
| 24 | +import net.osmtracker.activity.ButtonsPresets; |
| 25 | +import net.osmtracker.activity.Preferences; |
| 26 | +import net.osmtracker.util.CustomLayoutsUtils; |
| 27 | + |
| 28 | +import org.junit.After; |
| 29 | +import org.junit.Before; |
| 30 | +import org.junit.Rule; |
| 31 | +import org.junit.Test; |
| 32 | + |
| 33 | +import java.io.IOException; |
| 34 | +import java.util.ArrayList; |
33 | 35 |
|
34 | 36 | public class DeleteLayoutTest {
|
35 | 37 |
|
36 |
| - @Rule |
37 |
| - public GrantPermissionRule storagePermission = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE); |
38 |
| - |
39 |
| - @Rule |
40 |
| - public ActivityTestRule<ButtonsPresets> mRule = new ActivityTestRule(ButtonsPresets.class) { |
41 |
| - @Override |
42 |
| - protected void beforeActivityLaunched() { |
43 |
| - //Makes sure that only the mock layout exists |
44 |
| - try { |
45 |
| - deleteDirectory(getLayoutsDirectory()); |
46 |
| - injectMockLayout(layoutName, ISOLanguageCode); |
47 |
| - |
48 |
| - } catch (IOException e) { |
49 |
| - e.printStackTrace(); |
50 |
| - } |
51 |
| - } |
52 |
| - }; |
53 |
| - |
54 |
| - private static String layoutName = "mock"; |
55 |
| - private static String ISOLanguageCode = "es"; |
56 |
| - |
57 |
| - /** |
58 |
| - * Assumes being in the ButtonsPresets activity |
59 |
| - * Deletes the layout with the received name |
60 |
| - */ |
61 |
| - private void deleteLayout(String layoutName){ |
62 |
| - onView(withText(layoutName)).perform(longClick()); |
63 |
| - onView(withText(getStringResource(R.string.buttons_presets_context_menu_delete))).perform(click()); |
64 |
| - String textToMatch = getStringResource(R.string.buttons_presets_delete_positive_confirmation); |
65 |
| - onView(withText(equalToIgnoringCase(textToMatch))).perform(click()); |
66 |
| - } |
67 |
| - |
68 |
| - /** |
69 |
| - * Deletes the mock layout and then checks that: |
70 |
| - * - The UI option doesn't appear anymore |
71 |
| - * - The XML file is deleted |
72 |
| - * - A Toast is shown to inform about what happened |
73 |
| - * - The icons directory is deleted |
74 |
| - */ |
75 |
| - @Test |
76 |
| - public void layoutDeletionTest(){ |
77 |
| - |
78 |
| - deleteLayout(layoutName); |
79 |
| - |
80 |
| - // Check the informative Toast is shown |
81 |
| - checkToastIsShownWith(getStringResource(R.string.buttons_presets_successful_delete)); |
82 |
| - |
83 |
| - // Check the layout doesn't appear anymore |
84 |
| - onView(withText(layoutName)).check(doesNotExist()); |
85 |
| - |
86 |
| - // List files after the deletion |
87 |
| - ArrayList<String> filesAfterDeletion = listFiles(getLayoutsDirectory()); |
88 |
| - |
89 |
| - // Check the xml file was deleted |
90 |
| - String layoutFileName = CustomLayoutsUtils.createFileName(layoutName, ISOLanguageCode); |
91 |
| - assertFalse(filesAfterDeletion.contains(layoutFileName)); |
92 |
| - |
93 |
| - // Check the icons folder was deleted |
94 |
| - assertFalse(filesAfterDeletion.contains(layoutName+ Preferences.ICONS_DIR_SUFFIX)); |
95 |
| - |
96 |
| - } |
| 38 | + @Rule |
| 39 | + public GrantPermissionRule storagePermission = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE); |
| 40 | + |
| 41 | + public ActivityScenario<ButtonsPresets> activity; |
| 42 | + |
| 43 | + private static final String layoutName = "mock"; |
| 44 | + private static final String ISOLanguageCode = "es"; |
| 45 | + |
| 46 | + @Before |
| 47 | + public void setUp() { |
| 48 | + // Makes sure that only the mock layout exists |
| 49 | + try { |
| 50 | + deleteDirectory(getLayoutsDirectory()); |
| 51 | + injectMockLayout(layoutName, ISOLanguageCode); |
| 52 | + } catch (IOException e) { |
| 53 | + e.printStackTrace(); |
| 54 | + } |
| 55 | + // Launch activity |
| 56 | + activity = ActivityScenario.launch(ButtonsPresets.class); |
| 57 | + activity.moveToState(Lifecycle.State.RESUMED); |
| 58 | + } |
| 59 | + |
| 60 | + @After |
| 61 | + public void tearDown() { |
| 62 | + activity.close(); |
| 63 | + } |
| 64 | + |
| 65 | + /** |
| 66 | + * Assumes being in the ButtonsPresets activity |
| 67 | + * Deletes the layout with the received name |
| 68 | + */ |
| 69 | + private void deleteLayout() { |
| 70 | + onView(withText(layoutName)).perform(longClick()); |
| 71 | + onView(withText(getStringResource(R.string.buttons_presets_context_menu_delete))).perform(click()); |
| 72 | + String textToMatch = getStringResource(R.string.buttons_presets_delete_positive_confirmation); |
| 73 | + onView(withText(equalToIgnoringCase(textToMatch))).perform(click()); |
| 74 | + } |
| 75 | + |
| 76 | + /** |
| 77 | + * Deletes the mock layout and then checks that: |
| 78 | + * - The UI option doesn't appear anymore |
| 79 | + * - The XML file is deleted |
| 80 | + * - A Toast is shown to inform about what happened |
| 81 | + * - The icons directory is deleted |
| 82 | + */ |
| 83 | + @Test |
| 84 | + public void layoutDeletionTest() { |
| 85 | + deleteLayout(); |
| 86 | + |
| 87 | + // Check the informative Toast is shown |
| 88 | + checkToastIsShownWith(getStringResource(R.string.buttons_presets_successful_delete)); |
| 89 | + |
| 90 | + // Check the layout doesn't appear anymore |
| 91 | + onView(withText(layoutName)).check(doesNotExist()); |
| 92 | + |
| 93 | + // List files after the deletion |
| 94 | + ArrayList<String> filesAfterDeletion = listFiles(getLayoutsDirectory()); |
| 95 | + |
| 96 | + // Check the xml file was deleted |
| 97 | + String layoutFileName = CustomLayoutsUtils.createFileName(layoutName, ISOLanguageCode); |
| 98 | + assertFalse(filesAfterDeletion.contains(layoutFileName)); |
| 99 | + |
| 100 | + // Check the icons folder was deleted |
| 101 | + assertFalse(filesAfterDeletion.contains(layoutName + Preferences.ICONS_DIR_SUFFIX)); |
| 102 | + } |
97 | 103 | }
|
0 commit comments