public void Invoke_ValidData_AddsMessageToDatabaseWithCorrectValues() { var messageData = new MessageModel { Text = "Testmessage", UserRoom = new UserRoomModel() }; DataAccess.Models.Message messageSaved = null; var mockedMessageRepository = new Mock <IMessageRepository>(); mockedMessageRepository.Setup(r => r.Add(It.IsAny <DataAccess.Models.Message>())) .Callback <DataAccess.Models.Message>(u => messageSaved = u); var mockedUnitOfWork = new Mock <IUnitOfWork>(); var action = new AddNewMessage(mockedMessageRepository.Object, mockedUnitOfWork.Object); // action action.Invoke(messageData); // assert mockedMessageRepository.Verify(r => r.Add(It.IsAny <DataAccess.Models.Message>()), Times.Once()); mockedUnitOfWork.Verify(r => r.Save(), Times.Exactly(1)); Assert.Equal("Testmessage", messageSaved.Text); }
public void Invoke_InvalidData_AddNorSaveAreCalled() { // prepare var messageToAdd = new MessageModel(); var mockedMessageRepository = new Mock <IMessageRepository>(); var mockedUnitOfWork = new Mock <IUnitOfWork>(); var action = new AddNewMessage(mockedMessageRepository.Object, mockedUnitOfWork.Object); // action var result = action.Invoke(messageToAdd); // assert Assert.Equal(Guid.Empty, result); mockedMessageRepository.Verify(r => r.Add(It.IsAny <DataAccess.Models.Message>()), Times.Never); mockedUnitOfWork.Verify(r => r.Save(), Times.Never); }
public void Invoke_NoUserRoom_AddNorSaveAreCalled() { var messageData = new MessageModel { Text = "Testmessage" }; var mockedMessageRepository = new Mock <IMessageRepository>(); var mockedUnitOfWork = new Mock <IUnitOfWork>(); var action = new AddNewMessage(mockedMessageRepository.Object, mockedUnitOfWork.Object); // action var result = action.Invoke(messageData); // assert mockedMessageRepository.Verify(r => r.Add(It.IsAny <DataAccess.Models.Message>()), Times.Never); mockedUnitOfWork.Verify(r => r.Save(), Times.Never); Assert.Equal(Guid.Empty, result); }
private void ConversationCollectionOnCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { SetLastMessage(); if (e.Action != NotifyCollectionChangedAction.Add) { return; } if (!AddNewMessage?.Invoke(this, Conversation) == true) { return; } foreach (var unused in e.NewItems) { Conversation.NewMessages++; } NewMessagesChanged?.Invoke(this, EventArgs.Empty); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e">[0]queue name ; [1] callback method</param> private void bgwConsume_DoWork(object sender, DoWorkEventArgs e) { Console.WriteLine("bgwConsume_DoWork Done!"); object[] param = (object[])e.Argument; var factory = new ConnectionFactory(); //サーバー名 factory.HostName = "godpubtest"; //RabbitServerのユーザー名 factory.UserName = "******"; //RabbitServerのパスワード factory.Password = "******"; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { //Useage:③ //channel.ExchangeDeclare(exchange: exchangeName, type: "fanout"); // Temporary queues var queueName = (string)param[0]; if (queueName.Contains("Prority")) { //Bindings With Arguments IDictionary <String, Object> args = new Dictionary <String, Object>(); args.Add("x-max-priority", 5); channel.QueueDeclare(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: args); } else { // Bindings channel.QueueDeclare(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: null); } var consumer = new EventingBasicConsumer(channel); consumer.Received += (ch, ea) => { var body = SerializeTool.GetBody(ea.Body); IBasicProperties basicProperties = ea.BasicProperties; Console.WriteLine("Message received by the event based consumer. Check the debug window for details."); Debug.WriteLine("------------------------------------------------------------------"); Debug.WriteLine(string.Concat("Message received from the exchange ", ea.Exchange)); Debug.WriteLine(string.Concat("Content type: ", basicProperties.ContentType)); Debug.WriteLine(string.Concat("Consumer tag: ", ea.ConsumerTag)); Debug.WriteLine(string.Concat("Delivery tag: ", ea.DeliveryTag)); Debug.WriteLine(string.Concat("Message id: ", body.MsgID)); Debug.WriteLine(string.Concat("Message: ", body.MsgContent)); AddNewMessage a = (AddNewMessage)param[1]; this.Invoke(a, body); // 如果 channel.BasicConsume 中参数 noAck 设置为 false,必须加上消息确认语句 // Message acknowledgment(消息确认机制作用) channel.BasicAck(ea.DeliveryTag, false); }; try { string consumeID = channel.BasicConsume(queue: queueName, autoAck: false,/* Message acknowledgment(消息确认机制) */ consumer: consumer); Console.WriteLine(" Consume ID={0}", consumeID); while (isListening) { //Console.WriteLine(" Consume status={0}", consumer.IsRunning); } } catch (Exception ex) { Debug.WriteLine("Consume Register Failure:{0}", ex.Message); } } } }
private bool ChatViewModelOnAddNewMessage(object sender, SimpleConversation conversation) { return(CurrentChatViewModel == null || conversation != CurrentChatViewModel.Conversation || AddNewMessage?.Invoke(this, conversation) == true); }