OSDN Git Service

Log ACTION_CONTEXTUAL_CARD_SHOW in different place
[android-x86/packages-apps-Settings.git] / tests / robotests / src / com / android / settings / homepage / contextualcards / ContextualCardLoaderTest.java
1 /*
2  * Copyright (C) 2018 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.homepage.contextualcards;
18
19 import static com.android.settings.homepage.contextualcards.ContextualCardLoader.DEFAULT_CARD_COUNT;
20
21 import static com.google.common.truth.Truth.assertThat;
22
23 import static org.mockito.ArgumentMatchers.any;
24 import static org.mockito.ArgumentMatchers.anyList;
25 import static org.mockito.ArgumentMatchers.eq;
26 import static org.mockito.Mockito.doReturn;
27 import static org.mockito.Mockito.never;
28 import static org.mockito.Mockito.spy;
29 import static org.mockito.Mockito.verify;
30
31 import android.app.settings.SettingsEnums;
32 import android.content.Context;
33 import android.net.Uri;
34
35 import com.android.settings.R;
36 import com.android.settings.slices.CustomSliceRegistry;
37 import com.android.settings.testutils.FakeFeatureFactory;
38
39 import org.junit.Before;
40 import org.junit.Test;
41 import org.junit.runner.RunWith;
42 import org.robolectric.RobolectricTestRunner;
43 import org.robolectric.RuntimeEnvironment;
44
45 import java.util.ArrayList;
46 import java.util.List;
47 import java.util.stream.Collectors;
48
49 @RunWith(RobolectricTestRunner.class)
50 public class ContextualCardLoaderTest {
51
52     private Context mContext;
53     private ContextualCardLoader mContextualCardLoader;
54     private FakeFeatureFactory mFakeFeatureFactory;
55
56     @Before
57     public void setUp() {
58         mContext = RuntimeEnvironment.application;
59         mContextualCardLoader = spy(new ContextualCardLoader(mContext));
60         mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
61     }
62
63     @Test
64     public void loadInBackground_legacyMode_shouldReturnNothing() {
65         assertThat(mContext.getResources().getBoolean(R.bool.config_use_legacy_suggestion))
66                 .isTrue();
67
68         assertThat(mContextualCardLoader.loadInBackground()).isEmpty();
69     }
70
71     @Test
72     public void getDisplayableCards_twoEligibleCards_shouldShowAll() {
73         final List<ContextualCard> cards = getContextualCardList().stream().limit(2)
74                 .collect(Collectors.toList());
75         doReturn(cards).when(mContextualCardLoader).filterEligibleCards(anyList());
76
77         final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards(cards);
78
79         assertThat(result).hasSize(cards.size());
80     }
81
82     @Test
83     public void getDisplayableCards_fourEligibleCards_shouldShowDefaultCardCount() {
84         final List<ContextualCard> fourCards = getContextualCardList();
85         doReturn(fourCards).when(mContextualCardLoader).filterEligibleCards(anyList());
86
87         final List<ContextualCard> result = mContextualCardLoader
88                 .getDisplayableCards(fourCards);
89
90         assertThat(result).hasSize(DEFAULT_CARD_COUNT);
91     }
92
93     @Test
94     public void getDisplayableCards_refreshCardUri_shouldLogContextualCard() {
95         mContextualCardLoader.mNotifyUri = CardContentProvider.REFRESH_CARD_URI;
96
97         mContextualCardLoader.getDisplayableCards(new ArrayList<>());
98
99         verify(mFakeFeatureFactory.metricsFeatureProvider).action(any(),
100                 eq(SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW), any(String.class));
101     }
102
103     @Test
104     public void getDisplayableCards_deleteCardUri_shouldNotLogContextualCard() {
105         mContextualCardLoader.mNotifyUri = CardContentProvider.DELETE_CARD_URI;
106
107         mContextualCardLoader.getDisplayableCards(new ArrayList<>());
108
109         verify(mFakeFeatureFactory.metricsFeatureProvider, never()).action(any(),
110                 eq(SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW), any(String.class));
111     }
112
113     private List<ContextualCard> getContextualCardList() {
114         final List<ContextualCard> cards = new ArrayList<>();
115         cards.add(new ContextualCard.Builder()
116                 .setName("test_wifi")
117                 .setCardType(ContextualCard.CardType.SLICE)
118                 .setSliceUri(CustomSliceRegistry.CONTEXTUAL_WIFI_SLICE_URI)
119                 .build());
120         cards.add(new ContextualCard.Builder()
121                 .setName("test_flashlight")
122                 .setCardType(ContextualCard.CardType.SLICE)
123                 .setSliceUri(
124                         Uri.parse("content://com.android.settings.test.slices/action/flashlight"))
125                 .build());
126         cards.add(new ContextualCard.Builder()
127                 .setName("test_connected")
128                 .setCardType(ContextualCard.CardType.SLICE)
129                 .setSliceUri(CustomSliceRegistry.BLUETOOTH_DEVICES_SLICE_URI)
130                 .build());
131         cards.add(new ContextualCard.Builder()
132                 .setName("test_gesture")
133                 .setCardType(ContextualCard.CardType.SLICE)
134                 .setSliceUri(Uri.parse(
135                         "content://com.android.settings.test.slices/action/gesture_pick_up"))
136                 .build());
137         return cards;
138     }
139 }