Consider all device when checking device capabilities

This commit is contained in:
Jon Chambers 2024-06-21 18:04:56 -04:00 committed by Jon Chambers
parent 9b7af00cf5
commit fceda00d83
2 changed files with 8 additions and 9 deletions

View File

@ -289,18 +289,17 @@ public class Account {
} }
public boolean isPaymentActivationSupported() { public boolean isPaymentActivationSupported() {
return allEnabledDevicesHaveCapability(DeviceCapabilities::paymentActivation); return allDevicesHaveCapability(DeviceCapabilities::paymentActivation);
} }
public boolean isDeleteSyncSupported() { public boolean isDeleteSyncSupported() {
return allEnabledDevicesHaveCapability(DeviceCapabilities::deleteSync); return allDevicesHaveCapability(DeviceCapabilities::deleteSync);
} }
private boolean allEnabledDevicesHaveCapability(final Predicate<DeviceCapabilities> predicate) { private boolean allDevicesHaveCapability(final Predicate<DeviceCapabilities> predicate) {
requireNotStale(); requireNotStale();
return devices.stream() return devices.stream()
.filter(Device::hasMessageDeliveryChannel)
.allMatch(device -> device.getCapabilities() != null && predicate.test(device.getCapabilities())); .allMatch(device -> device.getCapabilities() != null && predicate.test(device.getCapabilities()));
} }

View File

@ -48,7 +48,7 @@ class AccountTest {
private final Device paymentActivationCapableDevice = mock(Device.class); private final Device paymentActivationCapableDevice = mock(Device.class);
private final Device paymentActivationIncapableDevice = mock(Device.class); private final Device paymentActivationIncapableDevice = mock(Device.class);
private final Device paymentActivationIncapableExpiredDevice = mock(Device.class); private final Device paymentActivationIncapableDeviceWithoutDeliveryChannel = mock(Device.class);
private final Device deleteSyncCapableDevice = mock(Device.class); private final Device deleteSyncCapableDevice = mock(Device.class);
private final Device deleteSyncIncapableDevice = mock(Device.class); private final Device deleteSyncIncapableDevice = mock(Device.class);
@ -81,9 +81,9 @@ class AccountTest {
when(paymentActivationIncapableDevice.getCapabilities()).thenReturn( when(paymentActivationIncapableDevice.getCapabilities()).thenReturn(
new DeviceCapabilities(true, true, false, false)); new DeviceCapabilities(true, true, false, false));
when(paymentActivationIncapableDevice.hasMessageDeliveryChannel()).thenReturn(true); when(paymentActivationIncapableDevice.hasMessageDeliveryChannel()).thenReturn(true);
when(paymentActivationIncapableExpiredDevice.getCapabilities()).thenReturn( when(paymentActivationIncapableDeviceWithoutDeliveryChannel.getCapabilities()).thenReturn(
new DeviceCapabilities(true, true, false, false)); new DeviceCapabilities(true, true, false, false));
when(paymentActivationIncapableExpiredDevice.hasMessageDeliveryChannel()).thenReturn(false); when(paymentActivationIncapableDeviceWithoutDeliveryChannel.hasMessageDeliveryChannel()).thenReturn(false);
when(deleteSyncCapableDevice.getCapabilities()).thenReturn( when(deleteSyncCapableDevice.getCapabilities()).thenReturn(
new DeviceCapabilities(true, true, true, true) new DeviceCapabilities(true, true, true, true)
@ -191,8 +191,8 @@ class AccountTest {
List.of(paymentActivationCapableDevice, paymentActivationIncapableDevice), List.of(paymentActivationCapableDevice, paymentActivationIncapableDevice),
"1234".getBytes(StandardCharsets.UTF_8)).isPaymentActivationSupported()).isFalse(); "1234".getBytes(StandardCharsets.UTF_8)).isPaymentActivationSupported()).isFalse();
assertThat(AccountsHelper.generateTestAccount("+18005551234", UUID.randomUUID(), UUID.randomUUID(), assertThat(AccountsHelper.generateTestAccount("+18005551234", UUID.randomUUID(), UUID.randomUUID(),
List.of(paymentActivationCapableDevice, paymentActivationIncapableExpiredDevice), List.of(paymentActivationCapableDevice, paymentActivationIncapableDeviceWithoutDeliveryChannel),
"1234".getBytes(StandardCharsets.UTF_8)).isPaymentActivationSupported()).isTrue(); "1234".getBytes(StandardCharsets.UTF_8)).isPaymentActivationSupported()).isFalse();
} }
@Test @Test