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