blob: 3172ea4330c80772f0fc883f62c2dd681c41de67 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.plugins.webviewflutter;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.webkit.WebChromeClient.FileChooserParams;
import io.flutter.plugin.common.BinaryMessenger;
import java.util.Arrays;
import java.util.Objects;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
public class FileChooserParamsTest {
@Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
@Mock public FileChooserParams mockFileChooserParams;
@Mock public BinaryMessenger mockBinaryMessenger;
InstanceManager instanceManager;
@Before
public void setUp() {
instanceManager = InstanceManager.open(identifier -> {});
}
@After
public void tearDown() {
instanceManager.close();
}
@Test
public void flutterApiCreate() {
final FileChooserParamsFlutterApiImpl spyFlutterApi =
spy(new FileChooserParamsFlutterApiImpl(mockBinaryMessenger, instanceManager));
when(mockFileChooserParams.isCaptureEnabled()).thenReturn(true);
when(mockFileChooserParams.getAcceptTypes()).thenReturn(new String[] {"my", "list"});
when(mockFileChooserParams.getMode()).thenReturn(FileChooserParams.MODE_OPEN_MULTIPLE);
when(mockFileChooserParams.getFilenameHint()).thenReturn("filenameHint");
spyFlutterApi.create(mockFileChooserParams, reply -> {});
final long identifier =
Objects.requireNonNull(
instanceManager.getIdentifierForStrongReference(mockFileChooserParams));
final ArgumentCaptor<GeneratedAndroidWebView.FileChooserModeEnumData> modeCaptor =
ArgumentCaptor.forClass(GeneratedAndroidWebView.FileChooserModeEnumData.class);
verify(spyFlutterApi)
.create(
eq(identifier),
eq(true),
eq(Arrays.asList("my", "list")),
modeCaptor.capture(),
eq("filenameHint"),
any());
assertEquals(
modeCaptor.getValue().getValue(), GeneratedAndroidWebView.FileChooserMode.OPEN_MULTIPLE);
}
}