0
0
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:
Tarekk Mohamed Abdalla 2021-05-03 21:36:53 +02:00 committed by Mike Hardy
parent 2747213b68
commit 388b8e7e8e
2 changed files with 49 additions and 1 deletions

View File

@ -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)) {

View File

@ -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());
});
}
}