public void GetRequestByRequestIdReturnsNullIfRequestIdIsNotFound() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Assert.AreEqual(0, queue.GetCount()); Request request1 = CreateRequest(); request1.Behavior.Tag = "A"; Request request2 = CreateRequest(); request2.Behavior.Tag = "B"; queue.Enqueue(request1); queue.Enqueue(request2); Assert.AreEqual(2, queue.GetCount()); Request req = queue.GetRequest(Guid.Empty); Assert.IsNull(req); Assert.AreEqual(2, queue.GetCount()); } }
public void CanGetRequestByRequestId() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Assert.AreEqual(0, queue.GetCount()); Request request1 = CreateRequest(); request1.Behavior.Tag = "A"; Request request2 = CreateRequest(); request2.Behavior.Tag = "B"; Request request3 = CreateRequest(); request3.Behavior.Tag = "A"; queue.Enqueue(request1); queue.Enqueue(request2); queue.Enqueue(request3); Assert.AreEqual(3, queue.GetCount()); Request req = queue.GetRequest(request2.RequestId); queue.Remove(req); Assert.IsNotNull(req); Assert.IsTrue(AreEqual(request2, req)); Assert.AreEqual(2, queue.GetCount()); } }
public void CreatesTableWhenNotPresent() { string tableName = "Requests"; using (SmartClientDatabase database = GetDatabase()) { Assert.IsFalse(database.TableExists(tableName)); IRequestQueue queue = new DatabaseRequestQueue(database, tableName); Assert.IsTrue(database.TableExists(tableName)); } }
public void UsesDefaultTableNameWhenNotSupplied() { string tableName = "Requests"; using (SmartClientDatabase database = GetDatabase()) { Assert.IsFalse(database.TableExists(tableName)); IRequestQueue queue = new DatabaseRequestQueue(database); Assert.IsTrue(database.TableExists(tableName)); } }
public void CanEnqueueRequestWithProxyFactoryTypeover255CharactersLong() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Request request1 = CreateRequest(); request1.OnlineProxyType = typeof(ClassWithReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName); queue.Enqueue(request1); Assert.AreEqual(1, queue.GetCount()); } }
public void AddARequestIncreasesCount() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); int expected = queue.GetCount() + 1; Request request = CreateRequest(); queue.Enqueue(request); Assert.AreEqual(expected, queue.GetCount()); } }
public void EnqueingRequestWithMissingOnlineProxyTypeThrows() { Request request = new Request(); request.MethodName = "Method"; request.Endpoint = "Endpoint"; request.Behavior = new OfflineBehavior(); using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); queue.Enqueue(request); } }
public void MessagesInQueueSurviveApplicationRestart() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Request request1 = CreateRequest(); queue.Enqueue(request1); queue = new DatabaseRequestQueue(database, "Requests"); Assert.AreEqual(1, queue.GetCount()); Request request2 = queue.GetNextRequest(); Assert.IsTrue(AreEqual(request1, request2)); } }
public void CanEnqueueRequestWithEndpointName300CharactersLong() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Request request1 = CreateRequest(); String name = new string('s', 300); request1.Endpoint = name; queue.Enqueue(request1); Assert.AreEqual(1, queue.GetCount()); Assert.AreEqual(name, queue.GetNextRequest().Endpoint); } }
public void RemovingARequestsDecreasesCount() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Request request = CreateRequest(); Assert.AreEqual(0, queue.GetCount()); queue.Enqueue(request); Assert.AreEqual(1, queue.GetCount()); queue.Remove(request); Assert.AreEqual(0, queue.GetCount()); } }
public void CannotEnquequeRequestsWithSameId() { string tableName = "Requests"; using (SmartClientDatabase database = GetDatabase()) { Request request1 = CreateRequest(); Request request2 = CreateRequest(); request2.RequestId = request1.RequestId; IRequestQueue queue = new DatabaseRequestQueue(database, tableName); queue.Enqueue(request1); queue.Enqueue(request2); } }
public void OnEnqueuedEventIsFiredWhenRequestIsEnqueued() { bool eventFired = false; using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); queue.RequestEnqueued += delegate(object sender, RequestEnqueuedEventArgs args) { eventFired = true; }; Assert.IsFalse(eventFired); Request request1 = CreateRequest(); request1.Behavior.Stamps = 7; queue.Enqueue(request1); Assert.IsTrue(eventFired); Assert.AreEqual(1, queue.GetCount()); } }
public void OnRequestEnqueuedTheQueuedDateIsFilledInTheRequestByTheQueue() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Request request1 = CreateRequest(); request1.Behavior.QueuedDate = null; Assert.IsNull(request1.Behavior.QueuedDate); DateTime before = DateTime.Now; queue.Enqueue(request1); DateTime after = DateTime.Now; Assert.IsNotNull(request1.Behavior.QueuedDate); Assert.IsTrue(before <= request1.Behavior.QueuedDate); Assert.IsTrue(after >= request1.Behavior.QueuedDate); } }
public void RequestCanBeQueuedWhenOptionalPropertiesNotSet() { Request request = new Request(); request.Endpoint = "Endpoint"; request.MethodName = "Method"; request.OnlineProxyType = typeof(DatabaseRequestQueueFixture); request.Behavior = new OfflineBehavior(); request.Behavior.ProxyFactoryType = typeof(MockProxyFactory); using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Assert.AreEqual(0, queue.GetCount()); queue.Enqueue(request); Assert.AreEqual(1, queue.GetCount()); } }
public void GetNextRequestDoesntRemoveItFromQueue() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Assert.AreEqual(0, queue.GetCount()); Request request = CreateRequest(); queue.Enqueue(request); Assert.AreEqual(1, queue.GetCount()); Request dequeued = queue.GetNextRequest(); Assert.AreEqual(1, queue.GetCount()); Assert.IsTrue(AreEqual(request, dequeued)); } }
public void CanEnqueueRequestsWithNullParameters() { string tableName = "Requests"; using (SmartClientDatabase database = GetDatabase()) { Assert.IsFalse(database.TableExists(tableName)); IRequestQueue queue = new DatabaseRequestQueue(database, tableName); Request req = CreateRequest(); req.CallParameters = CallParameters.ToArray("Test", null, 123, null); // Throws Exception queue.Enqueue(req); Request result = queue.GetNextRequest(); Assert.IsTrue(AreEqual(req, result)); } }
public void RequestsByPriceAreFifo() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Assert.AreEqual(0, queue.GetCount()); Request request1 = CreateRequest(); request1.Behavior.Stamps = 7; Request request2 = CreateRequest(); request2.Behavior.Stamps = 6; Request request3 = CreateRequest(); request3.Behavior.Stamps = 1; Request request4 = CreateRequest(); request4.Behavior.Stamps = 5; queue.Enqueue(request1); queue.Enqueue(request2); queue.Enqueue(request3); queue.Enqueue(request4); Assert.AreEqual(4, queue.GetCount()); List <Request> list = new List <Request>(); foreach (Request req in queue.GetRequests(5)) { list.Add(req); queue.Remove(req); } Assert.AreEqual(3, list.Count); Assert.IsTrue(AreEqual(request1, list[0])); Assert.IsTrue(AreEqual(request2, list[1])); Assert.IsTrue(AreEqual(request4, list[2])); Assert.AreEqual(1, queue.GetCount()); } }
public void CanGetRequestsIteratorByTag() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Assert.AreEqual(0, queue.GetCount()); Request request1 = CreateRequest(); request1.Behavior.Tag = "A"; Request request2 = CreateRequest(); request2.Behavior.Tag = "B"; Request request3 = CreateRequest(); request3.Behavior.Tag = "A"; queue.Enqueue(request1); queue.Enqueue(request2); queue.Enqueue(request3); Assert.AreEqual(3, queue.GetCount()); List <Request> list = new List <Request>(); foreach (Request req in queue.GetRequests("A")) { list.Add(req); queue.Remove(req); } Assert.AreEqual(2, list.Count); Assert.IsTrue(AreEqual(request1, list[0])); Assert.IsTrue(AreEqual(request3, list[1])); Assert.AreEqual(1, queue.GetCount()); } }
public void RequestsIteratorIsFifo() { using (SmartClientDatabase database = GetDatabase()) { IRequestQueue queue = new DatabaseRequestQueue(database, "Requests"); Assert.AreEqual(0, queue.GetCount()); Request request1 = CreateRequest(); Request request2 = CreateRequest(); Request request3 = CreateRequest(); Request request4 = CreateRequest(); queue.Enqueue(request1); queue.Enqueue(request2); queue.Enqueue(request3); queue.Enqueue(request4); Assert.AreEqual(4, queue.GetCount()); List <Request> list = new List <Request>(); foreach (Request req in queue.GetRequests()) { list.Add(req); queue.Remove(req); } Assert.AreEqual(4, list.Count); Assert.IsTrue(AreEqual(request1, list[0])); Assert.IsTrue(AreEqual(request2, list[1])); Assert.IsTrue(AreEqual(request3, list[2])); Assert.IsTrue(AreEqual(request4, list[3])); Assert.AreEqual(0, queue.GetCount()); } }