From 7892b8be6a6e7caa25f0ea1bac68ca0c8cf7f6fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Fri, 5 Aug 2022 21:36:16 +0100 Subject: [PATCH] Fix tests after DeviceService changes --- .../gadgetbridge/impl/GBDeviceService.java | 4 ++++ .../DeviceCommunicationServiceTestCase.java | 2 +- .../service/TestDeviceService.java | 19 +++++++++++++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java index 1007f1e42..48b532fbf 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java @@ -84,6 +84,10 @@ public class GBDeviceService implements DeviceService { return new GBDeviceService(mContext, device); } + public GBDevice getDevice() { + return mDevice; + } + protected Intent createIntent() { return new Intent(mContext, mServiceClass); } diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationServiceTestCase.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationServiceTestCase.java index 74cf31550..85cbca92b 100644 --- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationServiceTestCase.java +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationServiceTestCase.java @@ -86,7 +86,7 @@ public class DeviceCommunicationServiceTestCase extends TestBase { public void ensureConnected() { mDeviceService.start(); // connection goes synchronously here - mDeviceService.connect(getDevice()); + mDeviceService.forDevice(getDevice()).connect(); Mockito.verify(mockSupport, Mockito.times(1)).connect(); assertTrue(getDevice().isInitialized()); } diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/TestDeviceService.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/TestDeviceService.java index f09cbf728..eb643bf10 100644 --- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/TestDeviceService.java +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/TestDeviceService.java @@ -7,7 +7,9 @@ import android.content.Intent; import org.robolectric.Robolectric; import org.robolectric.android.controller.ServiceController; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceService; +import nodomain.freeyourgadget.gadgetbridge.model.DeviceService; /** * Extends GBDeviceServer so that communication with the service works @@ -17,15 +19,28 @@ class TestDeviceService extends GBDeviceService { private final ServiceController serviceController; private final DeviceCommunicationService service; - TestDeviceService(Context context) throws Exception { - super(context); + TestDeviceService(Context context) { + this(context, null); + } + + TestDeviceService(final Context context, final GBDevice device) { + super(context, device); serviceController = Robolectric.buildService(DeviceCommunicationService.class, createIntent()); service = serviceController.create().get(); } + @Override + public DeviceService forDevice(final GBDevice device) { + return new TestDeviceService(mContext, device); + } + @Override protected void invokeService(Intent intent) { + if (getDevice() != null) { + intent.putExtra(GBDevice.EXTRA_DEVICE, getDevice()); + } + // calling though to the service natively does not work with robolectric, // we have to use the ServiceController to do that service.onStartCommand(intent, Service.START_FLAG_REDELIVERY, (int) (Math.random() * 10000));