Project: Gibberbot
/*
 * Copyright 2011 Google Inc. All Rights Reserved. 
 *  
 * 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 info.guardianproject.otr.app.im.app; 
 
import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import static org.junit.Assert.*; 
 
import com.xtremelabs.robolectric.Robolectric; 
import com.xtremelabs.robolectric.RobolectricTestRunner; 
 
import android.content.ContentUris; 
import android.content.Intent; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
 
import info.guardianproject.otr.app.TestUtils; 
import info.guardianproject.otr.app.im.R; 
import info.guardianproject.otr.app.im.app.AccountActivity; 
import info.guardianproject.otr.app.im.app.ImApp; 
import info.guardianproject.otr.app.im.provider.Imps; 
 
/**
 * @author devrandom 
 */
 
@RunWith(RobolectricTestRunner.class
public class AccountActivityTest { 
    private AccountActivity mActivity; 
    private View mView; 
    private EditText mEditUserAccount; 
    private EditText mEditPass; 
    private Button mBtnSignin; 
 
    @Before 
    public void setUp() throws Exception { 
        mActivity = new AccountActivity(); 
        TestUtils.setUpApplication(mActivity); 
        Intent intent = new Intent(mActivity, AccountActivity.class); 
        intent.setAction(Intent.ACTION_INSERT_OR_EDIT); 
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        intent.setData(ContentUris.withAppendedId(Imps.Provider.CONTENT_URI, 1)); 
        mActivity.setIntent(intent); 
        mActivity.onCreate(null); 
        mEditUserAccount = (EditText) mActivity.findViewById(R.id.edtName); 
        mEditPass = (EditText) mActivity.findViewById(R.id.edtPass); 
        mBtnSignin = (Button) mActivity.findViewById(R.id.btnSignIn); 
    } 
 
    @Test 
    public void testPreconditions() { 
        // Check that the title was set correctly 
        ImApp app = ImApp.getApplication(mActivity); 
        assertEquals(mActivity.getString(R.string.add_account, app.getProvider(1).mFullName), 
                mActivity.getTitle()); 
        mView = mActivity.findViewById(R.id.acct_act_scrollview); 
        assertNotNull(mView); 
    } 
 
    @Test 
    public void testSignIn() { 
        // Enter values, checking that the sigin button was enabled at the right 
        // time 
        assertFalse(mBtnSignin.isEnabled()); 
        mEditUserAccount.setText("[email protected]"); 
        assertFalse(mBtnSignin.isEnabled()); 
        mEditPass.setText("pass"); 
        assertTrue(mBtnSignin.isEnabled()); 
        mActivity.findViewById(R.id.btnSignIn).performClick(); 
 
        // Check that the signin activity was started 
        Intent started = Robolectric.shadowOf(mActivity).getNextStartedActivity(); 
        assertEquals("pass", started.getStringExtra(ImApp.EXTRA_INTENT_PASSWORD)); 
        assertTrue(started.getData().toString().startsWith(Imps.Account.CONTENT_URI.toString())); 
    } 
}