mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 12:02:16 +02:00
test: regression #8762
This commit is contained in:
parent
2747213b68
commit
388b8e7e8e
@ -25,6 +25,7 @@ import java.util.Optional;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
@ -269,7 +270,8 @@ public class TagsDialog extends AnalyticsDialogFragment {
|
||||
return editText;
|
||||
}
|
||||
|
||||
public void addTag(String tag) {
|
||||
@VisibleForTesting
|
||||
protected void addTag(String tag) {
|
||||
if (!TextUtils.isEmpty(tag)) {
|
||||
String feedbackText;
|
||||
if (mTags.add(tag)) {
|
||||
|
@ -17,6 +17,7 @@ package com.ichi2.anki.dialogs.tags;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.CheckedTextView;
|
||||
import android.widget.RadioGroup;
|
||||
|
||||
import com.afollestad.materialdialogs.DialogAction;
|
||||
@ -37,6 +38,7 @@ import androidx.fragment.app.testing.FragmentScenario;
|
||||
import androidx.lifecycle.Lifecycle;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LifecycleRegistry;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import static com.ichi2.anki.dialogs.tags.TagsDialogListener.*;
|
||||
@ -45,6 +47,7 @@ import static com.ichi2.utils.ListUtil.assertListEquals;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.core.IsNull.notNullValue;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
@ -152,4 +155,47 @@ public class TagsDialogTest {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// regression test #8762
|
||||
@Test
|
||||
public void test_AddNewTag_shouldBeVisibleInRecyclerView() {
|
||||
final DialogType type = DialogType.ADD_TAG;
|
||||
final List<String> allTags = Arrays.asList("a", "b", "d", "e");
|
||||
final List<String> checkedTags = Arrays.asList("a", "b");
|
||||
|
||||
Bundle args = new TagsDialog(whatever())
|
||||
.withArguments(type, checkedTags, allTags)
|
||||
.getArguments();
|
||||
|
||||
final TagsDialogListener mockListener = mock(TagsDialogListener.class);
|
||||
|
||||
TagsDialogFactory factory = new TagsDialogFactory(mockListener);
|
||||
FragmentScenario<TagsDialog> scenario = FragmentScenario.launch(TagsDialog.class, args, R.style.Theme_AppCompat, factory);
|
||||
|
||||
scenario.moveToState(Lifecycle.State.STARTED);
|
||||
|
||||
scenario.onFragment((f) -> {
|
||||
MaterialDialog dialog = (MaterialDialog) f.getDialog();
|
||||
assertThat(dialog, notNullValue());
|
||||
|
||||
final View body = dialog.getCustomView();
|
||||
RecyclerView recycler = body.findViewById(R.id.tags_dialog_tags_list);
|
||||
|
||||
final String NEW_TAG = "c";
|
||||
|
||||
f.addTag(NEW_TAG);
|
||||
|
||||
// workaround robolectric recyclerView issue
|
||||
// update recycler
|
||||
recycler.measure(0, 0);
|
||||
recycler.layout(0, 0, 100, 1000);
|
||||
|
||||
TagsArrayAdapter.ViewHolder vh = (TagsArrayAdapter.ViewHolder) recycler.findViewHolderForAdapterPosition(2);
|
||||
CheckedTextView itemView = (CheckedTextView) vh.itemView;
|
||||
|
||||
assertEquals(NEW_TAG, itemView.getText());
|
||||
assertTrue(itemView.isChecked());
|
||||
});
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user