1 /*
2  * Copyright (C) 2021 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.bluetooth;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import static org.mockito.Mockito.mock;
22 import static org.mockito.Mockito.spy;
23 
24 import android.content.Context;
25 import android.graphics.drawable.Drawable;
26 import android.view.ContextThemeWrapper;
27 import android.view.View;
28 
29 import com.android.settings.R;
30 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
31 
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.Mock;
36 import org.robolectric.RobolectricTestRunner;
37 import org.robolectric.RuntimeEnvironment;
38 import org.robolectric.annotation.Config;
39 
40 import java.util.ArrayList;
41 import java.util.List;
42 
43 @RunWith(RobolectricTestRunner.class)
44 @Config(shadows = {ShadowAlertDialogCompat.class})
45 public class CompanionAppWidgetPreferenceTest {
46     private static final String TITLE_ONE = "Test Title 1";
47     private static final String TITLE_TWO = "Test Title 1";
48     private static final String KEY_ONE = "Test Key 1";
49     private static final String KEY_TWO = "Test Key 1";
50 
51     private Context mContext;
52     private Drawable mWidgetIconOne;
53     private Drawable mWidgetIconTwo;
54     private Drawable mAppIconOne;
55     private Drawable mAppIconTwo;
56 
57     @Mock
58     private View.OnClickListener mWidgetListenerOne;
59     @Mock
60     private View.OnClickListener mWidgetListenerTwo;
61 
62     private List<CompanionAppWidgetPreference> mPreferenceContainer;
63 
64     @Before
setUp()65     public void setUp() {
66         mPreferenceContainer = new ArrayList<>();
67         Context context = spy(RuntimeEnvironment.application.getApplicationContext());
68         mContext = new ContextThemeWrapper(context, R.style.Theme_Settings);
69         mWidgetIconOne = mock(Drawable.class);
70         mAppIconOne = mock(Drawable.class);
71         mWidgetListenerOne = mock(View.OnClickListener.class);
72         mWidgetIconTwo = mock(Drawable.class);
73         mAppIconTwo = mock(Drawable.class);
74         mWidgetListenerTwo = mock(View.OnClickListener.class);
75     }
76 
setUpPreferenceContainer(Drawable widgetIcon, Drawable appIcon, View.OnClickListener listener, String title, String key)77     private void setUpPreferenceContainer(Drawable widgetIcon, Drawable appIcon,
78             View.OnClickListener listener, String title, String key) {
79         CompanionAppWidgetPreference preference = new CompanionAppWidgetPreference(
80                 widgetIcon, listener, mContext);
81         preference.setIcon(appIcon);
82         preference.setTitle(title);
83         preference.setKey(key);
84         mPreferenceContainer.add(preference);
85     }
86 
87     @Test
setUpPreferenceContainer_preferenceShouldBeAdded()88     public void setUpPreferenceContainer_preferenceShouldBeAdded() {
89         setUpPreferenceContainer(
90                 mWidgetIconOne, mAppIconOne, mWidgetListenerOne, TITLE_ONE, KEY_ONE);
91 
92         assertThat(mPreferenceContainer.get(0).getIcon()).isEqualTo(mAppIconOne);
93         assertThat(mPreferenceContainer.get(0).getKey()).isEqualTo(KEY_ONE);
94         assertThat(mPreferenceContainer.get(0).getTitle()).isEqualTo(TITLE_ONE);
95 
96         setUpPreferenceContainer(
97                 mWidgetIconTwo, mAppIconTwo, mWidgetListenerTwo, TITLE_TWO, KEY_TWO);
98 
99         assertThat(mPreferenceContainer.get(1).getIcon()).isEqualTo(mAppIconTwo);
100         assertThat(mPreferenceContainer.get(1).getKey()).isEqualTo(KEY_TWO);
101         assertThat(mPreferenceContainer.get(1).getTitle()).isEqualTo(TITLE_TWO);
102     }
103 }
104