diff options
author | Gerardo Vázquez <gerardolgvr0310@gmail.com> | 2020-06-28 16:49:49 -0500 |
---|---|---|
committer | Gerardo Vázquez <gerardolgvr0310@gmail.com> | 2020-06-28 16:49:49 -0500 |
commit | 61df26aacdd053fb849fdfea4f8a00a035adf90b (patch) | |
tree | b2e0fd1b4d96e40ce85b5cd3f22705e6131eb737 /app | |
parent | 5363b09f0067a61db5451b4c794c9a3ab919ece6 (diff) | |
download | AntennaPod-61df26aacdd053fb849fdfea4f8a00a035adf90b.zip |
updating ShareDialog according to code review
Diffstat (limited to 'app')
-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.java | 3 | ||||
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java | 42 | ||||
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java | 2 | ||||
-rw-r--r-- | app/src/main/res/layout/share_episode_dialog.xml | 2 |
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 |