Commit 8af1f537 authored by Shakti Sahu's avatar Shakti Sahu Committed by Commit Bot

Video Tutorials : Added java test for tutorial list

Bug: 1117157
Change-Id: Ia7108a2e62dd2b97b4ddd9d806f7dcdc6b1097d5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2447251
Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
Reviewed-by: default avatarCalder Kitagawa <ckitagawa@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815230}
parent 7512e534
......@@ -122,11 +122,17 @@ if (is_android) {
}
android_library("test_support_java") {
sources = [ "android/java/src/org/chromium/chrome/browser/video_tutorials/test/TestVideoTutorialService.java" ]
sources = [
"android/java/src/org/chromium/chrome/browser/video_tutorials/test/TestImageFetcher.java",
"android/java/src/org/chromium/chrome/browser/video_tutorials/test/TestVideoTutorialService.java",
]
deps = [
":java",
"//base:base_java",
"//chrome/browser/image_fetcher:java",
"//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/gif_player:gif_player_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.test;
import android.graphics.Bitmap;
import androidx.annotation.Nullable;
import org.chromium.base.Callback;
import org.chromium.chrome.browser.image_fetcher.ImageFetcher;
import org.chromium.chrome.browser.image_fetcher.ImageFetcherConfig;
import jp.tomorrowkey.android.gifplayer.BaseGifImage;
/** A {@link ImageFetcher} for tests that can fetch a test bitmap. */
public class TestImageFetcher extends ImageFetcher.ImageFetcherForTesting {
private final Bitmap mBitmapToFetch;
public TestImageFetcher(@Nullable Bitmap bitmapToFetch) {
mBitmapToFetch = bitmapToFetch;
}
@Override
public void fetchGif(final Params params, Callback<BaseGifImage> callback) {}
@Override
public void fetchImage(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() {}
}
......@@ -75,7 +75,7 @@ public class TestVideoTutorialService implements VideoTutorialService {
new Tutorial(FeatureType.SEARCH, "How to efficiently search with Google Chrome",
"https://storage.googleapis.com/stock-wizard.appspot.com/elephant.jpg ",
"https://storage.googleapis.com/stock-wizard.appspot.com/elephant.jpg",
"caption url", "share url", 35));
"caption url", "share url", 335));
}
private void initializeLanguages() {
......
......@@ -173,17 +173,18 @@ if (is_android) {
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",
"android/java/src/org/chromium/chrome/browser/video_tutorials/list/TutorialListCoordinatorTest.java",
]
deps = [
":java",
"//base:base_java",
"//base:base_java_test_support",
"//chrome/browser/image_fetcher:java",
"//chrome/browser/video_tutorials:java",
"//chrome/browser/video_tutorials:test_support_java",
"//chrome/test/android:chrome_java_test_support",
"//content/public/test/android:content_java_test_support",
"//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:androidx_recyclerview_recyclerview_java",
"//third_party/android_deps:androidx_test_runner_java",
"//third_party/android_deps:espresso_java",
"//third_party/android_support_test_runner:rules_java",
......
......@@ -17,7 +17,6 @@ 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;
......@@ -30,17 +29,14 @@ 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.browser.video_tutorials.test.TestImageFetcher;
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}.
*/
......@@ -97,30 +93,4 @@ public class VideoIPHTest {
"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() {}
}
}
// Copyright 2019 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.list;
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.withText;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.test.rule.ActivityTestRule;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import androidx.recyclerview.widget.RecyclerView;
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.video_tutorials.R;
import org.chromium.chrome.browser.video_tutorials.Tutorial;
import org.chromium.chrome.browser.video_tutorials.test.TestImageFetcher;
import org.chromium.chrome.browser.video_tutorials.test.TestVideoTutorialService;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.content_public.browser.test.util.TestThreadUtils;
import org.chromium.ui.test.util.DummyUiActivity;
/**
* Tests for {@link TutorialListCoordinator}.
*/
@RunWith(ChromeJUnit4ClassRunner.class)
public class TutorialListCoordinatorTest {
@Rule
public ActivityTestRule<DummyUiActivity> mActivityTestRule =
new ActivityTestRule<>(DummyUiActivity.class);
private Activity mActivity;
private View mContentView;
private TestVideoTutorialService mTestVideoTutorialService;
private TutorialListCoordinator mCoordinator;
@Mock
private Callback<Tutorial> mClickCallback;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mActivity = mActivityTestRule.getActivity();
TestThreadUtils.runOnUiThreadBlocking(() -> {
FrameLayout parentView = new FrameLayout(mActivity);
mActivity.setContentView(parentView);
mTestVideoTutorialService = new TestVideoTutorialService();
mContentView = LayoutInflater.from(mActivity).inflate(
R.layout.video_tutorial_list, null, false);
parentView.addView(mContentView);
Bitmap testImage = BitmapFactory.decodeResource(mActivity.getResources(),
org.chromium.chrome.browser.video_tutorials.R.drawable.btn_close);
TestImageFetcher imageFetcher = new TestImageFetcher(testImage);
mCoordinator = new TutorialListCoordinatorImpl(
(RecyclerView) mContentView.findViewById(R.id.recycler_view),
mTestVideoTutorialService, imageFetcher, mClickCallback);
});
}
@Test
@SmallTest
public void testShowList() {
Tutorial tutorial = mTestVideoTutorialService.getTestTutorials().get(0);
onView(withText(tutorial.displayTitle)).check(matches(isDisplayed()));
onView(withText("0:35")).check(matches(isDisplayed()));
onView(withText(tutorial.displayTitle)).perform(ViewActions.click());
Mockito.verify(mClickCallback).onResult(tutorial);
}
}
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