public async Task GetConversationGroupAsync_UsesTransaction()
        {
            // Arrange
            await InitializeDatabaseAsync();
            var provider1 = new SqlServerServiceBroker(connection);
            var provider2 = new SqlServerServiceBroker(new SqlConnection(connection.ConnectionString));
            var handle = await BeginDialogAsync();
            IEnumerable<ReceivedMessage> beforeRollback;
            IEnumerable<ReceivedMessage> afterRollback;
            await connection.ExecuteAsync("SEND ON CONVERSATION @handle;", new { handle });

            // Act
            using (var transaction = await provider1.BeginTransactionAsync())
            {
                var arguments = new GetConversationGroupArguments("TargetQueue");
                var groupId = await provider1.GetConversationGroupAsync(arguments);
                var receiveArgs = new ReceiveArguments("TargetQueue")
                {
                    Predicate = groupId.Value,
                    WaitFor = TimeSpan.FromSeconds(1),
                };

                beforeRollback = await provider2.ReceiveAsync(receiveArgs);
                transaction.Rollback();
                afterRollback = await provider2.ReceiveAsync(receiveArgs);
            }

            // Assert
            Assert.Empty(beforeRollback);
            Assert.NotEmpty(afterRollback);
        }
Example #2
0
        public void GetConversationGroupArguments_Constructor_SetsProperties()
        {
            // Arrange
            var queue = "TestQueue";

            // Act
            var arguments = new GetConversationGroupArguments(queue);

            // Assert
            Assert.Equal(queue, arguments.QueueName);
        }