Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit fdf79d6

Browse files
committed
Test real hasStrings call but not working due to inability to mock ClipboardManager
1 parent 5d5c9b2 commit fdf79d6

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ public class PlatformPlugin {
3030
private PlatformChannel.SystemChromeStyle currentTheme;
3131
private int mEnabledOverlays;
3232

33-
private final PlatformChannel.PlatformMessageHandler mPlatformMessageHandler =
33+
@VisibleForTesting
34+
final PlatformChannel.PlatformMessageHandler mPlatformMessageHandler =
3435
new PlatformChannel.PlatformMessageHandler() {
3536
@Override
3637
public void playSystemSound(@NonNull PlatformChannel.SoundType soundType) {

shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package io.flutter.plugin.platform;
22

33
import static org.junit.Assert.assertTrue;
4+
import static org.junit.Assert.assertFalse;
45
import static org.mockito.Mockito.mock;
5-
import static org.mockito.Mockito.spy;
66
import static org.mockito.Mockito.verify;
77
import static org.mockito.Mockito.when;
88

@@ -14,22 +14,19 @@
1414
import io.flutter.embedding.engine.FlutterJNI;
1515
import io.flutter.embedding.engine.dart.DartExecutor;
1616
import io.flutter.embedding.engine.systemchannels.PlatformChannel;
17-
import io.flutter.embedding.engine.systemchannels.TextInputChannel;
1817
import io.flutter.plugin.common.MethodCall;
1918
import io.flutter.plugin.common.MethodChannel;
20-
import java.util.HashMap;
21-
import java.util.Map;
2219
import org.json.JSONException;
2320
import org.json.JSONObject;
2421
import org.junit.Test;
2522
import org.junit.runner.RunWith;
26-
import org.mockito.ArgumentCaptor;
2723
import org.mockito.Matchers;
2824
import org.robolectric.RobolectricTestRunner;
2925
import org.robolectric.RuntimeEnvironment;
3026
import org.robolectric.annotation.Config;
27+
import org.robolectric.shadows.ShadowClipboardManager;
3128

32-
@Config(manifest = Config.NONE)
29+
@Config(manifest = Config.NONE, shadows = ShadowClipboardManager.class)
3330
@RunWith(RobolectricTestRunner.class)
3431
public class PlatformPluginTest {
3532
@Config(sdk = 16)
@@ -71,4 +68,23 @@ public void platformPlugin_hasStringsMessage() {
7168
}
7269
verify(mockResult).success(Matchers.refEq(expected));
7370
}
71+
72+
@Test
73+
public void platformPlugin_hasStrings() {
74+
View fakeDecorView = mock(View.class);
75+
Window fakeWindow = mock(Window.class);
76+
when(fakeWindow.getDecorView()).thenReturn(fakeDecorView);
77+
Activity fakeActivity = mock(Activity.class);
78+
when(fakeActivity.getWindow()).thenReturn(fakeWindow);
79+
PlatformChannel fakePlatformChannel = mock(PlatformChannel.class);
80+
PlatformPlugin platformPlugin = new PlatformPlugin(fakeActivity, fakePlatformChannel);
81+
82+
ClipboardManager clipboardManager =
83+
RuntimeEnvironment.application.getSystemService(ClipboardManager.class);
84+
clipboardManager.setText("iamastring");
85+
assertTrue(platformPlugin.mPlatformMessageHandler.clipboardHasStrings());
86+
87+
clipboardManager.setText("");
88+
assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings());
89+
}
7490
}

0 commit comments

Comments
 (0)