• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2013 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.providers.contacts.testutil;
18 
19 import android.content.ContentResolver;
20 import android.content.ContentValues;
21 import android.net.Uri;
22 import android.test.MoreAsserts;
23 
24 import junit.framework.Assert;
25 
26 /**
27  * Common methods for asserting database related operations.
28  */
29 public class DatabaseAsserts {
30 
assertDeleteIsUnsupported(ContentResolver resolver, Uri uri)31     public static void assertDeleteIsUnsupported(ContentResolver resolver, Uri uri) {
32         try {
33             resolver.delete(uri, null, null);
34             Assert.fail("delete operation should have failed with UnsupportedOperationException on"
35                     + uri);
36         } catch (UnsupportedOperationException e) {
37             // pass
38         }
39     }
40 
assertInsertIsUnsupported(ContentResolver resolver, Uri uri)41     public static void assertInsertIsUnsupported(ContentResolver resolver, Uri  uri) {
42         try {
43             ContentValues values = new ContentValues();
44             resolver.insert(uri, values);
45             Assert.fail("insert operation should have failed with UnsupportedOperationException on"
46                     + uri);
47         } catch (UnsupportedOperationException e) {
48             // pass
49         }
50     }
51 
52     /**
53      * Create a contact and assert that the record exists.
54      *
55      * @return The created contact id pair.
56      */
assertAndCreateContact(ContentResolver resolver)57     public static ContactIdPair assertAndCreateContact(ContentResolver resolver) {
58         long rawContactId = RawContactUtil.createRawContactWithName(resolver);
59 
60         long contactId = RawContactUtil.queryContactIdByRawContactId(resolver, rawContactId);
61         MoreAsserts.assertNotEqual(CommonDatabaseUtils.NOT_FOUND, contactId);
62 
63         return new ContactIdPair(contactId, rawContactId);
64     }
65 
66     /**
67      * Create a contact with name and assert that the record exists.
68      *
69      * @return The created contact id pair.
70      */
assertAndCreateContactWithName(ContentResolver resolver, String firstName, String lastName)71     public static ContactIdPair assertAndCreateContactWithName(ContentResolver resolver,
72             String firstName, String lastName) {
73         long rawContactId = RawContactUtil.createRawContactWithName(resolver, firstName, lastName);
74 
75         long contactId = RawContactUtil.queryContactIdByRawContactId(resolver, rawContactId);
76         MoreAsserts.assertNotEqual(CommonDatabaseUtils.NOT_FOUND, contactId);
77 
78         return new ContactIdPair(contactId, rawContactId);
79     }
80 
81     /**
82      * Asserts that a contact id was deleted, has a delete log, and that log has a timestamp greater
83      * than the given timestamp.
84      *
85      * @param contactId The contact id to check.
86      * @param start The timestamp that the delete log should be greater than.
87      */
assertHasDeleteLogGreaterThan(ContentResolver resolver, long contactId, long start)88     public static void assertHasDeleteLogGreaterThan(ContentResolver resolver, long contactId,
89             long start) {
90         Assert.assertFalse(ContactUtil.recordExistsForContactId(resolver, contactId));
91 
92         long deletedTimestamp = DeletedContactUtil.queryDeletedTimestampForContactId(resolver,
93                 contactId);
94         MoreAsserts.assertNotEqual(CommonDatabaseUtils.NOT_FOUND, deletedTimestamp);
95         Assert.assertTrue(deletedTimestamp > start);
96     }
97 
98     /**
99      * Holds a single contact id and raw contact id relationship.
100      */
101     public static class ContactIdPair {
102         public long mContactId;
103         public long mRawContactId;
104 
ContactIdPair(long contactId, long rawContactId)105         public ContactIdPair(long contactId, long rawContactId) {
106             this.mContactId = contactId;
107             this.mRawContactId = rawContactId;
108         }
109     }
110 }
111