Skip to content

Commit 0da3d1b

Browse files
committed
Extend InjectMenu tests to ensure that MenuInflater has been called
1 parent 39ed42f commit 0da3d1b

2 files changed

Lines changed: 49 additions & 0 deletions

File tree

‎AndroidAnnotations/androidannotations-core/androidannotations-test/src/main/java/org/androidannotations/test/menu/InjectMenuActivity.java‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,16 @@
1717

1818
import org.androidannotations.annotations.EActivity;
1919
import org.androidannotations.annotations.InjectMenu;
20+
import org.androidannotations.annotations.OptionsMenu;
21+
import org.androidannotations.test.R;
2022

2123
import android.app.Activity;
24+
import android.content.Context;
2225
import android.view.Menu;
26+
import android.view.MenuInflater;
2327

2428
@EActivity
29+
@OptionsMenu(R.menu.my_menu)
2530
public class InjectMenuActivity extends Activity {
2631

2732
@InjectMenu
@@ -30,13 +35,31 @@ public class InjectMenuActivity extends Activity {
3035
Menu methodInjectedMenu;
3136
Menu multiInjectedMenu;
3237

38+
boolean menuIsInflated;
39+
3340
@InjectMenu
3441
void methodInjectedExtra(Menu methodInjectedMenu) {
42+
this.menuIsInflated = mockMenuInflater.menuInflated;
3543
this.methodInjectedMenu = methodInjectedMenu;
3644
}
3745

3846
void multiInjectedMenu(@InjectMenu Menu multiInjectedMenu, @InjectMenu Menu multiInjectedMenu2) {
47+
this.menuIsInflated = mockMenuInflater.menuInflated;
3948
this.multiInjectedMenu = multiInjectedMenu;
4049
}
4150

51+
MockMenuInflater mockMenuInflater;
52+
53+
@Override
54+
public MenuInflater getMenuInflater() {
55+
return mockMenuInflater;
56+
}
57+
58+
class MockMenuInflater extends MenuInflater {
59+
boolean menuInflated = false;
60+
61+
MockMenuInflater(Context context) {
62+
super(context);
63+
}
64+
}
4265
}

‎AndroidAnnotations/androidannotations-core/androidannotations-test/src/test/java/org/androidannotations/test/menu/InjectMenuActivityTest.java‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,16 @@
1616
package org.androidannotations.test.menu;
1717

1818
import static org.fest.assertions.api.Assertions.assertThat;
19+
import static org.mockito.ArgumentMatchers.any;
20+
import static org.mockito.ArgumentMatchers.anyInt;
21+
import static org.mockito.Mockito.doAnswer;
1922
import static org.mockito.Mockito.mock;
2023

2124
import org.junit.Before;
2225
import org.junit.Test;
2326
import org.junit.runner.RunWith;
27+
import org.mockito.invocation.InvocationOnMock;
28+
import org.mockito.stubbing.Answer;
2429
import org.robolectric.Robolectric;
2530
import org.robolectric.RobolectricTestRunner;
2631

@@ -34,6 +39,7 @@ public class InjectMenuActivityTest {
3439
@Before
3540
public void setUp() {
3641
injectMenuActivity = Robolectric.buildActivity(InjectMenuActivity_.class).create().get();
42+
injectMenuActivity.mockMenuInflater = createMenuInflater();
3743
}
3844

3945
@Test
@@ -48,6 +54,14 @@ public void testMenuInjectedFromOnCreateOptionsMenu() {
4854
assertThat(injectMenuActivity.menu).isSameAs(menu);
4955
}
5056

57+
@Test
58+
public void methodInjectionComesAfterInflation() {
59+
Menu menu = mock(Menu.class);
60+
assertThat(injectMenuActivity.menuIsInflated).isFalse();
61+
injectMenuActivity.onCreateOptionsMenu(menu);
62+
assertThat(injectMenuActivity.menuIsInflated).isTrue();
63+
}
64+
5165
@Test
5266
public void methodInjectedMenu() {
5367
Menu menu = mock(Menu.class);
@@ -61,4 +75,16 @@ public void multiInjectedMenu() {
6175
injectMenuActivity.onCreateOptionsMenu(menu);
6276
assertThat(injectMenuActivity.multiInjectedMenu).isSameAs(menu);
6377
}
78+
79+
private InjectMenuActivity.MockMenuInflater createMenuInflater() {
80+
final InjectMenuActivity.MockMenuInflater menuInflater = mock(InjectMenuActivity.MockMenuInflater.class);
81+
doAnswer(new Answer<Void>() {
82+
public Void answer(InvocationOnMock invocation) {
83+
menuInflater.menuInflated = true;
84+
return null;
85+
}
86+
}).when(menuInflater).inflate(anyInt(), any(Menu.class));
87+
return menuInflater;
88+
}
89+
6490
}

0 commit comments

Comments
 (0)