コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        /// <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);
                    }
                }
            }
        }
コード例 #6
0
 private bool ChatViewModelOnAddNewMessage(object sender, SimpleConversation conversation)
 {
     return(CurrentChatViewModel == null || conversation != CurrentChatViewModel.Conversation || AddNewMessage?.Invoke(this, conversation) == true);
 }