-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Expand file tree
/
Copy pathChildControllersRegistryTest.java
More file actions
67 lines (56 loc) · 2.47 KB
/
ChildControllersRegistryTest.java
File metadata and controls
67 lines (56 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.reactnativenavigation.viewcontrollers.child;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
import androidx.test.platform.app.InstrumentationRegistry;
import com.reactnativenavigation.BaseAndroidTest;
import com.reactnativenavigation.TestActivity;
import com.reactnativenavigation.mocks.SimpleViewController;
import com.reactnativenavigation.options.Options;
import org.assertj.core.api.Java6Assertions;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
@RunWith(AndroidJUnit4ClassRunner.class)
public class ChildControllersRegistryTest extends BaseAndroidTest {
private ChildControllersRegistry uut;
private ChildController<?> child1;
private ChildController<?> child2;
@Rule
public ActivityScenarioRule<TestActivity> rule = new ActivityScenarioRule<>(TestActivity.class);
@Before
public void beforeEach() {
rule.getScenario().onActivity(activity -> {
uut = new ChildControllersRegistry();
child1 = Mockito.spy(new SimpleViewController(activity, uut, "child1", new Options()));
child2 = Mockito.spy(new SimpleViewController(activity, uut, "child2", new Options()));
});
}
@Test
public void onViewAppeared() {
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> child1.onViewWillAppear());
Mockito.verify(child1, Mockito.times(0)).onViewBroughtToFront();
Java6Assertions.assertThat(uut.size()).isOne();
}
@Test
public void onViewDisappear() {
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
child1.onViewWillAppear();
child2.onViewWillAppear();
});
Java6Assertions.assertThat(uut.size()).isEqualTo(2);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> child2.onViewDisappear());
Mockito.verify(child1, Mockito.times(1)).onViewBroughtToFront();
Java6Assertions.assertThat(uut.size()).isOne();
}
@Test
public void onChildDestroyed() {
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> child1.destroy());
Java6Assertions.assertThat(uut.size()).isEqualTo(0);
}
@Test
public void onViewDisappear_doesNotCrashIfNoViewsHaveAppeared() {
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> uut.onViewDisappear(child1));
}
}