mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 20:03:05 +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.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.appcompat.widget.SearchView;
|
import androidx.appcompat.widget.SearchView;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
@ -269,7 +270,8 @@ public class TagsDialog extends AnalyticsDialogFragment {
|
|||||||
return editText;
|
return editText;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addTag(String tag) {
|
@VisibleForTesting
|
||||||
|
protected void addTag(String tag) {
|
||||||
if (!TextUtils.isEmpty(tag)) {
|
if (!TextUtils.isEmpty(tag)) {
|
||||||
String feedbackText;
|
String feedbackText;
|
||||||
if (mTags.add(tag)) {
|
if (mTags.add(tag)) {
|
||||||
|
@ -17,6 +17,7 @@ package com.ichi2.anki.dialogs.tags;
|
|||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.CheckedTextView;
|
||||||
import android.widget.RadioGroup;
|
import android.widget.RadioGroup;
|
||||||
|
|
||||||
import com.afollestad.materialdialogs.DialogAction;
|
import com.afollestad.materialdialogs.DialogAction;
|
||||||
@ -37,6 +38,7 @@ import androidx.fragment.app.testing.FragmentScenario;
|
|||||||
import androidx.lifecycle.Lifecycle;
|
import androidx.lifecycle.Lifecycle;
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
import androidx.lifecycle.LifecycleOwner;
|
||||||
import androidx.lifecycle.LifecycleRegistry;
|
import androidx.lifecycle.LifecycleRegistry;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
import static com.ichi2.anki.dialogs.tags.TagsDialogListener.*;
|
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.MatcherAssert.assertThat;
|
||||||
import static org.hamcrest.core.IsNull.notNullValue;
|
import static org.hamcrest.core.IsNull.notNullValue;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
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