New ContactMediaChooser allows the user to pick a contact from contacts apps as attachment. Test: Manual Change-Id: Idb00cd8a3164a3cac859947affd5cbcc7e41b8c2 Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
130 lines
5.1 KiB
Java
130 lines
5.1 KiB
Java
/*
|
|
* Copyright (C) 2015 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.android.messaging.ui.mediapicker;
|
|
|
|
import android.content.Context;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.ImageButton;
|
|
|
|
import com.android.messaging.FakeFactory;
|
|
import com.android.messaging.R;
|
|
import com.android.messaging.datamodel.FakeDataModel;
|
|
import com.android.messaging.datamodel.binding.Binding;
|
|
import com.android.messaging.datamodel.binding.BindingBase;
|
|
import com.android.messaging.datamodel.data.DraftMessageData;
|
|
import com.android.messaging.datamodel.data.MediaPickerData;
|
|
import com.android.messaging.ui.FragmentTestCase;
|
|
|
|
import org.mockito.Matchers;
|
|
import org.mockito.Mock;
|
|
import org.mockito.Mockito;
|
|
|
|
public class MediaPickerTest extends FragmentTestCase<MediaPicker> {
|
|
@Mock protected MediaPickerData mMockMediaPickerData;
|
|
@Mock protected DraftMessageData mMockDraftMessageData;
|
|
protected FakeDataModel mFakeDataModel;
|
|
|
|
public MediaPickerTest() {
|
|
super(MediaPicker.class);
|
|
}
|
|
|
|
@Override
|
|
protected MediaPicker getFragment() {
|
|
if (mFragment == null) {
|
|
mFragment = new MediaPicker(getInstrumentation().getTargetContext());
|
|
}
|
|
return mFragment;
|
|
}
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
final Context context = getInstrumentation().getTargetContext();
|
|
mFakeDataModel = new FakeDataModel(context)
|
|
.withMediaPickerData(mMockMediaPickerData);
|
|
FakeFactory.register(context)
|
|
.withDataModel(mFakeDataModel);
|
|
}
|
|
|
|
/**
|
|
* Helper method to initialize the MediaPicker and its data.
|
|
*/
|
|
private void initFragment(final int supportedMediaTypes, final Integer[] expectedLoaderIds,
|
|
final boolean filterTabBeforeAttach) {
|
|
Mockito.when(mMockMediaPickerData.isBound(Matchers.anyString()))
|
|
.thenReturn(true);
|
|
Mockito.when(mMockDraftMessageData.isBound(Matchers.anyString()))
|
|
.thenReturn(true);
|
|
final Binding<DraftMessageData> draftBinding = BindingBase.createBinding(this);
|
|
draftBinding.bind(mMockDraftMessageData);
|
|
|
|
getActivity().runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
final MediaPicker fragment = getFragment();
|
|
if (filterTabBeforeAttach) {
|
|
fragment.setSupportedMediaTypes(supportedMediaTypes);
|
|
getActivity().setFragment(fragment);
|
|
} else {
|
|
getActivity().setFragment(fragment);
|
|
fragment.setSupportedMediaTypes(supportedMediaTypes);
|
|
}
|
|
fragment.setDraftMessageDataModel(draftBinding);
|
|
Mockito.verify(mMockMediaPickerData,
|
|
Mockito.atLeastOnce()).init(
|
|
Matchers.eq(fragment.getLoaderManager()));
|
|
fragment.open(MediaPicker.MEDIA_TYPE_ALL, false);
|
|
}
|
|
});
|
|
getInstrumentation().waitForIdleSync();
|
|
}
|
|
|
|
public void testDefaultTabs() {
|
|
Mockito.when(mMockMediaPickerData.getSelectedChooserIndex()).thenReturn(0);
|
|
initFragment(MediaPicker.MEDIA_TYPE_ALL, new Integer[] {
|
|
MediaPickerData.GALLERY_MEDIA_LOADER },
|
|
false);
|
|
final MediaPicker mediaPicker = getFragment();
|
|
final View view = mediaPicker.getView();
|
|
assertNotNull(view);
|
|
final ViewGroup tabStrip = (ViewGroup) view.findViewById(R.id.mediapicker_tabstrip);
|
|
assertEquals(tabStrip.getChildCount(), 4);
|
|
for (int i = 0; i < tabStrip.getChildCount(); i++) {
|
|
final ImageButton tabButton = (ImageButton) tabStrip.getChildAt(i);
|
|
assertEquals(View.VISIBLE, tabButton.getVisibility());
|
|
assertEquals(i == 0, tabButton.isSelected());
|
|
}
|
|
}
|
|
|
|
public void testFilterTabsBeforeAttach() {
|
|
Mockito.when(mMockMediaPickerData.getSelectedChooserIndex()).thenReturn(0);
|
|
initFragment(MediaPicker.MEDIA_TYPE_IMAGE, new Integer[] {
|
|
MediaPickerData.GALLERY_MEDIA_LOADER },
|
|
true);
|
|
final MediaPicker mediaPicker = getFragment();
|
|
final View view = mediaPicker.getView();
|
|
assertNotNull(view);
|
|
final ViewGroup tabStrip = (ViewGroup) view.findViewById(R.id.mediapicker_tabstrip);
|
|
assertEquals(tabStrip.getChildCount(), 4);
|
|
for (int i = 0; i < tabStrip.getChildCount(); i++) {
|
|
final ImageButton tabButton = (ImageButton) tabStrip.getChildAt(i);
|
|
assertEquals(i == 0, tabButton.isSelected());
|
|
}
|
|
}
|
|
}
|