Commit efe9d1fb authored by Shakti Sahu's avatar Shakti Sahu Committed by Commit Bot

Video Tutorials : Added video IPH coordinator test

This CL adds java tests for video tutorial IPH card.

Bug: 1134117
Change-Id: I3096c1c31729fb90a896ce237e0f3c25e6e2a8cc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2442380Reviewed-by: default avatarFred Mello <fredmello@chromium.org>
Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#812801}
parent 635a85c6
...@@ -163,11 +163,15 @@ if (is_android) { ...@@ -163,11 +163,15 @@ if (is_android) {
android_library("javatests") { android_library("javatests") {
testonly = true testonly = true
sources = [ "android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerTest.java" ] sources = [
"android/java/src/org/chromium/chrome/browser/video_tutorials/iph/VideoIPHTest.java",
"android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerTest.java",
]
deps = [ deps = [
":java", ":java",
"//base:base_java", "//base:base_java",
"//base:base_java_test_support", "//base:base_java_test_support",
"//chrome/browser/image_fetcher:java",
"//chrome/browser/video_tutorials:java", "//chrome/browser/video_tutorials:java",
"//chrome/browser/video_tutorials:test_support_java", "//chrome/browser/video_tutorials:test_support_java",
"//chrome/test/android:chrome_java_test_support", "//chrome/test/android:chrome_java_test_support",
...@@ -176,6 +180,7 @@ if (is_android) { ...@@ -176,6 +180,7 @@ if (is_android) {
"//third_party/android_deps:androidx_test_runner_java", "//third_party/android_deps:androidx_test_runner_java",
"//third_party/android_deps:espresso_java", "//third_party/android_deps:espresso_java",
"//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:rules_java",
"//third_party/gif_player:gif_player_java",
"//third_party/hamcrest:hamcrest_core_java", "//third_party/hamcrest:hamcrest_core_java",
"//third_party/junit", "//third_party/junit",
"//third_party/mockito:mockito_java", "//third_party/mockito:mockito_java",
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.video_tutorials.iph;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.test.rule.ActivityTestRule;
import android.view.ViewStub;
import android.widget.FrameLayout;
import androidx.annotation.Nullable;
import androidx.test.espresso.action.ViewActions;
import androidx.test.filters.SmallTest;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.chromium.base.Callback;
import org.chromium.chrome.browser.image_fetcher.ImageFetcher;
import org.chromium.chrome.browser.image_fetcher.ImageFetcherConfig;
import org.chromium.chrome.browser.video_tutorials.FeatureType;
import org.chromium.chrome.browser.video_tutorials.R;
import org.chromium.chrome.browser.video_tutorials.Tutorial;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.content_public.browser.test.util.TestThreadUtils;
import org.chromium.ui.test.util.DummyUiActivity;
import jp.tomorrowkey.android.gifplayer.BaseGifImage;
/**
* Tests for {@link LanguagePickerCoordinator}.
*/
@RunWith(ChromeJUnit4ClassRunner.class)
public class VideoIPHTest {
@Rule
public ActivityTestRule<DummyUiActivity> mActivityTestRule =
new ActivityTestRule<>(DummyUiActivity.class);
private Activity mActivity;
private VideoIPHCoordinator mCoordinator;
@Mock
private Callback<Tutorial> mOnClickListener;
@Mock
private Callback<Tutorial> mOnDismissListener;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mActivity = mActivityTestRule.getActivity();
TestThreadUtils.runOnUiThreadBlocking(() -> {
FrameLayout parentView = new FrameLayout(mActivity);
mActivity.setContentView(parentView);
ViewStub viewStub = new ViewStub(mActivity);
viewStub.setLayoutResource(R.layout.video_tutorial_iph_card);
parentView.addView(viewStub);
Bitmap testImage = BitmapFactory.decodeResource(mActivity.getResources(),
org.chromium.chrome.browser.video_tutorials.R.drawable.btn_close);
TestImageFetcher imageFetcher = new TestImageFetcher(testImage);
mCoordinator = new VideoIPHCoordinatorImpl(
viewStub, imageFetcher, mOnClickListener, mOnDismissListener);
});
}
@Test
@SmallTest
public void testShowIPH() {
final Tutorial tutorial = createDummyTutorial();
TestThreadUtils.runOnUiThreadBlocking(() -> { mCoordinator.showVideoIPH(tutorial); });
onView(withText(tutorial.displayTitle)).check(matches(isDisplayed()));
onView(withText("5:35")).check(matches(isDisplayed()));
onView(withText(tutorial.displayTitle)).perform(ViewActions.click());
Mockito.verify(mOnClickListener).onResult(Mockito.any());
onView(withId(R.id.close_button)).perform(ViewActions.click());
Mockito.verify(mOnDismissListener).onResult(Mockito.any());
}
private Tutorial createDummyTutorial() {
return new Tutorial(FeatureType.DOWNLOAD,
"How to use Google Chrome's download functionality",
"https://xyz.example.com/xyz.mp4", "https://xyz.example.com/xyz.png",
"https://xyz.example.com/xyz.vtt", "https://xyz.example.com/xyz.mp4", 335);
}
private static class TestImageFetcher extends ImageFetcher.ImageFetcherForTesting {
private final Bitmap mBitmapToFetch;
TestImageFetcher(@Nullable Bitmap bitmapToFetch) {
mBitmapToFetch = bitmapToFetch;
}
@Override
public void fetchGif(final ImageFetcher.Params params, Callback<BaseGifImage> callback) {}
@Override
public void fetchImage(ImageFetcher.Params params, Callback<Bitmap> callback) {
callback.onResult(mBitmapToFetch);
}
@Override
public void clear() {}
@Override
public @ImageFetcherConfig int getConfig() {
return ImageFetcherConfig.IN_MEMORY_ONLY;
}
@Override
public void destroy() {}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment