1150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal/*
2150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal * Copyright (C) 2018 The Android Open Source Project
3150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal *
4150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal * Licensed under the Apache License, Version 2.0 (the "License");
5150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal * you may not use this file except in compliance with the License.
6150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal * You may obtain a copy of the License at
7150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal *
8150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal *      http://www.apache.org/licenses/LICENSE-2.0
9150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal *
10150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal * Unless required by applicable law or agreed to in writing, software
11150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal * distributed under the License is distributed on an "AS IS" BASIS,
12150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal * See the License for the specific language governing permissions and
14150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal * limitations under the License.
15150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal */
16150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
17150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalpackage com.android.car.setupwizardlib;
18150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
19150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport static com.google.common.truth.Truth.assertThat;
20150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
216fd8a4056d8138b7040fe23e1cf1d4772681fbbaRoshan Agrawalimport android.app.Activity;
22150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport android.os.Bundle;
236fd8a4056d8138b7040fe23e1cf1d4772681fbbaRoshan Agrawalimport android.support.v4.app.Fragment;
24150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport android.view.View;
25150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport android.widget.Button;
26150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport android.widget.ImageView;
27150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
28150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport com.android.car.setupwizardlib.robolectric.BaseRobolectricTest;
29150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport com.android.car.setupwizardlib.robolectric.CarSetupWizardLibRobolectricTestRunner;
30150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport com.android.car.setupwizardlib.robolectric.TestHelper;
31150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
32150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport org.junit.Before;
33150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport org.junit.Test;
34150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport org.junit.runner.RunWith;
35150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport org.mockito.Mockito;
36150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalimport org.robolectric.Robolectric;
37150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
38150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal/**
39150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal * Unit tests for the {@link BaseActivity}.
40150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal */
41150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal@RunWith(CarSetupWizardLibRobolectricTestRunner.class)
42150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawalpublic class BaseActivityTest extends BaseRobolectricTest {
43150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    BaseActivity mBaseActivity;
44150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    CarSetupWizardLayout mCarSetupWizardLayout;
45150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
46150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Before
47150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void setupBaseActivityAndLayout() {
48150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity = (BaseActivity) Robolectric.buildActivity(BaseActivity.class).create().get();
49150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mCarSetupWizardLayout = mBaseActivity.getCarSetupWizardLayout();
50150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
51150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
52150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
53150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that the BaseActivity's content view is set to be a CarSetupWizardLayout
54150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
55150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
56150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testContentViewIsCarSetupWizardLayout() {
57150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        View contentView = mBaseActivity.findViewById(R.id.car_setup_wizard_layout);
58150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(contentView).isNotNull();
59150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(contentView instanceof CarSetupWizardLayout).isTrue();
60150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
61150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
62150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    private BaseActivity createSpyBaseActivity() {
63150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        BaseActivity spyBaseActivity = Mockito.spy(
64150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                (BaseActivity) Robolectric.buildActivity(BaseActivity.class).get());
65150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        spyBaseActivity.onCreate(null);
66150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
67150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        return spyBaseActivity;
68150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
69150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
70150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
71150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that the BaseActivity sets the back button listener to call
72150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * {@link BaseActivity#handleBackButton()} when created.
73150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
74150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
75150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testBackButtonListenerIsDefault() {
76150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        BaseActivity spyBaseActivity = createSpyBaseActivity();
77150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
78150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        ImageView backButton = (ImageView) spyBaseActivity.findViewById(
79150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                R.id.back_button);
80150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        backButton.performClick();
81150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
82150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Mockito.verify(spyBaseActivity).handleBackButton();
83150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
84150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
85150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
86150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that the BaseActivity sets the secondary toolbar button listener to the default when
87150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * created.
88150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
89150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
90150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSecondaryToolbarButtonListenerIsDefault() {
91150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        BaseActivity spyBaseActivity = createSpyBaseActivity();
92150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
93150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Button secondaryToolBarButton = (Button) spyBaseActivity.findViewById(
94150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                R.id.secondary_toolbar_button);
95150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        secondaryToolBarButton.performClick();
96150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
976fd8a4056d8138b7040fe23e1cf1d4772681fbbaRoshan Agrawal        Mockito.verify(spyBaseActivity).nextAction(Activity.RESULT_OK);
98150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
99150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
100150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
101150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
102150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that the BaseActivity sets the primary toolbar button listener to the default when
103150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * created.
104150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
105150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
106150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testPrimaryToolbarButtonListenerIsDefault() {
107150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        BaseActivity spyBaseActivity = createSpyBaseActivity();
108150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
109150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Button primaryToolBarButton = (Button) spyBaseActivity.findViewById(
110150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                R.id.primary_toolbar_button);
111150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        primaryToolBarButton.performClick();
112150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
1136fd8a4056d8138b7040fe23e1cf1d4772681fbbaRoshan Agrawal        Mockito.verify(spyBaseActivity).nextAction(Activity.RESULT_OK);
114150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
115150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
116150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    private BaseActivity getStartedBaseActivity() {
117150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        return (BaseActivity) Robolectric.buildActivity(BaseActivity.class).create().start().get();
118150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
119150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
120150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    private BaseActivity getSavedInstanceStateBaseActivity() {
121150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        return (BaseActivity) Robolectric.buildActivity(
122150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                BaseActivity.class).create().saveInstanceState(new Bundle()).get();
123150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
124150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
125150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
126150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that fragment commits are allowed after {@link BaseActivity#onStart()} is called.
127150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
128150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
129150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testFragmentCommitsAllowedAfterOnStart() {
130150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(getStartedBaseActivity().getAllowFragmentCommits()).isTrue();
131150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
132150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
133150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
134150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that fragment commits are not allowed after {@link BaseActivity#onSaveInstanceState }
135150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * is called.
136150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
137150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
138150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testFragmentCommitsNotAllowedAfterOnSavedInstanceState() {
139150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(getSavedInstanceStateBaseActivity().getAllowFragmentCommits()).isFalse();
140150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
141150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
142150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
143150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
144150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setContentFragment} sets the content fragment and calls the
145150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * expected methods when fragment commits are allowed.
146150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
147150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
148150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetContentFragmentWhenFragmentCommitsAllowed() {
149150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        BaseActivity spyBaseActivity = Mockito.spy(getStartedBaseActivity());
150150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
151150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Fragment fragment = new Fragment();
152150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        spyBaseActivity.setContentFragment(fragment);
153150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
154150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(spyBaseActivity.getContentFragment()).isEqualTo(fragment);
155150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(spyBaseActivity.getSupportFragmentManager().getBackStackEntryCount()).isEqualTo(
156150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                0);
157150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        // Verify that onContentFragmentSet is called with the test fragment
158150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Mockito.verify(spyBaseActivity).onContentFragmentSet(fragment);
159150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
160150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
161150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
162150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setContentFragment} does nothing when fragment commits are not
163150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * allowed.
164150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
165150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
166150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetContentFragmentWhenFragmentCommitsNotAllowed() {
167150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        BaseActivity spyBaseActivity = Mockito.spy(getSavedInstanceStateBaseActivity());
168150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
169150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Fragment fragment = new Fragment();
170150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        spyBaseActivity.setContentFragment(fragment);
171150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
172150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(spyBaseActivity.getContentFragment()).isEqualTo(null);
173150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(spyBaseActivity.getSupportFragmentManager().getBackStackEntryCount()).isEqualTo(
174150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                0);
175150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        // Verify that onContentFragmentSet is not called
176150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Mockito.verify(spyBaseActivity, Mockito.times(0)).onContentFragmentSet(fragment);
177150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
178150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
179150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
180150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setContentFragmentWithBackstack)} sets the content fragment,
181150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * adds it to the fragment backstack, and calls the expected methods when fragment commits
182150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * are allowed.
183150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
184150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
185150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetContentFragmentWithBackstackWhenFragmentCommitsAllowed() {
186150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        BaseActivity spyBaseActivity = Mockito.spy(getStartedBaseActivity());
187150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
188150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Fragment fragment = new Fragment();
189150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        spyBaseActivity.setContentFragmentWithBackstack(fragment);
190150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
191150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(spyBaseActivity.getContentFragment()).isEqualTo(fragment);
192150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(spyBaseActivity.getSupportFragmentManager().getBackStackEntryCount()).isEqualTo(
193150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                1);
194150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        // Verify that onContentFragmentSet is called with the test fragment
195150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Mockito.verify(spyBaseActivity).onContentFragmentSet(fragment);
196150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
197150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
198150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
199150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setContentFragmentWithBackstack)} does nothing when fragment
200150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * commits are not allowed.
201150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
202150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
203150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetContentFragmentWithBackstackWhenFragmentCommitsNotAllowed() {
204150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        BaseActivity spyBaseActivity = Mockito.spy(getSavedInstanceStateBaseActivity());
205150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
206150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Fragment fragment = new Fragment();
207150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        spyBaseActivity.setContentFragment(fragment);
208150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
209150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(spyBaseActivity.getContentFragment()).isEqualTo(null);
210150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(spyBaseActivity.getSupportFragmentManager().getBackStackEntryCount()).isEqualTo(
211150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                0);
212150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        // Verify that onContentFragmentSet is not called
213150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Mockito.verify(spyBaseActivity, Mockito.times(0)).onContentFragmentSet(fragment);
214150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
215150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
216150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
217150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#popBackStackImmediate()} returns false when no fragment is
218150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * added to the backstack.
219150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
220150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
221150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testPopBackStackImmediateWithEmptyStack() {
222150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(mBaseActivity.popBackStackImmediate()).isEqualTo(false);
223150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
224150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
225150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
226150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#popBackStackImmediate()} returns true when a fragment is
227150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * added to the backstack and that the fragment is popped off of the backstack.
228150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
229150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
230150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testPopBackStackImmediateWithFragmentInStack() {
231150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Fragment fragment = new Fragment();
232150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setContentFragmentWithBackstack(fragment);
233150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(mBaseActivity.popBackStackImmediate()).isEqualTo(true);
234150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
235150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(mBaseActivity.getContentFragment()).isNull();
236150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
237150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
238150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
239150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#getContentFragment()} returns the content fragment.
240150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
241150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
242150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testGetContentFragment() {
243150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Fragment fragment = new Fragment();
244150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setContentFragment(fragment);
245150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
246150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(mBaseActivity.getContentFragment()).isEqualTo(
247150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                mBaseActivity.getSupportFragmentManager().findFragmentByTag(
248150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                        mBaseActivity.CONTENT_FRAGMENT_TAG));
249150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
250150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
251150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
252150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setContentLayout} adds the specified layout to the
253150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * BaseActivity.
254150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
255150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
256150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetContentLayout() {
257150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setContentLayout(R.layout.base_activity_test_layout);
258150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        View contentLayout = mBaseActivity.findViewById(R.id.content_layout);
259150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(contentLayout).isNotNull();
260150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
261150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
262150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
263150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#finishAction()} results in a call to
264150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * {@link BaseActivity#finish}.
265150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
266150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
267150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testFinishAction() {
268150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        BaseActivity spyBaseActivity = Mockito.spy(mBaseActivity);
269150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        spyBaseActivity.finishAction();
270150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
271150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Mockito.verify(spyBaseActivity).finish();
272150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
273150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
274150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
275150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#finishAction(int)} )} results in a call to
276150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * {@link BaseActivity#nextAction} and {@link BaseActivity#finish}.
277150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
278150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
279150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testFinishActionWithResultCode() {
280150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        BaseActivity spyBaseActivity = Mockito.spy(mBaseActivity);
281150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        spyBaseActivity.finishAction(BaseActivity.RESULT_OK);
282150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
283150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Mockito.verify(spyBaseActivity).nextAction(BaseActivity.RESULT_OK, null);
284150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Mockito.verify(spyBaseActivity).finish();
285150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
286150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
287150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
288150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setBackButtonVisible} sets the back button visible/not visible.
289150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
290150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
291150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetBackButtonVisibleTrue() {
292150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setBackButtonVisible(true);
293150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewVisible(mCarSetupWizardLayout.getBackButton());
294150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
295150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
296150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
297150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setBackButtonVisible} sets the back button visible/not visible.
298150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
299150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
300150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetBackButtonVisibleFalse() {
301150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setBackButtonVisible(false);
302150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewNotVisible(mCarSetupWizardLayout.getBackButton());
303150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
304150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
305150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
306150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setToolbarTitleVisible} sets the toolbar title visible/not
307150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * visible.
308150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
309150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
310150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetToolbarTitleVisibleTrue() {
311150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setToolbarTitleVisible(true);
312150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewVisible(mCarSetupWizardLayout.getToolbarTitle());
313150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
314150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
315150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
316150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setToolbarTitleVisible} sets the toolbar button visible/not
317150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * visible.
318150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
319150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
320150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetToolbarTitleVisibleFalse() {
321150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setToolbarTitleVisible(false);
322150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewNotVisible(mCarSetupWizardLayout.getToolbarTitle());
323150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
324150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
325150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
326150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setToolbarTitleText(String)} sets the toolbar title text.
327150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
328150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
329150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetToolbarTitleText() {
330150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setToolbarTitleText("title text");
331150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertTextEqual(mCarSetupWizardLayout.getToolbarTitle(), "title text");
332150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
333150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
334150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
335150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setPrimaryToolbarButtonVisible} sets the primary toolbar button
336150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * visible/not visible.
337150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
338150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
339150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetPrimaryToolbarButtonVisibleTrue() {
340150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setPrimaryToolbarButtonVisible(true);
341150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewVisible(mCarSetupWizardLayout.getPrimaryToolbarButton());
342150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
343150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
344150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
345150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setPrimaryToolbarButtonVisible} sets the primary toolbar button
346150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * visible/not visible.
347150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
348150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
349150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetPrimaryToolbarButtonVisibleFalse() {
350150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setPrimaryToolbarButtonVisible(false);
351150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewNotVisible(mCarSetupWizardLayout.getPrimaryToolbarButton());
352150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
353150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
354150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
355150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setPrimaryToolbarButtonEnabled} sets the primary toolbar button
356150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * visible/not visible.
357150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
358150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
359150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetPrimaryToolbarButtonEnabledTrue() {
360150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setPrimaryToolbarButtonEnabled(true);
361150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewEnabled(mCarSetupWizardLayout.getPrimaryToolbarButton());
362150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
363150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
364150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
365150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setPrimaryToolbarButtonEnabled} sets the primary toolbar button
366150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * visible/not visible.
367150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
368150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
369150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetPrimaryToolbarButtonEnabledFalse() {
370150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setPrimaryToolbarButtonEnabled(false);
371150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewNotEnabled(mCarSetupWizardLayout.getPrimaryToolbarButton());
372150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
373150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
374150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
375150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setPrimaryToolbarButtonText(String)} sets the primary
376150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * toolbar title text.
377150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
378150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
379150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetPrimaryToolbarButtonText() {
380150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setPrimaryToolbarButtonText("button text");
381150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertTextEqual(mCarSetupWizardLayout.getPrimaryToolbarButton(), "button text");
382150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
383150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
384150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
385150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setPrimaryToolbarButtonFlat(boolean)} sets the primary toolbar
386150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * button flat/not flat.
387150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
388150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
389150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetPrimaryToolbarButtonFlatTrue() {
390150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setPrimaryToolbarButtonFlat(true);
391150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(mCarSetupWizardLayout.getPrimaryToolbarButtonFlat()).isTrue();
392150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
393150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
394150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
395150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setPrimaryToolbarButtonFlat(boolean)} sets the primary toolbar
396150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * button flat/not flat.
397150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
398150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
399150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetPrimaryToolbarButtonFlatFalse() {
400150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setPrimaryToolbarButtonFlat(false);
401150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        assertThat(mCarSetupWizardLayout.getPrimaryToolbarButtonFlat()).isFalse();
402150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
403150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
404150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
405150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setPrimaryToolbarButtonOnClickListener} sets the primary
406150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * toolbar button's click listener.
407150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
408150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
409150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetPrimaryToolbarButtonOnClickListener() {
410150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        View.OnClickListener spyListener = TestHelper.createSpyListener();
411150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
412150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setPrimaryToolbarButtonOnClickListener(spyListener);
413150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.getCarSetupWizardLayout().getPrimaryToolbarButton().performClick();
414150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Mockito.verify(spyListener).onClick(Mockito.any());
415150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
416150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
417150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
418150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setSecondaryToolbarButtonVisible} sets the secondary toolbar
419150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * button visible/not visible.
420150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
421150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
422150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetSecondaryToolbarButtonVisibleTrue() {
423150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setSecondaryToolbarButtonVisible(true);
424150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewVisible(mCarSetupWizardLayout.getSecondaryToolbarButton());
425150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
426150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
427150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
428150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setSecondaryToolbarButtonVisible} sets the secondary toolbar
429150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * button visible/not visible.
430150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
431150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
432150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetSecondaryToolbarButtonVisibleFalse() {
433150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setSecondaryToolbarButtonVisible(false);
434150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewNotVisible(mCarSetupWizardLayout.getSecondaryToolbarButton());
435150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
436150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
437150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
438150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setSecondaryToolbarButtonEnabled} sets the secondary toolbar
439150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * button visible/not visible.
440150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
441150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
442150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetSecondaryToolbarButtonEnabledTrue() {
443150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setSecondaryToolbarButtonEnabled(true);
444150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewEnabled(mCarSetupWizardLayout.getSecondaryToolbarButton());
445150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
446150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
447150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
448150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setSecondaryToolbarButtonEnabled} sets the secondary toolbar
449150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * button visible/not visible.
450150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
451150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
452150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetSecondaryToolbarButtonEnabledFalse() {
453150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setSecondaryToolbarButtonEnabled(false);
454150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewNotEnabled(mCarSetupWizardLayout.getSecondaryToolbarButton());
455150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
456150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
457150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
458150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setSecondaryToolbarButtonText(String)} sets the secondary
459150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * toolbar title text.
460150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
461150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
462150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetSecondaryToolbarButtonText() {
463150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setSecondaryToolbarButtonText("button text");
464150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertTextEqual(mCarSetupWizardLayout.getSecondaryToolbarButton(),
465150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal                "button text");
466150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
467150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
468150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
469150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setSecondaryToolbarButtonOnClickListener} sets the secondary
470150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * toolbar button's click listener.
471150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
472150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
473150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetSecondaryToolbarButtonOnClickListener() {
474150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        View.OnClickListener spyListener = TestHelper.createSpyListener();
475150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
476150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setSecondaryToolbarButtonOnClickListener(spyListener);
477150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.getCarSetupWizardLayout().getSecondaryToolbarButton().performClick();
478150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        Mockito.verify(spyListener).onClick(Mockito.any());
479150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
480150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
481150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
482150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setProgressBarVisible} sets the progressbar visible/not
483150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * visible.
484150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
485150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
486150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetProgressBarVisibleTrue() {
487150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setProgressBarVisible(true);
488150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewVisible(mCarSetupWizardLayout.getProgressBar());
489150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
490150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal
491150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    /**
492150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * Test that {@link BaseActivity#setProgressBarVisible} sets the progressbar visible/not
493150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     * visible.
494150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal     */
495150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    @Test
496150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    public void testSetProgressBarVisibleFalse() {
497150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        mBaseActivity.setProgressBarVisible(false);
498150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal        TestHelper.assertViewNotVisible(mCarSetupWizardLayout.getProgressBar());
499150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal    }
500150f83de6dccce7d3f4eb2904c1198729232ef58Roshan Agrawal}
501