public void ReceiveMessages_ExeQueryFirstParamIsDBNull_ObserverOnNextNotCalled() { var mocks = CreateMocks(); var mockConnection = mocks.Item1; var mockTransaction = mocks.Item2; var mockCommand = mocks.Item3; var mockParams = mocks.Item4; var mockObserver = CreateMockObserver(); var client = new BrokerClient(() => mockConnection.Object, _mockOpenAsync.Object, _mockExeNonQueryAsync.Object); mockConnection.Setup(c => c.Dispose()).Callback(() => _wait.Set()); mockParams.Setup(p => p[It.IsAny <int>()]) .Callback(() => new SqlParameter("", DBNull.Value)); client.Subscribe(mockObserver.Object); var running = client.ReceiveMessages(QueueName); _wait.WaitOne(); running.StopReceiving(); mockObserver.Verify(o => o.OnNext(It.Is <BrokerMessage>(msg => msg == BrokerMessage.Empty)), Times.Never()); ExpectReceiveMessage(mocks); ExpectAllDisposed(mocks); }
public void ReceiveMessages_SBEndDialogMessageReceived_EndDialogCalled() { var mockObserver = CreateMockObserver(); var mocks = CreateMocks(ServiceBrokerEndDialogMessageType); var mockConnection = mocks.Item1; var mockCommand = mocks.Item3; var mockParams = mocks.Item4; mockConnection.Setup(c => c.Dispose()).Callback(fun(() => { var count = 0; return(new Action(() => { if (++count == 2) { _wait.Set(); } })); })()); var client = new BrokerClient(() => mocks.Item1.Object, _mockOpenAsync.Object, _mockExeNonQueryAsync.Object); client.Subscribe(mockObserver.Object); var running = client.ReceiveMessages(QueueName); _wait.WaitOne(); running.StopReceiving(); ExpectEndDialog(mocks); ExpectAllDisposed(mocks); }
public void StopReceiving_NoErrors_ResultIsNotFailure_SubscribersCleared() { var mocks = CreateMocks(); var mockLogger = new Mock <Log>(); var client = new BrokerClient( () => mocks.Item1.Object, _mockOpenAsync.Object, _mockExeNonQueryAsync.Object, mockLogger.Object); var mockObserver1 = CreateMockObserver(); mockObserver1.Setup(f => f.OnCompleted()).Throws <InvalidOperationException>(); var mockObserver2 = CreateMockObserver(); client.Subscribe(mockObserver1.Object); client.Subscribe(mockObserver2.Object); Expect(client.ReceiveMessages(QueueName).StopReceiving().Failed, True); Expect(client.Subscribers.Count, EqualTo(0)); mockObserver1.Verify(o => o.OnCompleted(), Times.Once()); mockObserver2.Verify(o => o.OnCompleted(), Times.Once()); mockLogger.Verify(f => f(It.IsRegex("Receiver stopped"), It.IsAny <string>(), It.IsAny <TraceEventType>()), Times.Once()); }
public void ReceiveMessages_SBErrorMessageReceived_ObserversOnErrorsCalled() { var mockObserver = CreateMockObserver(); mockObserver.Setup(o => o.OnError(It.IsAny <Exception>(), It.IsAny <Maybe <BrokerMessage> >())).Callback(() => _wait.Set()); var mocks = CreateMocks(ServiceBrokerErrorMessageType); var client = new BrokerClient(() => mocks.Item1.Object, _mockOpenAsync.Object, _mockExeNonQueryAsync.Object); client.Subscribe(mockObserver.Object); var running = client.ReceiveMessages(QueueName); _wait.WaitOne(); running.StopReceiving(); mockObserver.Verify(o => o.OnError(It.Is <Exception>(e => e.Message == MessageText), It.IsAny <Maybe <BrokerMessage> >())); ExpectAll(mocks); }
public void ReceiveMessages_ObserverOnErrorErrors_ErrorLogged() { var mockLogger = new Mock <Log>(); mockLogger .Setup(f => f(It.IsAny <string>(), GeneralLogCategory, It.Is <TraceEventType>(t => t == TraceEventType.Error))) .Callback(() => _wait.Set()); var mocks = CreateMocks(); var mockConnection = mocks.Item1; var client = new BrokerClient( () => mockConnection.Object, _mockOpenAsync.Object, _mockExeNonQueryAsync.Object, mockLogger.Object); var mockObserver = CreateMockObserver(); mockObserver.SetupSequence(o => o.OnNext(It.IsAny <BrokerMessage>())) .Throws(new Exception(FailVal)) .Throws(new Exception($"{FailVal} 2")) .Pass(); mockObserver.SetupSequence(o => o.OnError(It.IsAny <Exception>(), It.IsAny <Maybe <BrokerMessage> >())) .Pass() .Throws(new Exception("OnError Fail")); client.Subscribe(mockObserver.Object); var running = client.ReceiveMessages("TestQueue"); _wait.WaitOne(); running.StopReceiving(); mockObserver.Verify(o => o.OnError(It.Is <Exception>(e => e.Message == FailVal), It.IsAny <Maybe <BrokerMessage> >())); mockLogger.Verify(l => l(It.IsRegex($"{FailVal} 2"), GeneralLogCategory, TraceEventType.Error)); ExpectAll(mocks); }
public void ReceiveMessages_CommandCorrect_ObserversOnNextCalled() { var mocks = CreateMocks(MessageType); var mockConnection = mocks.Item1; var mockObserver = CreateMockObserver(); mockObserver.Setup(o => o.OnNext(It.IsAny <BrokerMessage>())) .Callback(() => _wait.Set()); var client = new BrokerClient( () => mockConnection.Object, _mockOpenAsync.Object, _mockExeNonQueryAsync.Object); client.Subscribe(mockObserver.Object); var running = client.ReceiveMessages(QueueName); _wait.WaitOne(); running.StopReceiving(); mockObserver.Verify(o => o.OnNext(It.Is <BrokerMessage>(m => m.MessageType == MessageType))); ExpectAll(mocks); }