1/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * 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, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
15 */
16
17package com.android.email;
18
19import android.content.Context;
20import android.test.ProviderTestCase2;
21import android.test.suitebuilder.annotation.Suppress;
22
23import com.android.email.provider.ContentCache;
24import com.android.email.provider.EmailProvider;
25import com.android.emailcommon.provider.EmailContent;
26import com.android.emailcommon.provider.Mailbox;
27
28import java.util.Locale;
29
30/**
31 * Tests of the Controller class that depend on the underlying provider.
32 *
33 * NOTE:  It would probably make sense to rewrite this using a MockProvider, instead of the
34 * ProviderTestCase (which is a real provider running on a temp database).  This would be more of
35 * a true "unit test".
36 *
37 * You can run this entire test case with:
38 *   runtest -c com.android.email.ControllerProviderOpsTests email
39 */
40@Suppress
41public class ControllerProviderOpsTests extends ProviderTestCase2<EmailProvider> {
42    private Context mProviderContext;
43    private Context mContext;
44
45    public ControllerProviderOpsTests() {
46        super(EmailProvider.class, EmailContent.AUTHORITY);
47    }
48
49    @Override
50    public void setUp() throws Exception {
51        super.setUp();
52        mProviderContext = getMockContext();
53        mContext = getContext();
54        // Invalidate all caches, since we reset the database for each test
55        ContentCache.invalidateAllCaches();
56    }
57
58    @Override
59    public void tearDown() throws Exception {
60        super.tearDown();
61    }
62
63    /**
64     * These are strings that should not change per locale.
65     */
66    public void testGetMailboxServerName() {
67        try {
68            Mailbox.getSystemMailboxName(mContext, -1);
69            fail("Mailbox.getSystemMailboxName(mContext, -1) succeeded without an exception");
70        } catch (IllegalArgumentException e) {
71            // we expect an exception, so do nothing
72        }
73
74        assertEquals("Inbox", Mailbox.getSystemMailboxName(mContext, Mailbox.TYPE_INBOX));
75        assertEquals("Outbox", Mailbox.getSystemMailboxName(mContext, Mailbox.TYPE_OUTBOX));
76        assertEquals("Trash", Mailbox.getSystemMailboxName(mContext, Mailbox.TYPE_TRASH));
77        assertEquals("Sent", Mailbox.getSystemMailboxName(mContext, Mailbox.TYPE_SENT));
78        assertEquals("Junk", Mailbox.getSystemMailboxName(mContext, Mailbox.TYPE_JUNK));
79
80        // Now try again with translation
81        Locale savedLocale = Locale.getDefault();
82        Locale.setDefault(Locale.FRANCE);
83        assertEquals("Inbox", Mailbox.getSystemMailboxName(mContext, Mailbox.TYPE_INBOX));
84        assertEquals("Outbox", Mailbox.getSystemMailboxName(mContext, Mailbox.TYPE_OUTBOX));
85        assertEquals("Trash", Mailbox.getSystemMailboxName(mContext, Mailbox.TYPE_TRASH));
86        assertEquals("Sent", Mailbox.getSystemMailboxName(mContext, Mailbox.TYPE_SENT));
87        assertEquals("Junk", Mailbox.getSystemMailboxName(mContext, Mailbox.TYPE_JUNK));
88        Locale.setDefault(savedLocale);
89    }
90
91    /**
92     * TODO: releasing associated data (e.g. attachments, embedded images)
93     */
94}
95