ProviderSearchesUriTest.java revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5package org.chromium.chrome.browser.test;
6
7import android.content.ContentValues;
8import android.database.Cursor;
9import android.net.Uri;
10import android.provider.Browser;
11import android.provider.Browser.SearchColumns;
12import android.test.suitebuilder.annotation.MediumTest;
13
14import java.util.Date;
15
16import org.chromium.base.test.util.DisabledTest;
17import org.chromium.base.test.util.Feature;
18import org.chromium.chrome.browser.ChromeBrowserProvider;
19
20/**
21 * Tests the use of the Searches URI as part of the Android provider public API.
22 */
23public class ProviderSearchesUriTest extends ProviderTestBase {
24
25    private Uri mSearchesUri;
26
27    @Override
28    protected void setUp() throws Exception {
29        super.setUp();
30        mSearchesUri = ChromeBrowserProvider.getSearchesApiUri(getActivity());
31        getContentResolver().delete(mSearchesUri, null, null);
32    }
33
34    @Override
35    protected void tearDown() throws Exception {
36        getContentResolver().delete(mSearchesUri, null, null);
37        super.tearDown();
38    }
39
40    private Uri addSearchTerm(String searchTerm, long searchTime) {
41        ContentValues values = new ContentValues();
42        values.put(SearchColumns.SEARCH, searchTerm);
43        values.put(SearchColumns.DATE, searchTime);
44        return getContentResolver().insert(mSearchesUri, values);
45    }
46
47    /**
48     * @MediumTest
49     * @Feature({"Android-ContentProvider"})
50     * BUG 154683
51     */
52    @DisabledTest
53    public void testAddSearchTerm() {
54        long searchTime = System.currentTimeMillis();
55        String searchTerm = "chrome";
56        Uri uri = addSearchTerm(searchTerm, searchTime);
57        assertNotNull(uri);
58        String[] selectionArgs = { searchTerm, String.valueOf(searchTime) };
59        Cursor cursor = getContentResolver().query(uri, null, SearchColumns.SEARCH + "=? AND " +
60                SearchColumns.DATE + " = ? ", selectionArgs, null);
61        assertNotNull(cursor);
62        assertEquals(1, cursor.getCount());
63        assertTrue(cursor.moveToNext());
64        int index = cursor.getColumnIndex(SearchColumns.SEARCH);
65        assertTrue(-1 != index);
66        assertEquals(searchTerm, cursor.getString(index));
67        index = cursor.getColumnIndex(SearchColumns.DATE);
68        assertTrue(-1 != index);
69        assertEquals(searchTime, cursor.getLong(index));
70    }
71
72    /**
73     * @MediumTest
74     * @Feature({"Android-ContentProvider"})
75     * BUG 154683
76     */
77    @DisabledTest
78    public void testUpdateSearchTerm() {
79        long[] searchTime = { System.currentTimeMillis(), System.currentTimeMillis() - 1000 };
80        String[] searchTerm = { "chrome", "chromium" };
81        Uri uri = addSearchTerm(searchTerm[0], searchTime[0]);
82        ContentValues values = new ContentValues();
83        values.put(SearchColumns.SEARCH, searchTerm[1]);
84        values.put(SearchColumns.DATE, searchTime[1]);
85        getContentResolver().update(uri, values, null, null);
86        String[] selectionArgs = { searchTerm[0] };
87        Cursor cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?",
88                selectionArgs, null);
89        assertNotNull(cursor);
90        assertEquals(0, cursor.getCount());
91        String[] selectionArgs1 = { searchTerm[1] };
92        cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?",
93                selectionArgs1, null);
94        assertNotNull(cursor);
95        assertEquals(1, cursor.getCount());
96        assertTrue(cursor.moveToNext());
97        int index = cursor.getColumnIndex(SearchColumns.SEARCH);
98        assertTrue(-1 != index);
99        assertEquals(searchTerm[1], cursor.getString(index));
100        index = cursor.getColumnIndex(SearchColumns.DATE);
101        assertTrue(-1 != index);
102        assertEquals(searchTime[1], cursor.getLong(index));
103    }
104
105    /**
106     * @MediumTest
107     * @Feature({"Android-ContentProvider"})
108     * BUG 154683
109     */
110    @DisabledTest
111    public void testDeleteSearchTerm() {
112        long[] searchTime = { System.currentTimeMillis(), System.currentTimeMillis() - 1000 };
113        String[] searchTerm = {"chrome", "chromium"};
114        Uri uri[] = new Uri[2];
115        for (int i = 0; i < uri.length; i++) {
116            uri[i] = addSearchTerm(searchTerm[i], searchTime[i]);
117        }
118        getContentResolver().delete(uri[0], null, null);
119        String[] selectionArgs = { searchTerm[0] };
120        Cursor cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?",
121                selectionArgs, null);
122        assertNotNull(cursor);
123        assertEquals(0, cursor.getCount());
124        String[] selectionArgs1 = { searchTerm[1] };
125        cursor = getContentResolver().query(mSearchesUri, null, SearchColumns.SEARCH + "=?",
126                selectionArgs1, null);
127        assertNotNull(cursor);
128        assertEquals(1, cursor.getCount());
129        assertTrue(cursor.moveToNext());
130        int index = cursor.getColumnIndex(SearchColumns.SEARCH);
131        assertTrue(-1 != index);
132        assertEquals(searchTerm[1], cursor.getString(index));
133        index = cursor.getColumnIndex(SearchColumns.DATE);
134        assertTrue(-1 != index);
135        assertEquals(searchTime[1], cursor.getLong(index));
136        getContentResolver().delete(uri[1], null, null);
137        cursor = getContentResolver().query(uri[1], null, null, null, null);
138        assertNotNull(cursor);
139        assertEquals(0, cursor.getCount());
140    }
141
142    // Copied from CTS test with minor adaptations.
143    /**
144     * @MediumTest
145     * @Feature({"Android-ContentProvider"})
146     * BUG 154683
147     */
148    @DisabledTest
149    public void testSearchesTable() {
150        final int ID_INDEX = 0;
151        String insertSearch = "search_insert";
152        String updateSearch = "search_update";
153
154        // Test: insert
155        ContentValues value = new ContentValues();
156        long createDate = new Date().getTime();
157        value.put(SearchColumns.SEARCH, insertSearch);
158        value.put(SearchColumns.DATE, createDate);
159
160        Uri insertUri = getContentResolver().insert(mSearchesUri, value);
161        Cursor cursor = getContentResolver().query(mSearchesUri,
162                Browser.SEARCHES_PROJECTION, SearchColumns.SEARCH + " = ?",
163                new String[] { insertSearch }, null);
164        assertTrue(cursor.moveToNext());
165        assertEquals(insertSearch,
166                cursor.getString(Browser.SEARCHES_PROJECTION_SEARCH_INDEX));
167        assertEquals(createDate,
168                cursor.getLong(Browser.SEARCHES_PROJECTION_DATE_INDEX));
169        int Id = cursor.getInt(ID_INDEX);
170        cursor.close();
171
172        // Test: update
173        value.clear();
174        long updateDate = new Date().getTime();
175        value.put(SearchColumns.SEARCH, updateSearch);
176        value.put(SearchColumns.DATE, updateDate);
177
178        getContentResolver().update(mSearchesUri, value,
179                SearchColumns._ID + " = " + Id, null);
180        cursor = getContentResolver().query(mSearchesUri,
181                Browser.SEARCHES_PROJECTION,
182                SearchColumns._ID + " = " + Id, null, null);
183        assertTrue(cursor.moveToNext());
184        assertEquals(updateSearch,
185                cursor.getString(Browser.SEARCHES_PROJECTION_SEARCH_INDEX));
186        assertEquals(updateDate,
187                cursor.getLong(Browser.SEARCHES_PROJECTION_DATE_INDEX));
188        assertEquals(Id, cursor.getInt(ID_INDEX));
189
190        // Test: delete
191        getContentResolver().delete(insertUri, null, null);
192        cursor = getContentResolver().query(mSearchesUri,
193                Browser.SEARCHES_PROJECTION,
194                SearchColumns._ID + " = " + Id, null, null);
195        assertEquals(0, cursor.getCount());
196    }
197}
198