summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorGerardo Vázquez <gerardolgvr0310@gmail.com>2020-06-28 16:49:49 -0500
committerGerardo Vázquez <gerardolgvr0310@gmail.com>2020-06-28 16:49:49 -0500
commit61df26aacdd053fb849fdfea4f8a00a035adf90b (patch)
treeb2e0fd1b4d96e40ce85b5cd3f22705e6131eb737 /app/src
parent5363b09f0067a61db5451b4c794c9a3ab919ece6 (diff)
downloadAntennaPod-61df26aacdd053fb849fdfea4f8a00a035adf90b.zip
updating ShareDialog according to code review
Diffstat (limited to 'app/src')
-rw-r--r--app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java (renamed from app/src/androidTest/java/de/test/antennapod/ui/DialogsTest.java)66
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java42
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java2
-rw-r--r--app/src/main/res/layout/share_episode_dialog.xml2
5 files changed, 64 insertions, 51 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/DialogsTest.java b/app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java
index 8b17b362e..d9d45a33f 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/DialogsTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java
@@ -1,18 +1,27 @@
-package de.test.antennapod.ui;
+package de.test.antennapod.dialogs;
+import android.content.Context;
import android.content.Intent;
import android.view.View;
import androidx.test.espresso.Espresso;
import androidx.test.espresso.contrib.RecyclerViewActions;
import androidx.test.espresso.intent.rule.IntentsTestRule;
+import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
+import de.danoeh.antennapod.core.feed.FeedItem;
+import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
+import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.fragment.AddFeedFragment;
import de.danoeh.antennapod.fragment.DownloadsFragment;
+import de.danoeh.antennapod.fragment.EpisodesFragment;
import de.danoeh.antennapod.fragment.QueueFragment;
import de.danoeh.antennapod.fragment.SubscriptionFragment;
import de.test.antennapod.EspressoTestUtils;
+import de.test.antennapod.ui.UITestUtils;
+
+import org.awaitility.Awaitility;
import org.hamcrest.Matcher;
import org.hamcrest.Matchers;
import org.junit.Before;
@@ -20,6 +29,10 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.io.IOException;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.clearText;
import static androidx.test.espresso.action.ViewActions.click;
@@ -27,7 +40,9 @@ import static androidx.test.espresso.action.ViewActions.closeSoftKeyboard;
import static androidx.test.espresso.action.ViewActions.scrollTo;
import static androidx.test.espresso.action.ViewActions.typeText;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition;
import static androidx.test.espresso.matcher.RootMatchers.isDialog;
+import static androidx.test.espresso.matcher.ViewMatchers.hasMinimumChildCount;
import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.isRoot;
@@ -35,6 +50,9 @@ import static androidx.test.espresso.matcher.ViewMatchers.withClassName;
import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
+import static de.test.antennapod.EspressoTestUtils.clickChildViewWithId;
+import static de.test.antennapod.EspressoTestUtils.onDrawerItem;
+import static de.test.antennapod.EspressoTestUtils.openNavDrawer;
import static de.test.antennapod.EspressoTestUtils.waitForView;
import static de.test.antennapod.NthMatcher.first;
import static org.hamcrest.CoreMatchers.allOf;
@@ -44,55 +62,55 @@ import static org.hamcrest.CoreMatchers.endsWith;
* User interface tests for queue fragment.
*/
@RunWith(AndroidJUnit4.class)
-public class DialogsTest {
+public class ShareDialogTest {
@Rule
public IntentsTestRule<MainActivity> activityRule = new IntentsTestRule<>(MainActivity.class, false, false);
+ private UITestUtils uiTestUtils;
+ protected Context context;
+
@Before
- public void setUp() throws InterruptedException {
+ public void setUp() throws Exception {
+ context = InstrumentationRegistry.getInstrumentation().getTargetContext();
EspressoTestUtils.clearPreferences();
EspressoTestUtils.clearDatabase();
- EspressoTestUtils.setLastNavFragment(AddFeedFragment.TAG);
+ EspressoTestUtils.setLastNavFragment(EpisodesFragment.TAG);
+ uiTestUtils = new UITestUtils(context);
+ uiTestUtils.setup();
+ uiTestUtils.addLocalFeedData(true);
+
activityRule.launchActivity(new Intent());
- String url = "https://omny.fm/shows/silence-is-not-an-option/why-not-being-racist-is-not-enough";
+ openNavDrawer();
+ onDrawerItem(withText(R.string.episodes_label)).perform(click());
+ onView(isRoot()).perform(waitForView(withText(R.string.all_episodes_short_label), 1000));
+ onView(withText(R.string.all_episodes_short_label)).perform(click());
- onView(withId(R.id.btn_add_via_url)).perform(scrollTo()).perform(click());
- onView(withId(R.id.text)).perform(clearText(), typeText(url));
- onView(withText(R.string.confirm_label)).inRoot(isDialog())
- .check(matches(isDisplayed()))
- .perform(closeSoftKeyboard())
- .perform(scrollTo())
- .perform(click());
- Thread.sleep(5000);
- onView(withId(R.id.butSubscribe)).perform(click());
- Thread.sleep(5000);
- onView(withId(R.id.recyclerView))
- .perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
- Thread.sleep(3000);
+ final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(0, 10);
+ Matcher<View> allEpisodesMatcher = Matchers.allOf(withId(android.R.id.list), isDisplayed(), hasMinimumChildCount(2));
+ onView(isRoot()).perform(waitForView(allEpisodesMatcher, 1000));
+ onView(allEpisodesMatcher).perform(actionOnItemAtPosition(0, click()));
onView(first(EspressoTestUtils.actionBarOverflow())).perform(click());
}
@Test
- public void testShareDialogDisplayed() {
- onView(withText(R.string.share_label)).perform(scrollTo()).perform(click());
- onView(allOf(isDisplayed(), withText(R.string.share_episode_label)));
+ public void testShareDialogDisplayed() throws InterruptedException {
+ onView(withText(R.string.share_label)).perform(click());
+ onView(allOf(isDisplayed(), withText(R.string.share_label)));
}
@Test
public void testShareDialogShareButton() throws InterruptedException {
onView(withText(R.string.share_label)).perform(scrollTo()).perform(click());
onView(allOf(isDisplayed(), withText(R.string.share_label)));
- Thread.sleep(1000);
onView(withText(R.string.share_episode_positive_label_button)).perform(scrollTo()).perform(click());
- Thread.sleep(2000);
}
@Test
public void testShareDialogCancelButton() {
onView(withText(R.string.share_label)).perform(scrollTo()).perform(click());
- onView(withText(R.string.cancel_label)).check(matches(isDisplayed()));
+ onView(withText(R.string.cancel_label)).check(matches(isDisplayed())).perform(scrollTo()).perform(click());
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
index 7bb7361f0..14c113d9f 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
@@ -391,8 +391,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
break;
case R.id.share_item:
if (feedItem != null) {
- new ShareDialog(this, feedItem)
- .show(((AppCompatActivity) this).getSupportFragmentManager(), "ShareEpisodeDialog");
+ new ShareDialog(this, feedItem).show(getSupportFragmentManager(), "ShareEpisodeDialog");
}
break;
default:
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java
index 32887b9dc..7e3fe91d0 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java
@@ -27,6 +27,10 @@ public class ShareDialog extends DialogFragment {
private final Context ctx;
private FeedItem item;
+ private static final String PREF_SHARE_EPISODE_WEBSITE = "prefShareEpisodeWebsite";
+ private static final String PREF_SHARE_EPISODE_MEDIA = "prefShareEpisodeMedia";
+ private static final String PREF_SHARE_EPISODE_START_AT = "prefShareEpisodeStartAt";
+
private RadioGroup radioGroup;
private RadioButton radioEpisodeWebsite;
private RadioButton radioMediaFile;
@@ -36,7 +40,7 @@ public class ShareDialog extends DialogFragment {
public ShareDialog(Context ctx, FeedItem item) {
this.ctx = ctx;
this.item = item;
- prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
+ prefs = ctx.getSharedPreferences("SHARE_DIALOG_PREFS", Context.MODE_PRIVATE);
}
@NonNull
@@ -44,7 +48,7 @@ public class ShareDialog extends DialogFragment {
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
View content = View.inflate(ctx, R.layout.share_episode_dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
- builder.setTitle(R.string.share_episode_label);
+ builder.setTitle(R.string.share_label);
builder.setView(content);
radioGroup = content.findViewById(R.id.share_dialog_radio_group);
@@ -59,25 +63,17 @@ public class ShareDialog extends DialogFragment {
@Override
public void onClick(DialogInterface dialog, int id) {
if (radioEpisodeWebsite.isChecked()) {
- if (switchStartAt.isChecked()) {
- ShareUtils.shareFeedItemLink(ctx, item, true);
- prefs.edit().putBoolean(UserPreferences.PREF_SHARE_EPISODE_START_AT, true).apply();
- } else {
- ShareUtils.shareFeedItemLink(ctx, item);
- prefs.edit().putBoolean(UserPreferences.PREF_SHARE_EPISODE_START_AT, false).apply();
- }
- prefs.edit().putBoolean(UserPreferences.PREF_SHARE_EPISODE_WEBSITE, true).apply();
- prefs.edit().putBoolean(UserPreferences.PREF_SHARE_EPISODE_MEDIA, false).apply();
+ ShareUtils.shareFeedItemLink(ctx, item, switchStartAt.isChecked());
+ prefs.edit().putBoolean(PREF_SHARE_EPISODE_START_AT, switchStartAt.isChecked()).apply();
+
+ prefs.edit().putBoolean(PREF_SHARE_EPISODE_WEBSITE, true).apply();
+ prefs.edit().putBoolean(PREF_SHARE_EPISODE_MEDIA, false).apply();
} else {
- if (switchStartAt.isChecked()) {
- ShareUtils.shareFeedItemDownloadLink(ctx, item, true);
- prefs.edit().putBoolean(UserPreferences.PREF_SHARE_EPISODE_START_AT, true).apply();
- } else {
- ShareUtils.shareFeedItemDownloadLink(ctx, item);
- prefs.edit().putBoolean(UserPreferences.PREF_SHARE_EPISODE_START_AT, false).apply();
- }
- prefs.edit().putBoolean(UserPreferences.PREF_SHARE_EPISODE_MEDIA, true).apply();
- prefs.edit().putBoolean(UserPreferences.PREF_SHARE_EPISODE_WEBSITE, false).apply();
+ ShareUtils.shareFeedItemLink(ctx, item, switchStartAt.isChecked());
+ prefs.edit().putBoolean(PREF_SHARE_EPISODE_START_AT, switchStartAt.isChecked()).apply();
+
+ prefs.edit().putBoolean(PREF_SHARE_EPISODE_WEBSITE, false).apply();
+ prefs.edit().putBoolean(PREF_SHARE_EPISODE_MEDIA, true).apply();
}
}
})
@@ -103,10 +99,10 @@ public class ShareDialog extends DialogFragment {
}
if (radioEpisodeWebsite.getVisibility() == View.VISIBLE && radioMediaFile.getVisibility() == View.VISIBLE) {
- boolean radioEpisodeWebsiteIsChecked = prefs.getBoolean(UserPreferences.PREF_SHARE_EPISODE_WEBSITE, false);
+ boolean radioEpisodeWebsiteIsChecked = prefs.getBoolean(PREF_SHARE_EPISODE_WEBSITE, false);
radioEpisodeWebsite.setChecked(radioEpisodeWebsiteIsChecked);
- boolean radioMediaIsChecked = prefs.getBoolean(UserPreferences.PREF_SHARE_EPISODE_MEDIA, false);
+ boolean radioMediaIsChecked = prefs.getBoolean(PREF_SHARE_EPISODE_MEDIA, false);
radioMediaFile.setChecked(radioMediaIsChecked);
if (!radioEpisodeWebsiteIsChecked && !radioMediaIsChecked) {
@@ -115,7 +111,7 @@ public class ShareDialog extends DialogFragment {
}
}
- boolean switchIsChecked = prefs.getBoolean(UserPreferences.PREF_SHARE_EPISODE_START_AT, false);
+ boolean switchIsChecked = prefs.getBoolean(PREF_SHARE_EPISODE_START_AT, false);
switchStartAt.setChecked(switchIsChecked);
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
index c63bdc3c4..1eb3d3aeb 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
@@ -237,7 +237,7 @@ public class FeedItemMenuHandler {
break;
case R.id.share_item:
new ShareDialog(context, selectedItem)
- .show(((AppCompatActivity) context).getSupportFragmentManager(), "ShareEpisodeDialog");
+ .show((fragment.getActivity().getSupportFragmentManager()), "ShareEpisodeDialog");
break;
default:
Log.d(TAG, "Unknown menuItemId: " + menuItemId);
diff --git a/app/src/main/res/layout/share_episode_dialog.xml b/app/src/main/res/layout/share_episode_dialog.xml
index a7f09deb9..fc2ad5c3d 100644
--- a/app/src/main/res/layout/share_episode_dialog.xml
+++ b/app/src/main/res/layout/share_episode_dialog.xml
@@ -35,6 +35,6 @@
android:id="@+id/share_start_at_timer_dialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="@string/share_start_at_timer_dialog_label" />
+ android:text="@string/share_playback_position_dialog_label" />
</LinearLayout> \ No newline at end of file