parent fragment and control the dialog. Keep the dialog and the locale list after rotation Bug: 279527362 Change-Id: I349fd9d0fea5b43a8bbb2a23fa60fc4c5436c5cf Test: make RunSettingsRoboTests -j128 ROBOTEST_FILTER=LocaleListEditorTest Test: atest LocaleDialogFragmentTest
123 lines
4.5 KiB
Java
123 lines
4.5 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.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(ResourcesUtils.getResourcesString(
|
|
mContext, "button_label_confirmation_of_system_locale_change"),
|
|
dialogContent.mPositiveButton);
|
|
assertEquals(ResourcesUtils.getResourcesString(mContext, "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(ResourcesUtils.getResourcesString(mContext, "okay"),
|
|
dialogContent.mPositiveButton);
|
|
assertTrue(dialogContent.mNegativeButton.isEmpty());
|
|
}
|
|
|
|
@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);
|
|
}
|
|
}
|