public void TestDeleteClient() { foreach (var dataService in DataServices) { // Arrange. const string client1Id = "FDF33DF1-5DCA-41F9-A2E4-3B5C7E103452"; const string client2Id = "31D12F7D-2D0E-43FB-8092-E6D34A9AB87D"; const string messageType1Id = "EB6EC229-5E93-4B76-9993-5A1589787421"; const string messageType2Id = "C8802C67-AC1B-497C-A707-5FF4191E0083"; const string messageType3Id = "BC3F54C6-4E2F-43DA-B124-A0771F8F200C"; var service = new CachedSubscriptionsManager(GetMockLogger(), dataService, GetMockStatisticsService()); var clientLcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Client), Client.Views.ListView); var messageLcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Message), Message.Views.MessageLightView); service.CreateClient(client1Id, "TestClient1"); service.CreateClient(client2Id, "TestClient2"); service.CreateMessageType(new NameCommentStruct { Id = messageType1Id, Name = "TestMessageType1", Comment = "ForTest" }); service.CreateMessageType(new NameCommentStruct { Id = messageType2Id, Name = "TestMessageType2", Comment = "ForTest" }); service.CreateMessageType(new NameCommentStruct { Id = messageType3Id, Name = "TestMessageType3", Comment = "ForTest" }); service.Prepare(); service.SubscribeOrUpdate(client1Id, messageType1Id, true, TransportType.WCF); service.SubscribeOrUpdate(client1Id, messageType3Id, true, TransportType.WCF); service.SubscribeOrUpdate(client1Id, messageType2Id, true, TransportType.WCF); service.SubscribeOrUpdate(client2Id, messageType2Id, true, TransportType.WCF); Guid client1Pk = ServiceHelper.ConvertClientIdToPrimaryKey(client1Id, dataService, GetMockStatisticsService()); Guid messageType1Pk = ServiceHelper.ConvertMessageTypeIdToPrimaryKey(messageType1Id, dataService, GetMockStatisticsService()); var client = new Client(); client.SetExistObjectPrimaryKey(client1Pk); var messageType = new MessageType(); messageType.SetExistObjectPrimaryKey(messageType1Pk); DataObject message = new Message() { Recipient = client, MessageType = messageType, ReceivingTime = DateTime.Now }; dataService.UpdateObject(message); // Act && Assert. var clients = dataService.LoadObjects(clientLcs); Assert.Equal(clients.Length, 2); var messages = dataService.LoadObjects(messageLcs); Assert.Equal(messages.Length, 1); var subs = service.GetSubscriptions(false); Assert.Equal(subs.Count(), 4); Assert.Throws <ArgumentNullException>(() => service.DeleteClient(null)); service.DeleteClient(client1Id); clients = dataService.LoadObjects(clientLcs); Assert.Equal(clients.Length, 1); Assert.True(clients.Cast <Client>().All(cl => Guid.Parse(cl.ID) == Guid.Parse(client2Id) || Guid.Parse(cl.__PrimaryKey.ToString()) == Guid.Parse(client2Id))); messages = dataService.LoadObjects(messageLcs); Assert.Equal(messages.Length, 0); subs = service.GetSubscriptions(false); Assert.Equal(subs.Count(), 1); Assert.True(subs.All(sub => Guid.Parse(sub.Client.ID) == Guid.Parse(client2Id) || Guid.Parse(sub.Client.__PrimaryKey.ToString()) == Guid.Parse(client2Id))); Assert.True(subs.All(sub => Guid.Parse(sub.MessageType.ID) == Guid.Parse(messageType2Id) || Guid.Parse(sub.MessageType.__PrimaryKey.ToString()) == Guid.Parse(messageType2Id))); } }
public void TestSubscribtionCreate() { foreach (var dataService in DataServices) { // Arrange. const string clientId = "FDF33DF1-5DCA-41F9-A2E4-3B5C7E103452"; const string messageType1Id = "EB6EC229-5E93-4B76-9993-5A1589787421"; const string messageType2Id = "C8802C67-AC1B-497C-A707-5FF4191E0083"; const string messageType3Id = "BC3F54C6-4E2F-43DA-B124-A0771F8F200C"; var service = new CachedSubscriptionsManager(GetMockLogger(), dataService, GetMockStatisticsService()); service.CreateClient(clientId, "TestClient1"); service.CreateMessageType(new NameCommentStruct { Id = messageType1Id, Name = "TestMessageType1", Comment = "ForTest" }); service.CreateMessageType(new NameCommentStruct { Id = messageType2Id, Name = "TestMessageType2", Comment = "ForTest" }); service.CreateMessageType(new NameCommentStruct { Id = messageType3Id, Name = "TestMessageType3", Comment = "ForTest" }); service.Prepare(); // Act && Assert. // Creation. service.SubscribeOrUpdate(clientId, messageType1Id, false, null); service.SubscribeOrUpdate(clientId, messageType2Id, true, TransportType.HTTP); Assert.Throws <ArgumentNullException>(() => service.SubscribeOrUpdate(clientId, messageType3Id, true, null)); Assert.Throws <ArgumentException>(() => service.SubscribeOrUpdate("B5D96C32-2B50-4514-B123-5D8D961F0AF0", messageType3Id, false, null)); Assert.Throws <ArgumentException>(() => service.SubscribeOrUpdate(clientId, "B5D96C32-2B50-4514-B123-5D8D961F0AF0", false, null)); var subs = service.GetSubscriptions(); Assert.Equal(subs.Count(), 2); Assert.True(subs.All(sub => Guid.Parse(sub.Client.ID) == Guid.Parse(clientId) || Guid.Parse(sub.Client.__PrimaryKey.ToString()) == Guid.Parse(clientId))); var sub1 = subs.FirstOrDefault(sub => Guid.Parse(sub.MessageType.ID) == Guid.Parse(messageType1Id) || Guid.Parse(sub.MessageType.__PrimaryKey.ToString()) == Guid.Parse(messageType1Id)); var sub2 = subs.FirstOrDefault(sub => Guid.Parse(sub.MessageType.ID) == Guid.Parse(messageType2Id) || Guid.Parse(sub.MessageType.__PrimaryKey.ToString()) == Guid.Parse(messageType2Id)); Assert.True(!sub1.IsCallback && sub1.TransportType == TransportType.WCF && DateTime.Now < sub1.ExpiryDate); Assert.True(sub2.IsCallback && sub2.TransportType == TransportType.HTTP && DateTime.Now < sub2.ExpiryDate); // Updating. service.SubscribeOrUpdate(clientId, messageType1Id, true, TransportType.HTTP, DateTime.Now.AddDays(-1)); service.SubscribeOrUpdate(clientId, messageType2Id, false, null, DateTime.Now.AddDays(-1)); subs = service.GetSubscriptions(false); Assert.Equal(subs.Count(), 2); Assert.True(subs.All(sub => Guid.Parse(sub.Client.ID) == Guid.Parse(clientId) || Guid.Parse(sub.Client.__PrimaryKey.ToString()) == Guid.Parse(clientId))); sub1 = subs.FirstOrDefault(sub => Guid.Parse(sub.MessageType.ID) == Guid.Parse(messageType1Id) || Guid.Parse(sub.MessageType.__PrimaryKey.ToString()) == Guid.Parse(messageType1Id)); sub2 = subs.FirstOrDefault(sub => Guid.Parse(sub.MessageType.ID) == Guid.Parse(messageType2Id) || Guid.Parse(sub.MessageType.__PrimaryKey.ToString()) == Guid.Parse(messageType2Id)); Assert.True(sub1.IsCallback && sub1.TransportType == TransportType.HTTP && DateTime.Now > sub1.ExpiryDate); Assert.True(!sub2.IsCallback && sub2.TransportType == TransportType.HTTP && DateTime.Now > sub2.ExpiryDate); // Update all. service.UpdateAllSubscriptions(clientId); subs = service.GetSubscriptions(); Assert.Equal(subs.Count(), 2); Assert.True(subs.All(sub => sub.ExpiryDate > DateTime.Now)); } }
public void TestSubscriptionsLoading() { // Arrange. const string client1Id = "03FE3B98-2D09-4032-A5BF-03BEDF86F4F4"; const string client2Id = "C94B558A-D961-4ABA-8F67-C52AE377FFA5"; const string messageType1Id = "EB6EC229-5E93-4B76-9993-5A1589787421"; const string messageType2Id = "C8802C67-AC1B-497C-A707-5FF4191E0083"; const string messageType3Id = "BC3F54C6-4E2F-43DA-B124-A0771F8F200C"; var subscriptions = new DataObject[] { new Subscription() { Client = new Client() { __PrimaryKey = Guid.Parse(client1Id) }, MessageType = new MessageType() { __PrimaryKey = Guid.Parse(messageType1Id) }, ExpiryDate = new DateTime(DateTime.Now.Ticks + 100000000), IsCallback = true }, new Subscription() { Client = new Client() { __PrimaryKey = Guid.Parse(client1Id) }, MessageType = new MessageType() { __PrimaryKey = Guid.Parse(messageType3Id) }, ExpiryDate = new DateTime(DateTime.Now.Ticks - 100000000), IsCallback = true }, new Subscription() { Client = new Client() { __PrimaryKey = Guid.Parse(client1Id) }, MessageType = new MessageType() { __PrimaryKey = Guid.Parse(messageType2Id) }, ExpiryDate = new DateTime(DateTime.Now.Ticks + 100000000), IsCallback = false }, new Subscription() { Client = new Client() { __PrimaryKey = Guid.Parse(client2Id) }, MessageType = new MessageType() { __PrimaryKey = Guid.Parse(messageType2Id) }, ExpiryDate = new DateTime(DateTime.Now.Ticks + 100000000), IsCallback = false } }; var dataServiceMock = new Mock <IDataService>(); dataServiceMock.Setup(f => f.LoadObjects(It.Is <LoadingCustomizationStruct>(lcs => lcs.View.DefineClassType == typeof(Subscription)))).Returns(subscriptions); var service = new CachedSubscriptionsManager(GetMockLogger(), dataServiceMock.Object, GetMockStatisticsService()); service.Prepare(); // Act && Assert. var subs = service.GetSubscriptions(); Assert.Equal(subs.Count(), 3); subs = service.GetSubscriptions(false); Assert.Equal(subs.Count(), 4); subs = service.GetSubscriptions(client2Id); Assert.Equal(subs.Count(), 1); Assert.True(subs.All(sub => Guid.Parse(sub.Client.__PrimaryKey.ToString()) == Guid.Parse(client2Id))); subs = service.GetSubscriptions(client2Id, false); Assert.Equal(subs.Count(), 1); Assert.True(subs.All(sub => Guid.Parse(sub.Client.__PrimaryKey.ToString()) == Guid.Parse(client2Id))); subs = service.GetCallbackSubscriptions(); Assert.Equal(subs.Count(), 1); Assert.True(subs.All(sub => sub.IsCallback)); subs = service.GetCallbackSubscriptions(false); Assert.Equal(subs.Count(), 2); Assert.True(subs.All(sub => sub.IsCallback)); subs = service.GetSubscriptionsForMsgType(messageType2Id, client2Id); Assert.Equal(subs.Count(), 1); Assert.True(subs.All(sub => Guid.Parse(sub.MessageType.__PrimaryKey.ToString()) == Guid.Parse(messageType2Id))); }