public async Task SendAsync_UsesTransaction() { // Arrange await InitializeDatabaseAsync(); var provider = new SqlServerServiceBroker(connection); var handle = await BeginDialogAsync(); // Act using (var transaction = await provider.BeginTransactionAsync()) { await provider.SendAsync(new SendArguments(handle)); transaction.Rollback(); } var received = await connection.QueryAsync("SELECT * FROM [TargetQueue] WITH (NOLOCK)"); // Assert Assert.Empty(received); }
public async Task SendAsync_RespectsMessageBody() { // Arrange await InitializeDatabaseAsync(); var provider = new SqlServerServiceBroker(connection); var handle = await BeginDialogAsync(); var body = "Quoth the Sandler, Barrymore"; // Act await provider.SendAsync(new SendArguments(handle) { MessageBody = body, }); var received = await connection.QueryAsync("SELECT CAST(message_body AS nvarchar(max)) AS message_body FROM [TargetQueue] WITH (NOLOCK)"); // Assert Assert.Equal(body, received.Single().message_body); }
public async Task SendAsync_RespectsMultipleConversationHandles() { // Arrange await InitializeDatabaseAsync(); var provider = new SqlServerServiceBroker(connection); var handle1 = await BeginDialogAsync(); var handle2 = await BeginDialogAsync(); // Act await provider.SendAsync(new SendArguments(handle1, handle2)); var received = await connection.QueryAsync("SELECT * FROM [TargetQueue] WITH (NOLOCK)"); // Assert Assert.Equal(2, received.Count()); }
public async Task SendAsync_RespectsMessageType() { // Arrange await InitializeDatabaseAsync(); var provider = new SqlServerServiceBroker(connection); var handle = await provider.BeginDialogAsync( new BeginDialogArguments("InitiatorService", "TargetService") { ContractName = "TestContract", }); // Act await provider.SendAsync(new SendArguments(handle) { MessageTypeName = "TestMessageType", }); var received = await connection.QueryAsync("SELECT * FROM [TargetQueue] WITH (NOLOCK)"); // Assert Assert.Equal("TestMessageType", received.Single().message_type_name); }
public async Task SendAsync_ArgumentsCannotBeNull() { // Arrange var provider = new SqlServerServiceBroker(connection); // Act Func<Task> call = async () => await provider.SendAsync(null); // Assert await Assert.ThrowsAsync<ArgumentNullException>("arguments", call); }