blob: 2f9f5e5619fda3eb6b232336eed4fedae3949087 [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.googlemaps;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import android.content.Context;
import android.os.Build;
import androidx.test.core.app.ApplicationProvider;
import com.google.android.gms.maps.MapsInitializer.Renderer;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import java.util.HashMap;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
@Config(sdk = Build.VERSION_CODES.P)
public class GoogleMapInitializerTest {
private GoogleMapInitializer googleMapInitializer;
@Mock BinaryMessenger mockMessenger;
@Before
public void before() {
MockitoAnnotations.openMocks(this);
Context context = ApplicationProvider.getApplicationContext();
googleMapInitializer = spy(new GoogleMapInitializer(context, mockMessenger));
}
@Test
public void initializer_OnMapsSdkInitializedWithLatestRenderer() {
doNothing().when(googleMapInitializer).initializeWithRendererRequest(Renderer.LATEST);
MethodChannel.Result result = mock(MethodChannel.Result.class);
googleMapInitializer.onMethodCall(
new MethodCall(
"initializer#preferRenderer",
new HashMap<String, Object>() {
{
put("value", "latest");
}
}),
result);
googleMapInitializer.onMapsSdkInitialized(Renderer.LATEST);
verify(result, times(1)).success("latest");
verify(result, never()).error(any(), any(), any());
}
@Test
public void initializer_OnMapsSdkInitializedWithLegacyRenderer() {
doNothing().when(googleMapInitializer).initializeWithRendererRequest(Renderer.LEGACY);
MethodChannel.Result result = mock(MethodChannel.Result.class);
googleMapInitializer.onMethodCall(
new MethodCall(
"initializer#preferRenderer",
new HashMap<String, Object>() {
{
put("value", "legacy");
}
}),
result);
googleMapInitializer.onMapsSdkInitialized(Renderer.LEGACY);
verify(result, times(1)).success("legacy");
verify(result, never()).error(any(), any(), any());
}
@Test
public void initializer_onMethodCallWithUnknownRenderer() {
doNothing().when(googleMapInitializer).initializeWithRendererRequest(Renderer.LEGACY);
MethodChannel.Result result = mock(MethodChannel.Result.class);
googleMapInitializer.onMethodCall(
new MethodCall(
"initializer#preferRenderer",
new HashMap<String, Object>() {
{
put("value", "wrong_renderer");
}
}),
result);
verify(result, never()).success(any());
verify(result, times(1)).error(eq("Invalid renderer type"), any(), any());
}
}