public async Task ValidationFailedTest()
        {
            var store      = new Mock <ISettingsDataStore>();
            var subscriber = new Mock <IPushNotificationSubscriber>();

            var service = new PushNotificationSubscriptionService(store.Object, subscriber.Object);
            await Assert.ThrowsAsync <ArgumentNullException>(() => service.UnsubscribeDeviceAsync(null));

            await Assert.ThrowsAsync <ArgumentNullException>(() => service.UnsubscribeUserAsync(null));

            await Assert.ThrowsAsync <ArgumentNullException>(() => service.CreateOrUpdateSubscriptionAsync(null));

            subscriber.Verify(x => x.UnsubscribeDeviceAsync(It.IsAny <string>()), Times.Never);
            subscriber.Verify(x => x.UnsubscribeByTagAsync(It.IsAny <string>()), Times.Never);
            subscriber.Verify(x => x.CreateOrUpdatePushSubscriptionAsync(It.IsAny <PushSubscriptionRequest>()), Times.Never);
        }
        public async Task UnsubscribeDeviceTest()
        {
            var userId = Guid.NewGuid().ToString();
            var token  = Guid.NewGuid().ToString();
            var store  = new Mock <ISettingsDataStore>();

            store.Setup(x => x.DoesExistAsync(It.Is <string>(s => s == userId)))
            .ReturnsAsync(true);

            var subscriber = new Mock <IPushNotificationSubscriber>();

            var service = new PushNotificationSubscriptionService(store.Object, subscriber.Object);
            await service.UnsubscribeDeviceAsync(new PushDeviceRequest(DevicePlatform.Android, token) { UserId = userId });

            store.Verify(x => x.DoesExistAsync(userId), Times.Once);
            subscriber.Verify(x => x.UnsubscribeDeviceAsync(token), Times.Once);
        }