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