Commit 998e72b0 authored by Shakti Sahu's avatar Shakti Sahu Committed by Commit Bot

Video Tutorials : Added unit test and java test for language picker

Bug: 1117157
Change-Id: I31a744b44c4cdb418b2ba11956d2eb54479ba579
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2429516
Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#811155}
parent fc925a60
...@@ -829,6 +829,8 @@ junit_binary("chrome_junit_tests") { ...@@ -829,6 +829,8 @@ junit_binary("chrome_junit_tests") {
"//chrome/browser/ui/messages/android:junit", "//chrome/browser/ui/messages/android:junit",
"//chrome/browser/user_education:java", "//chrome/browser/user_education:java",
"//chrome/browser/util:java", "//chrome/browser/util:java",
"//chrome/browser/video_tutorials:java",
"//chrome/browser/video_tutorials/internal:junit",
"//chrome/browser/xsurface:java", "//chrome/browser/xsurface:java",
"//chrome/test/android:chrome_java_test_support", "//chrome/test/android:chrome_java_test_support",
"//components/background_task_scheduler:background_task_scheduler_java", "//components/background_task_scheduler:background_task_scheduler_java",
...@@ -2409,6 +2411,7 @@ chrome_test_apk_tmpl("chrome_public_test_apk") { ...@@ -2409,6 +2411,7 @@ chrome_test_apk_tmpl("chrome_public_test_apk") {
"//chrome/browser/ui/android/appmenu/internal:javatests", "//chrome/browser/ui/android/appmenu/internal:javatests",
"//chrome/browser/ui/messages/android:javatests", "//chrome/browser/ui/messages/android:javatests",
"//chrome/browser/util:javatests", "//chrome/browser/util:javatests",
"//chrome/browser/video_tutorials/internal:javatests",
] ]
data_deps = [ "//testing/buildbot/filters:chrome_public_test_apk_filters" ] data_deps = [ "//testing/buildbot/filters:chrome_public_test_apk_filters" ]
......
...@@ -109,6 +109,15 @@ if (is_android) { ...@@ -109,6 +109,15 @@ if (is_android) {
# android_library target does not actually depend on this internal file. # android_library target does not actually depend on this internal file.
sources = [ "internal/android/java/src/org/chromium/chrome/browser/video_tutorials/VideoTutorialServiceFactory.java" ] sources = [ "internal/android/java/src/org/chromium/chrome/browser/video_tutorials/VideoTutorialServiceFactory.java" ]
} }
android_library("test_support_java") {
sources = [ "android/java/src/org/chromium/chrome/browser/video_tutorials/test/TestVideoTutorialService.java" ]
deps = [
":java",
"//base:base_java",
]
}
} }
group("unit_tests") { group("unit_tests") {
......
// 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 org.chromium.base.Callback;
import org.chromium.chrome.browser.video_tutorials.FeatureType;
import org.chromium.chrome.browser.video_tutorials.Language;
import org.chromium.chrome.browser.video_tutorials.Tutorial;
import org.chromium.chrome.browser.video_tutorials.VideoTutorialService;
import java.util.ArrayList;
import java.util.List;
/** A video tutorial service implementation for tests. */
public class TestVideoTutorialService implements VideoTutorialService {
public static final Language HINDI = new Language("hi", "Hindi", "Hindi Native");
public static final Language TAMIL = new Language("ta", "Tamil", "Tamil Native");
public static final Language ENGLISH = new Language("en", "English", "English Native");
private final List<Tutorial> mTutorials = new ArrayList<>();
private final List<Language> mLanguages = new ArrayList<>();
private String mPreferredLocale;
public TestVideoTutorialService() {
initializeLanguages();
mPreferredLocale = HINDI.locale;
initializeTutorialList();
}
@Override
public void getTutorials(Callback<List<Tutorial>> callback) {
callback.onResult(mTutorials);
}
@Override
public void getTutorial(int featureType, Callback<Tutorial> callback) {
for (Tutorial tutorial : mTutorials) {
if (tutorial.featureType == featureType) callback.onResult(tutorial);
}
}
@Override
public List<Language> getSupportedLanguages() {
return mLanguages;
}
@Override
public String getPreferredLocale() {
return mPreferredLocale;
}
@Override
public void setPreferredLocale(String locale) {
mPreferredLocale = locale;
}
public List<Language> getTestLanguages() {
return mLanguages;
}
public List<Tutorial> getTestTutorials() {
return mTutorials;
}
private void initializeTutorialList() {
mTutorials.add(new Tutorial(FeatureType.DOWNLOAD,
"How to use Google Chrome's download functionality",
"https://storage.googleapis.com/stock-wizard.appspot.com/portrait.jpg",
"https://storage.googleapis.com/stock-wizard.appspot.com/portrait.jpg",
"caption url", "share url", 35));
mTutorials.add(
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));
}
private void initializeLanguages() {
mLanguages.add(HINDI);
mLanguages.add(TAMIL);
mLanguages.add(ENGLISH);
}
}
...@@ -68,6 +68,7 @@ if (is_android) { ...@@ -68,6 +68,7 @@ if (is_android) {
"android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguageItemProperties.java", "android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguageItemProperties.java",
"android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguageItemViewHolder.java", "android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguageItemViewHolder.java",
"android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerCoordinator.java", "android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerCoordinator.java",
"android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerMediator.java",
"android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerProperties.java", "android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerProperties.java",
"android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerView.java", "android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerView.java",
"android/java/src/org/chromium/chrome/browser/video_tutorials/player/VideoPlayerCoordinatorImpl.java", "android/java/src/org/chromium/chrome/browser/video_tutorials/player/VideoPlayerCoordinatorImpl.java",
...@@ -133,6 +134,48 @@ if (is_android) { ...@@ -133,6 +134,48 @@ if (is_android) {
"android/java/src/org/chromium/chrome/browser/video_tutorials/bridges/VideoTutorialServiceBridge.java", "android/java/src/org/chromium/chrome/browser/video_tutorials/bridges/VideoTutorialServiceBridge.java",
] ]
} }
java_library("junit") {
# Skip platform checks since Robolectric depends on requires_android targets.
bypass_platform_checks = true
testonly = true
sources = [ "android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerMediatorUnitTest.java" ]
deps = [
":java",
"//base:base_java",
"//base:base_junit_test_support",
"//chrome/browser/video_tutorials:java",
"//chrome/browser/video_tutorials:test_support_java",
"//third_party/android_deps:robolectric_all_java",
"//third_party/hamcrest:hamcrest_core_java",
"//third_party/junit",
"//third_party/mockito:mockito_java",
"//ui/android:ui_java",
]
}
android_library("javatests") {
testonly = true
sources = [ "android/java/src/org/chromium/chrome/browser/video_tutorials/languages/LanguagePickerTest.java" ]
deps = [
":java",
"//base:base_java",
"//base:base_java_test_support",
"//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_test_runner_java",
"//third_party/android_deps:espresso_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/hamcrest:hamcrest_core_java",
"//third_party/junit",
"//third_party/mockito:mockito_java",
"//ui/android:ui_java_test_support",
]
}
} }
source_set("unit_tests") { source_set("unit_tests") {
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
android:src="@drawable/btn_close" /> android:src="@drawable/btn_close" />
<TextView <TextView
android:id="@+id/title_view"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="36dp" android:layout_marginBottom="36dp"
......
...@@ -13,6 +13,7 @@ import android.widget.TextView; ...@@ -13,6 +13,7 @@ import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import org.chromium.chrome.browser.video_tutorials.R;
import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
...@@ -35,24 +36,21 @@ class VideoIPHView { ...@@ -35,24 +36,21 @@ class VideoIPHView {
} }
private void setTitle(String title) { private void setTitle(String title) {
TextView view = TextView view = mCardView.findViewById(R.id.title);
mCardView.findViewById(org.chromium.chrome.browser.video_tutorials.R.id.title);
view.setText(title); view.setText(title);
} }
/** Called to set the video length text of an IPH. */ /** Called to set the video length text of an IPH. */
private void setVideoLength(String videoLength) { private void setVideoLength(String videoLength) {
TextView view = mCardView.findViewById( TextView view = mCardView.findViewById(R.id.video_length);
org.chromium.chrome.browser.video_tutorials.R.id.video_length);
view.setText(videoLength); view.setText(videoLength);
} }
private void setThumbnail(@Nullable Bitmap bitmap) { private void setThumbnail(@Nullable Bitmap bitmap) {
ImageView view = ImageView view = mCardView.findViewById(R.id.thumbnail);
mCardView.findViewById(org.chromium.chrome.browser.video_tutorials.R.id.thumbnail);
if (bitmap == null) { if (bitmap == null) {
view.setImageDrawable(new ColorDrawable(view.getResources().getColor( view.setImageDrawable(
org.chromium.chrome.browser.video_tutorials.R.color.image_loading_color))); new ColorDrawable(view.getResources().getColor(R.color.image_loading_color)));
} else { } else {
view.setImageBitmap(bitmap); view.setImageBitmap(bitmap);
} }
...@@ -63,8 +61,7 @@ class VideoIPHView { ...@@ -63,8 +61,7 @@ class VideoIPHView {
} }
private void setDismissListener(Runnable dismissListener) { private void setDismissListener(Runnable dismissListener) {
View closeButton = mCardView.findViewById( View closeButton = mCardView.findViewById(R.id.close_button);
org.chromium.chrome.browser.video_tutorials.R.id.close_button);
closeButton.setOnClickListener(view -> { closeButton.setOnClickListener(view -> {
mCardView.setVisibility(View.GONE); mCardView.setVisibility(View.GONE);
dismissListener.run(); dismissListener.run();
......
...@@ -21,8 +21,7 @@ class LanguageItemViewHolder { ...@@ -21,8 +21,7 @@ class LanguageItemViewHolder {
/** Builder method to create the language item view. */ /** Builder method to create the language item view. */
public static View buildView(ViewGroup parent) { public static View buildView(ViewGroup parent) {
return LayoutInflater.from(parent.getContext()) return LayoutInflater.from(parent.getContext())
.inflate(org.chromium.chrome.browser.video_tutorials.R.layout.language_card, parent, .inflate(R.layout.language_card, parent, false);
false);
} }
/** Binder method to bind the list view with the model properties. */ /** Binder method to bind the list view with the model properties. */
......
...@@ -5,25 +5,19 @@ ...@@ -5,25 +5,19 @@
package org.chromium.chrome.browser.video_tutorials.languages; package org.chromium.chrome.browser.video_tutorials.languages;
import android.content.Context; import android.content.Context;
import android.content.res.Resources;
import android.text.TextUtils;
import android.view.View; import android.view.View;
import org.chromium.chrome.browser.video_tutorials.Language;
import org.chromium.chrome.browser.video_tutorials.VideoTutorialService; import org.chromium.chrome.browser.video_tutorials.VideoTutorialService;
import org.chromium.ui.modelutil.MVCListAdapter.ListItem;
import org.chromium.ui.modelutil.MVCListAdapter.ModelList; import org.chromium.ui.modelutil.MVCListAdapter.ModelList;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
import java.util.ArrayList;
import java.util.List;
/** /**
* The top level coordinator for the language picker UI. * The top level coordinator for the language picker UI.
*/ */
public class LanguagePickerCoordinator { public class LanguagePickerCoordinator {
private final Context mContext; private final Context mContext;
private final VideoTutorialService mVideoTutorialService; private final VideoTutorialService mVideoTutorialService;
private final LanguagePickerMediator mMediator;
private final LanguagePickerView mView; private final LanguagePickerView mView;
private final PropertyModel mModel; private final PropertyModel mModel;
private final ModelList mListModel; private final ModelList mListModel;
...@@ -39,6 +33,7 @@ public class LanguagePickerCoordinator { ...@@ -39,6 +33,7 @@ public class LanguagePickerCoordinator {
mModel = new PropertyModel(LanguagePickerProperties.ALL_KEYS); mModel = new PropertyModel(LanguagePickerProperties.ALL_KEYS);
mListModel = new ModelList(); mListModel = new ModelList();
mView = new LanguagePickerView(view, mModel, mListModel); mView = new LanguagePickerView(view, mModel, mListModel);
mMediator = new LanguagePickerMediator(mContext, mModel, mListModel, videoTutorialService);
} }
/** /**
...@@ -47,41 +42,11 @@ public class LanguagePickerCoordinator { ...@@ -47,41 +42,11 @@ public class LanguagePickerCoordinator {
* @param closeCallback The callback to be invoked when the close button is clicked. * @param closeCallback The callback to be invoked when the close button is clicked.
*/ */
public void showLanguagePicker(Runnable doneCallback, Runnable closeCallback) { public void showLanguagePicker(Runnable doneCallback, Runnable closeCallback) {
mModel.set(LanguagePickerProperties.CLOSE_CALLBACK, closeCallback); mMediator.showLanguagePicker(doneCallback, closeCallback);
mModel.set(LanguagePickerProperties.WATCH_CALLBACK, doneCallback);
populateList(mVideoTutorialService.getSupportedLanguages());
} }
/** @return A {@link View} representing this coordinator. */ /** @return A {@link View} representing this coordinator. */
public View getView() { public View getView() {
return mView.getView(); return mView.getView();
} }
private void onLanguageSelected(String locale) {
mVideoTutorialService.setPreferredLocale(locale);
populateList(mVideoTutorialService.getSupportedLanguages());
}
private void populateList(List<Language> supportedLanguages) {
List<ListItem> listItems = new ArrayList<>();
for (Language locale : supportedLanguages) {
ListItem listItem = new ListItem(
LanguageItemProperties.ITEM_VIEW_TYPE, buildListItemModelFromLocale(locale));
listItems.add(listItem);
}
mListModel.set(listItems);
}
private PropertyModel buildListItemModelFromLocale(Language language) {
Resources resources = mContext.getResources();
String preferredLocale = mVideoTutorialService.getPreferredLocale();
return new PropertyModel.Builder(LanguageItemProperties.ALL_KEYS)
.with(LanguageItemProperties.LOCALE, language.locale)
.with(LanguageItemProperties.NAME, language.name)
.with(LanguageItemProperties.NATIVE_NAME, language.nativeName)
.with(LanguageItemProperties.IS_SELECTED,
TextUtils.equals(language.locale, preferredLocale))
.with(LanguageItemProperties.SELECTION_CALLBACK, this::onLanguageSelected)
.build();
}
} }
// 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.languages;
import android.content.Context;
import android.text.TextUtils;
import org.chromium.chrome.browser.video_tutorials.Language;
import org.chromium.chrome.browser.video_tutorials.VideoTutorialService;
import org.chromium.ui.modelutil.MVCListAdapter.ListItem;
import org.chromium.ui.modelutil.MVCListAdapter.ModelList;
import org.chromium.ui.modelutil.PropertyModel;
import java.util.ArrayList;
import java.util.List;
/**
* The mediator for language selection UI.
*/
public class LanguagePickerMediator {
private final Context mContext;
private final VideoTutorialService mVideoTutorialService;
private final PropertyModel mModel;
private final ModelList mListModel;
/**
* Constructor.
* @param videoTutorialService The video tutorial service backend.
*/
public LanguagePickerMediator(Context context, PropertyModel model, ModelList listModel,
VideoTutorialService videoTutorialService) {
mContext = context;
mVideoTutorialService = videoTutorialService;
mModel = model;
mListModel = listModel;
}
/**
* See {@link LanguagePickerCoordinator#showLanguagePicker(Runnable, Runnable)}.
*/
public void showLanguagePicker(Runnable doneCallback, Runnable closeCallback) {
mModel.set(LanguagePickerProperties.CLOSE_CALLBACK, closeCallback);
mModel.set(LanguagePickerProperties.WATCH_CALLBACK, doneCallback);
populateList(mVideoTutorialService.getSupportedLanguages());
}
private void onLanguageSelected(String locale) {
mVideoTutorialService.setPreferredLocale(locale);
populateList(mVideoTutorialService.getSupportedLanguages());
}
private void populateList(List<Language> supportedLanguages) {
List<ListItem> listItems = new ArrayList<>();
for (Language locale : supportedLanguages) {
ListItem listItem = new ListItem(
LanguageItemProperties.ITEM_VIEW_TYPE, buildListItemModelFromLocale(locale));
listItems.add(listItem);
}
mListModel.set(listItems);
}
private PropertyModel buildListItemModelFromLocale(Language language) {
String preferredLocale = mVideoTutorialService.getPreferredLocale();
return new PropertyModel.Builder(LanguageItemProperties.ALL_KEYS)
.with(LanguageItemProperties.LOCALE, language.locale)
.with(LanguageItemProperties.NAME, language.name)
.with(LanguageItemProperties.NATIVE_NAME, language.nativeName)
.with(LanguageItemProperties.IS_SELECTED,
TextUtils.equals(language.locale, preferredLocale))
.with(LanguageItemProperties.SELECTION_CALLBACK, this::onLanguageSelected)
.build();
}
}
// 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.languages;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.verify;
import android.content.Context;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.chromium.base.metrics.test.ShadowRecordHistogram;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.video_tutorials.test.TestVideoTutorialService;
import org.chromium.ui.modelutil.MVCListAdapter.ListItem;
import org.chromium.ui.modelutil.MVCListAdapter.ModelList;
import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.modelutil.PropertyObservable;
/**
* Tests for {@link LanguagePickerMediator}.
*/
@RunWith(BaseRobolectricTestRunner.class)
public class LanguagePickerMediatorUnitTest {
@Mock
Context mContext;
private TestVideoTutorialService mTestVideoTutorialService;
private PropertyModel mModel;
private ModelList mListModel;
private LanguagePickerMediator mMediator;
@Mock
PropertyObservable.PropertyObserver<PropertyKey> mPropertyObserver;
@Before
public void setUp() {
ShadowRecordHistogram.reset();
MockitoAnnotations.initMocks(this);
mModel = new PropertyModel(LanguagePickerProperties.ALL_KEYS);
mModel.addObserver(mPropertyObserver);
mListModel = new ModelList();
mTestVideoTutorialService = new TestVideoTutorialService();
mMediator =
new LanguagePickerMediator(mContext, mModel, mListModel, mTestVideoTutorialService);
}
@Test
public void checkCallbacks() {
mMediator.showLanguagePicker(() -> {}, () -> {});
verify(mPropertyObserver)
.onPropertyChanged(mModel, LanguagePickerProperties.CLOSE_CALLBACK);
verify(mPropertyObserver)
.onPropertyChanged(mModel, LanguagePickerProperties.WATCH_CALLBACK);
}
@Test
public void loadsLanguagesInTheList() {
mMediator.showLanguagePicker(() -> {}, () -> {});
assertThat(mListModel.size(), equalTo(mTestVideoTutorialService.getTestLanguages().size()));
ListItem listItem = mListModel.get(0);
assertThat(listItem.model.get(LanguageItemProperties.NAME),
equalTo(TestVideoTutorialService.HINDI.name));
assertThat(listItem.model.get(LanguageItemProperties.NATIVE_NAME),
equalTo(TestVideoTutorialService.HINDI.nativeName));
}
}
// 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.languages;
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.support.test.rule.ActivityTestRule;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
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.chrome.browser.video_tutorials.R;
import org.chromium.chrome.browser.video_tutorials.VideoTutorialService;
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 LanguagePickerCoordinator}.
*/
@RunWith(ChromeJUnit4ClassRunner.class)
public class LanguagePickerTest {
@Rule
public ActivityTestRule<DummyUiActivity> mActivityTestRule =
new ActivityTestRule<>(DummyUiActivity.class);
private Activity mActivity;
private View mContentView;
private VideoTutorialService mVideoTutorialService;
private LanguagePickerCoordinator mCoordinator;
@Mock
private Runnable mWatchCallback;
@Mock
private Runnable mCloseCallback;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mActivity = mActivityTestRule.getActivity();
TestThreadUtils.runOnUiThreadBlocking(() -> {
FrameLayout parentView = new FrameLayout(mActivity);
mActivity.setContentView(parentView);
mVideoTutorialService = new TestVideoTutorialService();
mContentView =
LayoutInflater.from(mActivity).inflate(R.layout.language_picker, null, false);
parentView.addView(mContentView);
mCoordinator = new LanguagePickerCoordinator(mContentView, mVideoTutorialService);
mCoordinator.showLanguagePicker(mWatchCallback, mCloseCallback);
});
}
@Test
@SmallTest
public void testShowLanguages() {
onView(withText(TestVideoTutorialService.HINDI.name)).check(matches(isDisplayed()));
onView(withText(TestVideoTutorialService.HINDI.nativeName)).check(matches(isDisplayed()));
onView(withText("Watch")).check(matches(isDisplayed())).perform(ViewActions.click());
Mockito.verify(mWatchCallback).run();
}
}
...@@ -45,7 +45,6 @@ class LanguagePickerView { ...@@ -45,7 +45,6 @@ class LanguagePickerView {
LinearLayoutManager layoutManager = LinearLayoutManager layoutManager =
new LinearLayoutManager(mView.getContext(), LinearLayoutManager.VERTICAL, false); new LinearLayoutManager(mView.getContext(), LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager); recyclerView.setLayoutManager(layoutManager);
SimpleRecyclerViewAdapter adapter = new SimpleRecyclerViewAdapter(mListModel); SimpleRecyclerViewAdapter adapter = new SimpleRecyclerViewAdapter(mListModel);
adapter.registerType(LanguageItemProperties.ITEM_VIEW_TYPE, adapter.registerType(LanguageItemProperties.ITEM_VIEW_TYPE,
LanguageItemViewHolder::buildView, LanguageItemViewHolder::bindView); LanguageItemViewHolder::buildView, LanguageItemViewHolder::bindView);
......
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