internal int CheckSubscriptionSanity() { int subscriptionsRemoved = 0; _subscriptionLock.EnterWriteLock(); try { for (int i = 0; i < Subscriptions.Count; i++) { var sub = Subscriptions[i]; if (Subscriptions.Count(s => s == sub) > 1) { Subscriptions.RemoveAt(i); subscriptionsRemoved++; i--; } } } finally { _subscriptionLock.ExitWriteLock(); } return(subscriptionsRemoved); }
public void A_subscription_entry_should_be_added_to_the_database() { var messageTypes = new[] { new MessageType(typeof(MessageA)), new MessageType(typeof(MessageB)) }; Storage.Subscribe(TestClients.ClientA, messageTypes); var count = Subscriptions.Count(); Assert.AreEqual(count, 2); }
public void Duplicate_subcription_shouldnt_create_additional_db_rows() { Storage.Subscribe(TestClients.ClientA, MessageTypes.MessageA); Storage.Subscribe(TestClients.ClientA, MessageTypes.MessageA); var count = Subscriptions.Count(); Assert.AreEqual(count, 1); }
public async Task Duplicate_subcription_shouldnt_create_additional_db_rows() { await Storage.Subscribe(TestClients.ClientA, MessageTypes.MessageA, null).ConfigureAwait(false); await Storage.Subscribe(TestClients.ClientA, MessageTypes.MessageA, null).ConfigureAwait(false); var count = Subscriptions.Count(); Assert.AreEqual(count, 1); }
public void All_subscription_entries_for_specfied_message_types_should_be_removed() { Storage.Subscribe(TestClients.ClientA, MessageTypes.All); Storage.Unsubscribe(TestClients.ClientA, MessageTypes.All); var builder = Builders <Subscription> .Filter; var query = builder.Ne(s => s.Subscribers, null) & !builder.Size(s => s.Subscribers, 0); var count = Subscriptions.Count(query); Assert.AreEqual(0, count); }
public async Task A_subscription_entry_should_be_added_to_the_database() { var messageTypes = new[] { new MessageType(typeof(MessageA)), new MessageType(typeof(MessageB)) }; foreach (var messageType in messageTypes) { await Storage.Subscribe(TestClients.ClientA, messageType, null).ConfigureAwait(false); } var count = Subscriptions.Count(); Assert.AreEqual(count, 2); }
public int GetSubscriptionCount(SubscriptionType type) { int subCount = 0; if (Subscriptions != null) { subCount = Subscriptions.Count(item => item.SubscriptionType == type); } int membersSubCount = 0; if (TeamMembers != null) { membersSubCount = TeamMembers.Select(item => item.GetSubscriptionCount(type)).Sum(); } return(subCount + membersSubCount); }
public async Task All_subscription_entries_for_specfied_message_types_should_be_removed() { foreach (var messageType in MessageTypes.All) { await Storage.Subscribe(TestClients.ClientA, messageType, null).ConfigureAwait(false); } foreach (var messageType in MessageTypes.All) { await Storage.Unsubscribe(TestClients.ClientA, messageType, null).ConfigureAwait(false); } var builder = Builders <Subscription> .Filter; var query = builder.Ne(s => s.Subscribers, null) & !builder.Size(s => s.Subscribers, 0); var count = Subscriptions.Count(query); Assert.AreEqual(0, count); }
public bool IsSubscribed(string userName) { return(Subscriptions.Count(s => s.UserName == userName) > 0); }