public void SameClientSubscribesTwiceShouldOnlyCreateOneSubscribtion( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, string messageTypeString) { var client = new Address("testqueue.publisher", "localhost"); var sut = storage as ISubscriptionStorage; var messageTypes = new List <MessageType>() { new MessageType(messageTypeString, "1.0.0.0") }; sut.Subscribe(client, messageTypes); sut.Subscribe(client, messageTypes); var subscriptions = storage.GetSubscriptions(messageTypes).ToList(); subscriptions.Should().HaveCount(messageTypes.Count); var subscription = subscriptions.First(); subscription.MessageType.Should().Be(messageTypes.First()); subscription.Clients.Should().HaveCount(1); subscription.Clients.First().Should().Be(client); }
public void SubscribeTwoMessageTypesShouldCreateTwoSubscriptions( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Address client, string messageTypeString1, string messageTypeString2) { var sut = storage as ISubscriptionStorage; var messageTypes = new List <MessageType>() { new MessageType(messageTypeString1, "1.0.0.0"), new MessageType(messageTypeString2, "1.0.0.0") }; sut.Subscribe(client, messageTypes); var subscriptions = storage.GetSubscriptions(messageTypes).ToList(); subscriptions.Should().HaveCount(messageTypes.Count); subscriptions.ForEach(s => { s.Clients.Should().HaveCount(1); s.Clients.First().Should().Be(client); }); }
public void UnsubscribeWhenThereAreSubscriptionsShouldRemoveClientsAddress( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Address client, Address otherClient1, Address otherClient2, string messageTypeString1) { var sut = storage as ISubscriptionStorage; var messageTypes = new List <MessageType>() { new MessageType(messageTypeString1, "1.0.0.0"), }; sut.Subscribe(client, messageTypes); sut.Subscribe(otherClient1, messageTypes); sut.Subscribe(otherClient2, messageTypes); sut.GetSubscriberAddressesForMessage(messageTypes).Should().HaveCount(3); sut.Unsubscribe(client, messageTypes); var clients = sut.GetSubscriberAddressesForMessage(messageTypes).ToList(); clients.Should().HaveCount(2); clients.First().Should().Be(otherClient1); clients.Last().Should().Be(otherClient2); }
public void UnsubscribeWhenThereAreSubscriptionsShouldRemoveClientsAddress( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Subscriber subscriber, Subscriber otherSubscriber1, Subscriber otherSubscriber2, ContextBag context, string messageTypeString) { var sut = storage as ISubscriptionStorage; var messageType = new MessageType(messageTypeString, "1.0.0.0"); sut.Subscribe(subscriber, messageType, context).Wait(); sut.Subscribe(otherSubscriber1, messageType, context).Wait(); sut.Subscribe(otherSubscriber2, messageType, context).Wait(); sut.GetSubscriberAddressesForMessage(new List <MessageType>() { messageType }, context) .Result.Should() .HaveCount(3); sut.Unsubscribe(subscriber, messageType, context).Wait(); var clients = sut.GetSubscriberAddressesForMessage(new List <MessageType>() { messageType }, context).Result.ToList(); clients.Should().HaveCount(2); clients.First().ShouldBeEquivalentTo(otherSubscriber1); clients.Last().ShouldBeEquivalentTo(otherSubscriber2); }
public void SameClientSubscribesTwiceShouldOnlyCreateOneSubscribtion( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Subscriber subscriber, ContextBag context, string messageTypeString) { var sut = storage as ISubscriptionStorage; var messageType = new MessageType(messageTypeString, "1.0.0.0"); sut.Subscribe(subscriber, messageType, context).Wait(); sut.Subscribe(subscriber, messageType, context).Wait(); var subscriptions = storage.GetSubscription(messageType).Result.ToList(); subscriptions.Should().HaveCount(1); var subscription = subscriptions.First(); subscription.Id.TypeName.Should().Be(messageType.TypeName); subscription.Subscribers.Should().HaveCount(1); var firstSubscriber = subscription.Subscribers.First(); firstSubscriber.ShouldBeEquivalentTo(subscriber); }
public void UnsubscribeWhenClientSubscriptionIsTheOnlyOneShouldRemoveOnlyClient( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Subscriber subscriber, ContextBag context, string messageTypeString) { var sut = storage as ISubscriptionStorage; var messageType = new MessageType(messageTypeString, "1.0.0.0"); sut.Subscribe(subscriber, messageType, context).Wait(); storage.GetSubscription(messageType).Result.Should().HaveCount(1); sut.GetSubscriberAddressesForMessage(new List <MessageType>() { messageType }, context) .Result.Should() .HaveCount(1); sut.Unsubscribe(subscriber, messageType, context).Wait(); storage.GetSubscription(messageType).Result.Should().HaveCount(1); sut.GetSubscriberAddressesForMessage(new List <MessageType>() { messageType }, context) .Result.Should() .HaveCount(0); }
public void SubscribeTwoMessageTypesShouldCreateTwoDifferentSubscriptions( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Subscriber subscriber, ContextBag context, string messageTypeString1, string messageTypeString2) { var sut = storage as ISubscriptionStorage; var messageType1 = new MessageType(messageTypeString1, "1.0.0.0"); var messageType2 = new MessageType(messageTypeString2, "1.0.0.0"); sut.Subscribe(subscriber, messageType1, context).Wait(); sut.Subscribe(subscriber, messageType2, context).Wait(); var subscriptions = storage.GetSubscription(messageType1).Result.ToList(); subscriptions.Should().HaveCount(1); var subscription = subscriptions.First(); subscription.Id.TypeName.Should().Be(messageType1.TypeName); subscription.Subscribers.Should().HaveCount(1); subscriptions = storage.GetSubscription(messageType2).Result.ToList(); subscriptions.Should().HaveCount(1); subscription = subscriptions.First(); subscription.Id.TypeName.Should().Be(messageType2.TypeName); subscription.Subscribers.Should().HaveCount(1); }
public void UnsubscribeWhenThereIsNoSubscriptionShouldNotCreateSubscription( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Address client, string messageTypeString1) { var sut = storage as ISubscriptionStorage; var messageTypes = new List <MessageType>() { new MessageType(messageTypeString1, "1.0.0.0"), }; sut.Unsubscribe(client, messageTypes); storage.GetSubscriptions(messageTypes).Should().BeEmpty(); }
public void UnsubscribeWhenThereIsNoSubscriptionShouldNotCreateSubscription( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Subscriber subscriber, ContextBag context, string messageTypeString) { var sut = storage as ISubscriptionStorage; var messageType = new MessageType(messageTypeString, "1.0.0.0"); sut.Unsubscribe(subscriber, messageType, context).Wait(); var subscriptions = storage.GetSubscription(messageType).Result.ToList(); subscriptions.Should().BeEmpty(); }
public void UnsubscribeWhenClientSubscriptionIsTheOnlyOneShouldRemoveOnlyClient( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Address client, string messageTypeString1) { var sut = storage as ISubscriptionStorage; var messageTypes = new List <MessageType>() { new MessageType(messageTypeString1, "1.0.0.0"), }; sut.Subscribe(client, messageTypes); storage.GetSubscriptions(messageTypes).Should().HaveCount(1); sut.GetSubscriberAddressesForMessage(messageTypes).Should().HaveCount(1); sut.Unsubscribe(client, messageTypes); storage.GetSubscriptions(messageTypes).Should().HaveCount(1); sut.GetSubscriberAddressesForMessage(messageTypes).Should().HaveCount(0); }
public void UnsubscribeFromAllMessages( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Address client, string messageTypeString1, string messageTypeString2, string messageTypeString3) { var sut = storage as ISubscriptionStorage; var messageTypes = new List <MessageType>() { new MessageType(messageTypeString1, "1.0.0.0"), new MessageType(messageTypeString2, "1.0.0.0"), new MessageType(messageTypeString3, "1.0.0.0"), }; sut.Subscribe(client, messageTypes); storage.GetSubscriptions(messageTypes).Should().HaveCount(3); sut.Unsubscribe(client, messageTypes); storage.GetSubscriptions(messageTypes).ToList().ForEach(s => s.Clients.Should().HaveCount(0)); }
public void SubscribeTwoClientsOneMessageTypeShouldCreateOneSubscriptionWithMultipleAddresses( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Address client1, Address client2, string messageTypeString1) { var sut = storage as ISubscriptionStorage; var messageTypes = new List <MessageType>() { new MessageType(messageTypeString1, "1.0.0.0"), }; sut.Subscribe(client1, messageTypes); sut.Subscribe(client2, messageTypes); var clients = sut.GetSubscriberAddressesForMessage(messageTypes).ToList(); clients.Should().HaveCount(2); clients.Should().ContainSingle(a => client1 == a); clients.Should().ContainSingle(a => client2 == a); }
public void SingleSubscriptionShouldOnlyCreateOneSubscription( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Address client, string messageTypeString) { var sut = storage as ISubscriptionStorage; var messageTypes = new List <MessageType>() { new MessageType(messageTypeString, "1.0.0.0") }; sut.Subscribe(client, messageTypes); var subscriptions = storage.GetSubscriptions(messageTypes).ToList(); subscriptions.Should().HaveCount(messageTypes.Count); var subscription = subscriptions.First(); subscription.MessageType.Should().Be(messageTypes.First()); subscription.Clients.Should().HaveCount(1); subscription.Clients.First().Should().Be(client); }
public void UnsubscribeFromAllMessages( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Subscriber subscriber, ContextBag context, string messageTypeString1, string messageTypeString2, string messageTypeString3) { var sut = storage as ISubscriptionStorage; var messageTypes = new List <MessageType>() { new MessageType(messageTypeString1, "1.0.0.0"), new MessageType(messageTypeString2, "1.0.0.0"), new MessageType(messageTypeString3, "1.0.0.0"), }; messageTypes.ForEach(mt => sut.Subscribe(subscriber, mt, context).Wait()); storage.GetSubscriptions(messageTypes).Result.Should().HaveCount(3); messageTypes.ForEach(mt => sut.Unsubscribe(subscriber, mt, context).Wait()); storage.GetSubscriptions(messageTypes).Result.ToList().ForEach(s => s.Subscribers.Should().HaveCount(0)); }
public void SubscribeTwoClientsOneMessageTypeShouldCreateOneSubscriptionWithMultipleAddresses( MongoSubscriptionPersister storage, MongoDatabaseFactory factory, Subscriber subscriber1, Subscriber subscriber2, ContextBag context, string messageTypeString) { var sut = storage as ISubscriptionStorage; var messageType = new MessageType(messageTypeString, "1.0.0.0"); sut.Subscribe(subscriber1, messageType, context).Wait(); sut.Subscribe(subscriber2, messageType, context).Wait(); var subscribers = sut.GetSubscriberAddressesForMessage(new List <MessageType> { messageType }, context).Result.ToList(); subscribers.Should().HaveCount(2); subscribers.Should().ContainSingle(a => subscriber1.TransportAddress == a.TransportAddress); subscribers.Should().ContainSingle(a => subscriber2.TransportAddress == a.TransportAddress); }
public void BasicMongoSubscriptionStorageConstruction(MongoDatabaseFactory factory) { var sut = new MongoSubscriptionPersister(factory); }