Files
app_Settings/tests/unit/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java
Zoey Chen 09841d6bb4 [Settings] Apply new style to dialog
Bug: 394542699
Test: manual
Test: atest SettingsRoboTests:com.android.settings.localepicker.LocaleListEditorTest
Flag: EXEMPT refactor
Change-Id: Idfed52722d1113e432742342fd8a56958e84406e
2025-02-12 12:59:54 +00:00

121 lines
4.4 KiB
Java

/*
* Copyright (C) 2023 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.settings.localepicker;
import static com.android.settings.localepicker.LocaleDialogFragment.ARG_DIALOG_TYPE;
import static com.android.settings.localepicker.LocaleDialogFragment.ARG_TARGET_LOCALE;
import static com.android.settings.localepicker.LocaleDialogFragment.DIALOG_CONFIRM_SYSTEM_DEFAULT;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider;
import com.android.internal.app.LocaleStore;
import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.ResourcesUtils;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import java.util.Locale;
@UiThreadTest
public class LocaleDialogFragmentTest {
@Rule
public final MockitoRule mockito = MockitoJUnit.rule();
private Context mContext;
private LocaleListEditor mLocaleListEditor;
private LocaleDialogFragment mDialogFragment;
private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() throws Exception {
mContext = ApplicationProvider.getApplicationContext();
mDialogFragment = new LocaleDialogFragment();
mLocaleListEditor = spy(new LocaleListEditor());
mFeatureFactory = FakeFeatureFactory.setupForTest();
}
private void setArgument(int type) {
LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(Locale.ENGLISH);
Bundle args = new Bundle();
args.putInt(ARG_DIALOG_TYPE, type);
args.putSerializable(ARG_TARGET_LOCALE, localeInfo);
mDialogFragment.setArguments(args);
}
@Test
public void getDialogContent_confirmSystemDefault_has2ButtonText() {
setArgument(DIALOG_CONFIRM_SYSTEM_DEFAULT);
LocaleDialogFragment.LocaleDialogController controller =
mDialogFragment.getLocaleDialogController(mContext, mDialogFragment,
mLocaleListEditor);
LocaleDialogFragment.LocaleDialogController.DialogContent dialogContent =
controller.getDialogContent();
assertEquals(R.string.button_label_confirmation_of_system_locale_change,
dialogContent.mPositiveButton);
assertEquals(R.string.cancel, dialogContent.mNegativeButton);
}
@Test
public void getDialogContent_unavailableLocale_has1ButtonText() {
setArgument(LocaleDialogFragment.DIALOG_NOT_AVAILABLE_LOCALE);
LocaleDialogFragment.LocaleDialogController controller =
mDialogFragment.getLocaleDialogController(mContext, mDialogFragment,
mLocaleListEditor);
LocaleDialogFragment.LocaleDialogController.DialogContent dialogContent =
controller.getDialogContent();
assertEquals(R.string.okay, dialogContent.mPositiveButton);
assertTrue(dialogContent.mNegativeButton == 0);
}
@Test
public void getMetricsCategory_systemLocaleChange() {
setArgument(DIALOG_CONFIRM_SYSTEM_DEFAULT);
int result = mDialogFragment.getMetricsCategory();
assertEquals(SettingsEnums.DIALOG_SYSTEM_LOCALE_CHANGE, result);
}
@Test
public void getMetricsCategory_unavailableLocale() {
setArgument(LocaleDialogFragment.DIALOG_NOT_AVAILABLE_LOCALE);
int result = mDialogFragment.getMetricsCategory();
assertEquals(SettingsEnums.DIALOG_SYSTEM_LOCALE_UNAVAILABLE, result);
}
}