mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 11:18:21 +00:00
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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user