10ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze/*
20ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze * Copyright (C) 2016 The Android Open Source Project
30ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze *
40ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze * Licensed under the Apache License, Version 2.0 (the "License");
50ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze * you may not use this file except in compliance with the License.
60ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze * You may obtain a copy of the License at
70ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze *
80ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze *      http://www.apache.org/licenses/LICENSE-2.0
90ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze *
100ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze * Unless required by applicable law or agreed to in writing, software
110ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze * distributed under the License is distributed on an "AS IS" BASIS,
120ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze * See the License for the specific language governing permissions and
140ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze * limitations under the License.
150ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze *
160ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze */
170ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze
180ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzepackage com.android.settings.search;
190ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze
200ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport android.app.Activity;
210ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport android.view.Menu;
226e88635e97b200e4d070480e215c70ffc0ae9b37Fan Zhang
230ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport com.android.settings.TestConfig;
24a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.dashboard.SiteMapManager;
25fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhangimport com.android.settings.testutils.SettingsRobolectricTestRunner;
266e88635e97b200e4d070480e215c70ffc0ae9b37Fan Zhang
270ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport org.junit.Before;
280ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport org.junit.Test;
290ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport org.junit.runner.RunWith;
300ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport org.mockito.Answers;
310ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport org.mockito.Mock;
320ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport org.mockito.MockitoAnnotations;
330ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport org.robolectric.Robolectric;
340ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzeimport org.robolectric.annotation.Config;
350ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze
3618fcb08308b50e73bbb380d3c9fc3261a4df7c83Matthew Fritzeimport static com.google.common.truth.Truth.assertThat;
370ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze
380ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze@RunWith(SettingsRobolectricTestRunner.class)
390ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
400ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritzepublic class SearchFeatureProviderImplTest {
410ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze    private SearchFeatureProviderImpl mProvider;
420ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze    private Activity mActivity;
430ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze
440ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
450ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze    private Menu menu;
460ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze
470ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze    @Before
480ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze    public void setUp() {
490ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze        MockitoAnnotations.initMocks(this);
500ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze        mActivity = Robolectric.buildActivity(Activity.class).create().visible().get();
519955db636016e7f18358f7b5d24a14b55df4dabfMatthew Fritze        mProvider = new SearchFeatureProviderImpl();
520ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze    }
530ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze
540ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze    @Test
55be0989cc615724f07f5717c9bf17e12560872bb4Matthew Fritze    public void getSiteMapManager_shouldCacheInstance() {
56a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        final SiteMapManager manager1 = mProvider.getSiteMapManager();
57a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        final SiteMapManager manager2 = mProvider.getSiteMapManager();
58a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang
59a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        assertThat(manager1).isSameAs(manager2);
60a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    }
61fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang
62fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang    @Test
63fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang    public void getDatabaseSearchLoader_shouldCleanupQuery() {
64fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang        final String query = "  space ";
65fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang        final DatabaseResultLoader loader = mProvider.getDatabaseSearchLoader(mActivity, query);
66fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang
67fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang        assertThat(loader.mQueryText).isEqualTo(query.trim());
68fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang    }
69fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang
70fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang    @Test
71fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang    public void getInstalledAppSearchLoader_shouldCleanupQuery() {
72fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang        final String query = "  space ";
73fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang        final InstalledAppResultLoader loader =
74fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang                mProvider.getInstalledAppSearchLoader(mActivity, query);
75fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang
76fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang        assertThat(loader.mQuery).isEqualTo(query.trim());
77fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang    }
78fbcf4e6e14d090aaced06d3f8708d6e9df1962baFan Zhang
790ed37c351333429f58e1561fcb8e6af9c2041507Matthew Fritze}
80