1206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki/*
2206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * Copyright (C) 2010 The Android Open Source Project
3206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki *
4206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * Licensed under the Apache License, Version 2.0 (the "License");
5206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * you may not use this file except in compliance with the License.
6206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * You may obtain a copy of the License at
7206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki *
8206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki *      http://www.apache.org/licenses/LICENSE-2.0
9206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki *
10206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * Unless required by applicable law or agreed to in writing, software
11206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * distributed under the License is distributed on an "AS IS" BASIS,
12206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * See the License for the specific language governing permissions and
14206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * limitations under the License.
15206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki */
16206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
17206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukipackage com.android.email.activity;
18206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
19206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukiimport com.android.email.DBTestHelper;
20206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukiimport com.android.email.TestUtils;
21206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukiimport com.android.email.provider.ProviderTestUtils;
22a7bc0319a75184ad706bb35c049af107ac3688e6Marc Blankimport com.android.emailcommon.provider.EmailContent.Message;
23206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
24206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukiimport android.content.Context;
25206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukiimport android.content.Intent;
26206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukiimport android.net.Uri;
27206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukiimport android.test.ActivityInstrumentationTestCase2;
28206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
29206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki/**
3094331c96d9397ec451ae3a0a9f825cc4aca2b9d1Makoto Onuki * Test case for {@link MessageFileView}.
31206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki *
32206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * TODO Add more tests.  Any good way to test fragment??
33206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki */
34206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukipublic class MessageFileViewTest extends ActivityInstrumentationTestCase2<MessageFileView> {
35206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
36206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    private static int TIMEOUT = 10; // in seconds
37206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
38206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    private Context mProviderContext;
39206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
40206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    public MessageFileViewTest() {
41206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        super(MessageFileView.class);
42206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    }
43206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
44206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    @Override
45206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    protected void setUp() throws Exception {
46206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        super.setUp();
47206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        mProviderContext = DBTestHelper.ProviderContextSetupHelper.getProviderContext(
48d1ee5b8fa5fe92df1ded5953a9e3f001b38a1ac7Makoto Onuki                getInstrumentation().getTargetContext());
49206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    }
50206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
51206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    private void setUpIntent(Uri uri) {
5294331c96d9397ec451ae3a0a9f825cc4aca2b9d1Makoto Onuki        final Intent i = new Intent(getInstrumentation().getTargetContext(), MessageFileView.class);
53206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        i.setData(uri);
54206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        setActivityIntent(i);
55206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    }
56206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
57206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    private  Uri createEmlFile() throws Exception {
58206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        // Create a simple message
59206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        Message msg = new Message();
60206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        String text = "This is some text";
61206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        msg.mText = text;
62206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        String sender = "sender@host.com";
63206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        msg.mFrom = sender;
64206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        // Save this away
65206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        msg.save(mProviderContext);
66206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
67206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        return ProviderTestUtils.createTempEmlFile(mProviderContext, msg,
68206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki                getInstrumentation().getContext().getFilesDir());
69206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    }
70206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
71206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    /**
72206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki     * Set up an EML file, and open it in the activity.
73206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki     *
74206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki     * Expected: Message opens.
75206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki     */
76206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    public void testOpenMessage() throws Exception {
77206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        setUpIntent(createEmlFile());
78206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
79206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        final MessageFileView activity = getActivity();
80206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
81206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        TestUtils.waitUntil(new TestUtils.Condition() {
82206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki            @Override
83206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki            public boolean isMet() {
84206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki                MessageFileViewFragment f = activity.getFragment();
85206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki                return f != null && f.isMessageLoadedForTest();
86206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki            }
87206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        }, TIMEOUT);
88206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
89206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki        // TODO Check UI elements, once our UI is settled.
90206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki    }
91206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki
92206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki}
93