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