public void CallingGetEnumeratorTwiceThrows() { var mockClient = new MockTelegramBotClient(); var receiver = new BlockingUpdateReceiver(mockClient); _ = receiver.GetAsyncEnumerator(); Assert.Throws <InvalidOperationException>(() => receiver.GetAsyncEnumerator()); }
public async Task MoveNextThrowsIfEnumeratorIsDisposed() { var mockClient = new MockTelegramBotClient("foo"); var receiver = new BlockingUpdateReceiver(mockClient); var enumerator = receiver.GetAsyncEnumerator(); await enumerator.MoveNextAsync(); await enumerator.DisposeAsync(); await Assert.ThrowsAnyAsync <OperationCanceledException>( async() => await enumerator.MoveNextAsync() ); }
public async Task ThrowsOnMoveNextIfCancelled() { var mockClient = new MockTelegramBotClient("foo", "bar"); var receiver = new BlockingUpdateReceiver(mockClient); var cts = new CancellationTokenSource(); await using var enumerator = receiver.GetAsyncEnumerator(cts.Token); Assert.True(await enumerator.MoveNextAsync()); Assert.Equal("foo", enumerator.Current.Message !.Text); mockClient.Options.RequestDelay = 1000; cts.CancelAfter(200); await Assert.ThrowsAnyAsync <OperationCanceledException>(async() => await enumerator.MoveNextAsync()); }
public async Task ExceptionIsNotCaughtIfThereIsNoErrorHandler() { var mockClient = new MockTelegramBotClient { Options = { ExceptionToThrow = new("Oops") } }; var receiver = new BlockingUpdateReceiver(mockClient); await using var enumerator = receiver.GetAsyncEnumerator(); Exception ex = await Assert.ThrowsAsync <Exception>(async() => await enumerator.MoveNextAsync()); Assert.Same(mockClient.Options.ExceptionToThrow, ex); }
public async Task ReceivesOnlyOnMoveNextAsync() { var mockClient = new MockTelegramBotClient("foo", "bar"); var receiver = new BlockingUpdateReceiver(mockClient); Assert.Equal(2, mockClient.MessageGroupsLeft); await using var enumerator = receiver.GetAsyncEnumerator(); Assert.Equal(2, mockClient.MessageGroupsLeft); Assert.True(await enumerator.MoveNextAsync()); Assert.Equal("foo", enumerator.Current.Message !.Text); Assert.Equal(1, mockClient.MessageGroupsLeft); Assert.True(await enumerator.MoveNextAsync()); Assert.Equal("bar", enumerator.Current.Message !.Text); Assert.Equal(0, mockClient.MessageGroupsLeft); }