• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 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.suggestions;
18 
19 import static com.android.settings.TestConfig.MANIFEST_PATH;
20 import static com.google.common.truth.Truth.assertThat;
21 
22 import android.annotation.StringRes;
23 import android.content.Context;
24 import com.android.settings.R;
25 import com.android.settings.SettingsRobolectricTestRunner;
26 import com.android.settings.TestConfig;
27 import java.util.ArrayList;
28 import java.util.List;
29 import java.util.Map;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.robolectric.RuntimeEnvironment;
33 import org.robolectric.annotation.Config;
34 import org.robolectric.manifest.ActivityData;
35 import org.robolectric.manifest.AndroidManifest;
36 import org.robolectric.manifest.IntentFilterData;
37 import org.robolectric.shadows.ShadowApplication;
38 
39 @RunWith(SettingsRobolectricTestRunner.class)
40 @Config(manifest = MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
41 public class SettingsSuggestionsTest {
42 
43   @Test
zenModeAutomationSuggestion_isValid()44   public void zenModeAutomationSuggestion_isValid() {
45     assertSuggestionEquals("Settings$ZenModeAutomationSuggestionActivity",
46         R.string.zen_mode_automation_suggestion_title,
47         R.string.zen_mode_automation_suggestion_summary);
48   }
49 
50   @Test
wallpaperSuggestion_isValid()51   public void wallpaperSuggestion_isValid() {
52     assertSuggestionEquals("com.android.settings.wallpaper.WallpaperSuggestionActivity",
53         R.string.wallpaper_suggestion_title, R.string.wallpaper_suggestion_summary);
54   }
55 
56   @Test
fingerprintSuggestion_isValid()57   public void fingerprintSuggestion_isValid() {
58     assertSuggestionEquals("com.android.settings.Settings$FingerprintSuggestionActivity",
59         R.string.suggestion_additional_fingerprints,
60         R.string.suggestion_additional_fingerprints_summary);
61   }
62 
63   @Test
wifiCallingSuggestion_isValid()64   public void wifiCallingSuggestion_isValid() {
65     assertSuggestionEquals("Settings$WifiCallingSuggestionActivity",
66         R.string.wifi_calling_suggestion_title, R.string.wifi_calling_suggestion_summary);
67   }
68 
assertSuggestionEquals(String activityName, @StringRes int title, @StringRes int summary)69   private void assertSuggestionEquals(String activityName, @StringRes int title,
70       @StringRes int summary) {
71     final AndroidManifest androidManifest = ShadowApplication.getInstance().getAppManifest();
72     final ActivityData activityData = androidManifest.getActivityData(activityName);
73     final Map<String, Object> metaData = activityData.getMetaData().getValueMap();
74     final Context context = RuntimeEnvironment.application;
75     final String expectedTitle = context.getString(title);
76     final String expectedSummary = context.getString(summary);
77 
78     final String pName= context.getPackageName();
79     final String actualTitle = context.getString(context.getResources().getIdentifier(
80         ((String) metaData.get("com.android.settings.title")).substring(8), "string", pName));
81     final String actualSummary = context.getString(context.getResources().getIdentifier(
82         ((String) metaData.get("com.android.settings.summary")).substring(8), "string", pName));
83     assertThat(actualTitle).isEqualTo(expectedTitle);
84     assertThat(actualSummary).isEqualTo(expectedSummary);
85 
86     final List<IntentFilterData> intentFilters = activityData.getIntentFilters();
87     final List<String> categories = new ArrayList<>();
88     for (IntentFilterData intentFilter : intentFilters) {
89       categories.addAll(intentFilter.getCategories());
90     }
91 
92     assertThat(categories).contains("com.android.settings.suggested.category.SETTINGS_ONLY");
93   }
94 }
95