1b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook/* 2b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * Copyright (C) 2011 The Android Open Source Project 3b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * 4b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * Licensed under the Apache License, Version 2.0 (the "License"); 5b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * you may not use this file except in compliance with the License. 6b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * You may obtain a copy of the License at 7b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * 8b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * http://www.apache.org/licenses/LICENSE-2.0 9b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * 10b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * Unless required by applicable law or agreed to in writing, software 11b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * distributed under the License is distributed on an "AS IS" BASIS, 12b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * See the License for the specific language governing permissions and 14b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * limitations under the License. 15b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook */ 16b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook 17b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrookpackage com.android.exchange.utility; 18b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook 19b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrookimport com.android.emailcommon.provider.Account; 20b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrookimport com.android.exchange.provider.EmailContentSetupUtils; 21b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook 22b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrookimport android.content.ContentResolver; 23b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrookimport android.content.ContentUris; 24b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrookimport android.content.Context; 25b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrookimport android.test.AndroidTestCase; 26b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook 27b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrookimport java.util.ArrayList; 28b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook 29b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrookpublic abstract class ExchangeTestCase extends AndroidTestCase { 30b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook private final ArrayList<Long> mCreatedAccountIds = new ArrayList<Long>(); 31b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook protected Context mProviderContext; 32b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook 33b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook @Override 34b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook public void setUp() throws Exception { 35b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook super.setUp(); 36b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook mContext = getContext(); 37b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook // Could use MockContext here if we switch over 38b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook mProviderContext = mContext; 39b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook } 40b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook 41b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook @Override 42b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook public void tearDown() throws Exception { 43b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook super.tearDown(); 44b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook ContentResolver resolver = mProviderContext.getContentResolver(); 45b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook for (Long accountId: mCreatedAccountIds) { 46b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook resolver.delete(ContentUris.withAppendedId(Account.CONTENT_URI, accountId), null, 47b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook null); 48b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook } 49b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook } 50b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook 51b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook /** 52b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * Add an account to our list of test accounts; we'll delete it automatically in tearDown() 53b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * @param account the account to be added to our list of test accounts 54b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook */ 55b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook protected void addTestAccount(Account account) { 56b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook if (account.mId > 0) { 57b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook mCreatedAccountIds.add(account.mId); 58b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook } 59b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook } 60b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook 61b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook /** 62b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * Create a test account that will be automatically deleted when the test is finished 63b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * @param name the name of the account 64b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * @param saveIt whether or not to save the account in EmailProvider 65b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook * @return the account created 66b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook */ 67b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook protected Account setupTestAccount(String name, boolean saveIt) { 68b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook Account account = EmailContentSetupUtils.setupAccount(name, saveIt, mProviderContext); 69b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook addTestAccount(account); 70b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook return account; 71b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook } 72b931f82fa44c2e26e2645c0d5fde9eef3e666efdPaul Westbrook} 73