/// <summary> /// Returns all subscriptions in the system along with if the device has signed up for it. /// </summary> /// <param name="deviceId">The device id of the device to be searched.</param> /// <returns>Returns the list of device subscriptions.</returns> public Collection <DeviceSubscriptionInfo> GetDeviceSubscriptions(string deviceId) { // Initialize the list. Collection <DeviceSubscriptionInfo> devSubList = new Collection <DeviceSubscriptionInfo>(); // Get all subscriptions in the system. Collection <SubscriptionInfo> subList = this.subInfoMgr.GetSubscriptionsInfo(); foreach (SubscriptionInfo sub in subList) { DeviceSubscriptionInfo dsi = new DeviceSubscriptionInfo(); dsi.Name = sub.Name; dsi.Description = sub.Description; SubscriptionDataModel sdm = this.sds.SelectByDeviceIdAndSubscription(deviceId, sub.Name); // If the sdm is null, device has not signed up if (sdm == null) { dsi.IsSubscribed = "false"; } else { dsi.IsSubscribed = "true"; } devSubList.Add(dsi); } return(devSubList); }
public void When_ToSubsciptionEntitiesIsCalledOnSubscriptionDataModelList_Then_SubscriptionEntityListIsReturned() { var subscriptionDataModel1 = new SubscriptionDataModel { AccessToken = "Token", Username = "******", CreationTime = DateTime.Now, TotalNotificationsPushed = 1 }; var subscriptionDataModel2 = new SubscriptionDataModel { AccessToken = "Token", Username = "******", CreationTime = DateTime.Now, TotalNotificationsPushed = 1 }; var subscriptionDataModels = new List <SubscriptionDataModel>(); subscriptionDataModels.Add(subscriptionDataModel1); subscriptionDataModels.Add(subscriptionDataModel2); var entities = subscriptionDataModels.ToSubscriptionEntities(); // Assert Assert.AreEqual(subscriptionDataModels.Count, entities.Count); Assert.AreEqual(subscriptionDataModels.First().Username, entities.First().Username); Assert.AreEqual(subscriptionDataModels.Last().Username, entities.Last().Username); }
public void When_GetSubscriptionIsCalled_AndSubscriptionIsNotPresent_Then_SubscriptionListIsEmpty() { var repository = new SubscriptionRepository(); var subscription1 = new SubscriptionDataModel { Username = "******", AccessToken = "testtoken", TotalNotificationsPushed = 0, }; repository.Add(subscription1); var subscription2 = new SubscriptionDataModel { Username = "******", AccessToken = "newtoken", TotalNotificationsPushed = 0, }; repository.Add(subscription2); var result = repository.GetSubscription("bbc1"); // Assert Assert.IsNull(result); }
public void When_GetSubscriptionIsCalled_AndSubscriptionIsPresent_Then_SubscriptionIsReturned() { var repository = new SubscriptionRepository(); var subscription1 = new SubscriptionDataModel { Username = "******", AccessToken = "testtoken", TotalNotificationsPushed = 0, }; repository.Add(subscription1); var subscription2 = new SubscriptionDataModel { Username = "******", AccessToken = "newtoken", TotalNotificationsPushed = 0, }; repository.Add(subscription2); var result = repository.GetSubscription("bbc"); // Assert Assert.AreEqual(subscription1.Username, result.Username); Assert.AreEqual(subscription1.AccessToken, result.AccessToken); }
public void When_UpdateIsCalled_AndSubscriptionIsNotPresent_Then_FalseIsReturned() { var repository = new SubscriptionRepository(); var subscription1 = new SubscriptionDataModel { Username = "******", AccessToken = "testtoken", TotalNotificationsPushed = 0, }; repository.Add(subscription1); var subscription2 = new SubscriptionDataModel { Username = "******", AccessToken = "newtoken", TotalNotificationsPushed = 0, }; repository.Add(subscription2); var result = repository.Update(new SubscriptionDataModel { AccessToken = "newToken", Username = "******" }); // Assert Assert.IsFalse(result); }
public static SubscriptionEntity ToSubscriptionEntity(this SubscriptionDataModel model) { return(new SubscriptionEntity { AccessToken = model.AccessToken, CreationTime = model.CreationTime, TotalNotificationsPushed = model.TotalNotificationsPushed, Username = model.Username }); }
public void When_AddIsCalled_AndSubscriptionIsNull_Then_SubscriptionIsNotAddedAndNullIsReturned() { SubscriptionDataModel subscription = null; var repository = new SubscriptionRepository(); var result = repository.Add(subscription); // Assert Assert.IsNull(result); }
public bool Update(SubscriptionDataModel subscription) { var toUpdate = _subscriptions.FirstOrDefault(_ => _.Username == subscription.Username); if (toUpdate == null) { return(false); } toUpdate.TotalNotificationsPushed = subscription.TotalNotificationsPushed; return(true); }
public void When_AddIsCalled_Then_SubscriptionIsAdded() { var subscription = new SubscriptionDataModel { Username = "******", AccessToken = "testtoken", TotalNotificationsPushed = 1, }; var repository = new SubscriptionRepository(); var result = repository.Add(subscription); // Assert Assert.IsNotNull(result); Assert.AreEqual(0, subscription.TotalNotificationsPushed); Assert.AreEqual(DateTime.Now.ToString("dd MM yyyy"), subscription.CreationTime.ToString("dd MM yyyy")); }
public void When_ToSubsciptionEntityIsCalledOnSubscriptionDataModel_Then_SubscriptionEntityIsReturned() { var subscriptionDataModel = new SubscriptionDataModel { AccessToken = "Token", Username = "******", CreationTime = DateTime.Now, TotalNotificationsPushed = 1 }; var entity = subscriptionDataModel.ToSubscriptionEntity(); // Assert Assert.AreEqual(subscriptionDataModel.Username, entity.Username); Assert.AreEqual(subscriptionDataModel.AccessToken, entity.AccessToken); Assert.AreEqual(subscriptionDataModel.CreationTime, entity.CreationTime); Assert.AreEqual(subscriptionDataModel.TotalNotificationsPushed, entity.TotalNotificationsPushed); }
/// <summary> /// Signup the device to the subscription. /// </summary> /// <param name="deviceId">The device id of the device being added.</param> /// <param name="subscription">Name of the subscription being signed up.</param> /// <returns>Returns success if the signup is successful. Error otherwise.</returns> public PushMessageError AddSubscription(string deviceId, string subscription) { PushMessageError err = this.Validate(deviceId, subscription); if (err != PushMessageError.Success) { return(err); } SubscriptionDataModel sdm = this.sds.SelectByDeviceIdAndSubscription(deviceId, subscription); if (sdm == null) { sdm = new SubscriptionDataModel(subscription, deviceId); this.sds.Insert(sdm); } return(PushMessageError.Success); }
public async Task When_SendNotificationsIsCalled_AndSubscriptionAreNotNotified_Then_FailureMessageIsReceived() { // Setup var subscription = new SubscriptionDataModel { Username = "******", AccessToken = "testtoken" }; _repository.Setup(_ => _.GetSubscription("bbc")).Returns(subscription); _client.Setup(_ => _.PostAsync("https://api.pushbullet.com/v2/pushes", null, It.IsAny <StringContent>())).ReturnsAsync(new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.BadGateway }); var result = await _service.SendNotification(new NotificationEntity { Username = "******", NoteText = "Text", NoteTitle = "Title" }); // Assert Assert.AreEqual(false, result.IsSent); Assert.AreEqual("Unable to send notification", result.StatusText); }
/// <summary> /// Delete the device signup. /// </summary> /// <param name="deviceId">Device id of the device to be deleted.</param> /// <param name="subscription">Subscription name.</param> /// <returns>Returns success if deletion is successful or error otherwise.</returns> public PushMessageError DeleteSubscription(string deviceId, string subscription) { PushMessageError err = this.Validate(deviceId, subscription); if (err != PushMessageError.Success) { return(err); } SubscriptionDataModel sdm = this.sds.SelectByDeviceIdAndSubscription(deviceId, subscription); if (sdm != null) { // Delete it from the d/b this.sds.Delete(sdm); return(PushMessageError.Success); } return(PushMessageError.ErrorDeviceNotRegisteredForSubscription); }
public SubscriptionDataModel Add(SubscriptionDataModel subscription) { if (subscription == null) { return(subscription); } lock (_lock) { if (_subscriptions.Any(_ => _.Username == subscription.Username)) { throw new DuplicateSubscriptionException(); } subscription.CreationTime = DateTime.Now; subscription.TotalNotificationsPushed = 0; _subscriptions.Add(subscription); } return(subscription); }
public void When_AddIsCalled_AndSubscriptionIsAlreadyAdded_Then_DuplicateSubscriptionExceptionIsThrown() { var subscription = new SubscriptionDataModel { Username = "******", AccessToken = "testtoken", TotalNotificationsPushed = 1, }; var repository = new SubscriptionRepository(); var result = repository.Add(subscription); try { result = repository.Add(subscription); } catch (Exception ex) { // Assert Assert.IsTrue(ex is DuplicateSubscriptionException); } }
public bool Remove(SubscriptionDataModel subscription) { throw new NotImplementedException(); }