Add unit testing to workkUtilityView

Testing inflate and visibility states (with both flag states)

bug: 361589193
Test: manually screenshot: https://screenshot.googleplex.com/45HDsyfQfNbgjiE
Flag: com.android.launcher3.work_scheduler_in_work_profile
Change-Id: I57cff03fe3b362e304f52984a2699f8d5b6e653e
This commit is contained in:
Brandon Dayauon
2024-11-25 13:51:33 -08:00
parent c4a90de0e9
commit fcb892328b
2 changed files with 96 additions and 1 deletions

View File

@@ -33,6 +33,7 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.core.graphics.Insets;
import androidx.core.view.WindowInsetsCompat;
@@ -126,6 +127,7 @@ public class WorkUtilityView extends LinearLayout implements Insettable,
setInsets(mActivityContext.getDeviceProfile().getInsets());
updateStringFromCache();
mSchedulerButton.setVisibility(GONE);
mSchedulerButton.setOnClickListener(null);
if (shouldUseScheduler()) {
mSchedulerButton.setVisibility(VISIBLE);
mSchedulerButton.setOnClickListener(view ->
@@ -393,7 +395,13 @@ public class WorkUtilityView extends LinearLayout implements Insettable,
}
}
private boolean shouldUseScheduler() {
@VisibleForTesting
boolean shouldUseScheduler() {
return Flags.workSchedulerInWorkProfile() && !mWorkSchedulerIntentAction.isEmpty();
}
@VisibleForTesting
ImageButton getSchedulerButton() {
return mSchedulerButton;
}
}

View File

@@ -0,0 +1,87 @@
/*
* Copyright (C) 2024 The Android Open Source Project
*
* 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 com.android.launcher3.allapps;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.android.launcher3.Flags.FLAG_WORK_SCHEDULER_IN_WORK_PROFILE;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import android.content.Context;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.view.ViewGroup;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import com.android.launcher3.util.ActivityContextWrapper;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
@SmallTest
@RunWith(AndroidJUnit4.class)
public class WorkUtilityViewTest {
@Rule
public final SetFlagsRule mSetFlagsRule =
new SetFlagsRule(SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT);
private WorkUtilityView mVut;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
Context context = new ActivityContextWrapper(getApplicationContext(),
com.android.launcher3.R.style.DynamicColorsBaseLauncherTheme);
mVut = (WorkUtilityView) ViewGroup.inflate(context,
com.android.launcher3.R.layout.work_mode_utility_view, null);
}
@Test
@EnableFlags(FLAG_WORK_SCHEDULER_IN_WORK_PROFILE)
public void testInflateFlagOn_visible() {
WorkUtilityView workUtilityView = Mockito.spy(mVut);
doReturn(true).when(workUtilityView).shouldUseScheduler();
workUtilityView.onFinishInflate();
assertThat(workUtilityView.getSchedulerButton().getVisibility()).isEqualTo(VISIBLE);
assertThat(workUtilityView.getSchedulerButton().hasOnClickListeners()).isEqualTo(true);
}
@Test
@DisableFlags(FLAG_WORK_SCHEDULER_IN_WORK_PROFILE)
public void testInflateFlagOff_gone() {
mVut.onFinishInflate();
assertThat(mVut.getSchedulerButton().getVisibility()).isEqualTo(GONE);
assertThat(mVut.getSchedulerButton().hasOnClickListeners()).isEqualTo(false);
}
}