/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.email.activity;
import com.android.email.Account;
import com.android.email.Preferences;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.net.Uri;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
/**
* This is a series of unit tests for the Preferences class.
*
* This is just unit tests of simple statics - the activity is not instantiated
*/
@SmallTest
public class FolderMessageListUnitTests extends AndroidTestCase {
private Preferences mPreferences;
private String mUuid;
private Account mAccount;
@Override
protected void setUp() throws Exception {
super.setUp();
mPreferences = Preferences.getPreferences(getContext());
}
/**
* Delete any dummy accounts we set up for this test
*/
@Override
protected void tearDown() throws Exception {
super.tearDown();
if (mAccount != null && mPreferences != null) {
mAccount.delete(mPreferences);
}
}
/**
* Test of actionHandleAccount() variants. Make sure they generate correct intents and
* then call startActivity() with them.
*/
public void testActionHandleAccount() {
// Create a dummy account
createTestAccount();
// Create a mock context to catch the startActivity calls
MyContext mockContext = new MyContext(getContext());
// First, try with no initial folder
FolderMessageList.actionHandleAccount(mockContext, mAccount);
Intent i = mockContext.startActivityIntent;
assertNotNull(i);
checkIntent(i, null, mAccount, null);
// Next try with initial folder specified
FolderMessageList.actionHandleAccount(mockContext, mAccount, "test-folder-name");
i = mockContext.startActivityIntent;
assertNotNull(i);
checkIntent(i, null, mAccount, "test-folder-name");
}
/**
* Test of actionHandleAccountIntent(). Make sure it generates correct intents.
*/
public void testActionHandleAccountIntent() {
// Create a dummy account
createTestAccount();
// First try with no initial folder
Intent result = FolderMessageList.actionHandleAccountIntent(
getContext(), mAccount, null);
checkIntent(result, null, mAccount, null);
// now try with a specified initial folder
result = FolderMessageList.actionHandleAccountIntent(
getContext(), mAccount, "test-folder-name");
checkIntent(result, null, mAccount, "test-folder-name");
}
/**
* Test of actionHandleAccountUriIntent(). Make sure it generates correct intents.
*/
public void testActionHandleAccountUriIntent() {
// Create a dummy account
createTestAccount();
// First try with no initial folder
Intent result = FolderMessageList.actionHandleAccountUriIntent(
getContext(), mAccount, null);
checkIntent(result, mAccount.getContentUri(), null, null);
// now try with a specified initial folder
result = FolderMessageList.actionHandleAccountUriIntent(
getContext(), mAccount, "test-folder-name");
checkIntent(result, mAccount.getContentUri(), null, "test-folder-name");
}
/**
* Check the values in a generated intent
*/
private void checkIntent(Intent i,
Uri expectData, Account expectAccount, String expectFolder) {
Uri resultUri = i.getData();
assertEquals(expectData, resultUri);
Account resultAccount = (Account) i.getSerializableExtra("account");
assertEquals(expectAccount, resultAccount);
String resultFolder = i.getStringExtra("initialFolder");
assertEquals(expectFolder, resultFolder);
}
/**
* Create a dummy account with minimal fields
*/
private void createTestAccount() {
mAccount = new Account(getContext());
mAccount.save(mPreferences);
mUuid = mAccount.getUuid();
}
/**
* Mock Context so we can catch the startActivity call in actionHandleAccount()
*/
private static class MyContext extends ContextWrapper {
Intent startActivityIntent = null;
public MyContext(Context base) {
super(base);
}
@Override
public void startActivity(Intent i) {
startActivityIntent = i;
}
}
}
|