public async Task Failed_Subscribe_with_null_stream() { /* Given */ string id = "1"; var payload = new OperationMessagePayload(); var context = new MessageHandlingContext(_server, null); _executer.ExecuteAsync(null, null, null, null, null).ReturnsForAnyArgs( new SubscriptionExecutionResult { Streams = new Dictionary <string, IObservable <ExecutionResult> > { { "1", null } } }); /* When */ await _sut.SubscribeOrExecuteAsync(id, payload, context); /* Then */ await _writer.Received().SendAsync( Arg.Is <OperationMessage>( message => message.Id == id && message.Type == MessageType.GQL_ERROR)); }
public async Task Write_Complete_on_unsubscribe() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); var result = new SubscriptionExecutionResult { Streams = new Dictionary <string, IObservable <ExecutionResult> > { { "1", Substitute.For <IObservable <ExecutionResult> >() } } }; var sut = new Subscription(id, payload, result, _writer, null, new NullLogger <Subscription>()); /* When */ await sut.UnsubscribeAsync(); /* Then */ await _writer.Received().SendAsync( Arg.Is <OperationMessage>( message => message.Id == id && message.Type == MessageType.GQL_COMPLETE)); }
public async Task Unsubscribe_from_stream() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); var unsubscribe = Substitute.For <IDisposable>(); var stream = Substitute.For <IObservable <ExecutionResult> >(); stream.Subscribe(null).ReturnsForAnyArgs(unsubscribe); var result = new SubscriptionExecutionResult { Streams = new Dictionary <string, IObservable <ExecutionResult> > { { "op", stream } } }; var sut = new Subscription(id, payload, result, _writer, null, new NullLogger <Subscription>()); /* When */ await sut.UnsubscribeAsync(); /* Then */ unsubscribe.Received().Dispose(); }
public void On_stream_complete() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); var stream = new ReplaySubject <ExecutionResult>(1); var result = new SubscriptionExecutionResult { Streams = new Dictionary <string, IObservable <ExecutionResult> > { { "op", stream } } }; var completed = Substitute.For <Action <Subscription> >(); var sut = new Subscription(id, payload, result, _writer, completed, new NullLogger <Subscription>()); /* When */ stream.OnCompleted(); /* Then */ Assert.False(stream.HasObservers); completed.Received().Invoke(sut); _writer.Received().Post( Arg.Is <OperationMessage>( message => message.Id == id && message.Type == MessageType.GQL_COMPLETE)); }
public void On_data_from_stream() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); var stream = new ReplaySubject <ExecutionResult>(1); var result = new SubscriptionExecutionResult { Streams = new Dictionary <string, IObservable <ExecutionResult> > { { "op", stream } } }; var expected = new ExecutionResult(); var sut = new Subscription(id, payload, result, _writer, null, new NullLogger <Subscription>()); /* When */ stream.OnNext(expected); /* Then */ _writer.Received().Post( Arg.Is <OperationMessage>( message => message.Id == id && message.Type == MessageType.GQL_DATA)); }
public async Task Failed_Subscribe_writes_error() { /* Given */ string id = "1"; var payload = new OperationMessagePayload(); var context = new MessageHandlingContext(_server, null); _executer.ExecuteAsync(null, null, null, null, null).ReturnsForAnyArgs( new SubscriptionExecutionResult { Errors = new ExecutionErrors { new ExecutionError("error") } }); /* When */ await _sut.SubscribeOrExecuteAsync(id, payload, context); /* Then */ await _writer.Received().SendAsync( Arg.Is <OperationMessage>( message => message.Id == id && message.Type == MessageType.GQL_ERROR)); }
public async Task Subscribe_adds() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); /* When */ await _sut.SubscribeOrExecuteAsync(id, payload, _writer); /* Then */ Assert.Single(_sut, sub => sub.Id == id); }
public async Task Subscribe_adds() { /* Given */ string id = "1"; var payload = new OperationMessagePayload(); var context = new MessageHandlingContext(_server, null); /* When */ await _sut.SubscribeOrExecuteAsync(id, payload, context); /* Then */ Assert.Single(_sut, sub => sub.Id == id); }
public async Task Unsubscribe_removes() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); await _sut.SubscribeOrExecuteAsync(id, payload, _writer); /* When */ await _sut.UnsubscribeAsync(id); /* Then */ Assert.Empty(_sut); }
public async Task Subscribe_executes() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); /* When */ await _sut.SubscribeOrExecuteAsync(id, payload, _writer); /* Then */ await _executer.Received().ExecuteAsync( Arg.Is(payload.OperationName), Arg.Is(payload.Query), Arg.Any <dynamic>()); }
public async Task Unsubscribe_removes() { /* Given */ string id = "1"; var payload = new OperationMessagePayload(); var context = new MessageHandlingContext(_server, null); await _sut.SubscribeOrExecuteAsync(id, payload, context); /* When */ await _sut.UnsubscribeAsync(id); /* Then */ Assert.Empty(_sut); }
public async Task Unsubscribe_writes_complete() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); await _sut.SubscribeOrExecuteAsync(id, payload, _writer); /* When */ await _sut.UnsubscribeAsync(id); /* Then */ await _writer.Received().SendAsync( Arg.Is <OperationMessage>( message => message.Id == id && message.Type == MessageType.GQL_COMPLETE)); }
public async Task Subscribe_executes() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); var context = new MessageHandlingContext(_server, null); /* When */ await _sut.SubscribeOrExecuteAsync(id, payload, context); /* Then */ await _executer.Received().ExecuteAsync( Arg.Is(payload.OperationName), Arg.Is(payload.Query), Arg.Any <dynamic>(), context); }
public async Task Unsubscribe_writes_complete() { /* Given */ string id = "1"; var payload = new OperationMessagePayload(); var context = new MessageHandlingContext(_server, null); await _sut.SubscribeOrExecuteAsync(id, payload, context); /* When */ await _sut.UnsubscribeAsync(id); /* Then */ await _writer.Received().SendAsync( Arg.Is <OperationMessage>( message => message.Id == id && message.Type == MessageType.GQL_COMPLETE)); }
public void Subscribe_to_stream() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); var stream = new Subject <ExecutionResult>(); var result = new SubscriptionExecutionResult { Streams = new Dictionary <string, IObservable <ExecutionResult> > { { "op", stream } } }; /* When */ var sut = new Subscription(id, payload, result, _writer, null, new NullLogger <Subscription>()); /* Then */ Assert.True(stream.HasObservers); }
public void Subscribe_to_stream() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); var stream = Substitute.For <IObservable <ExecutionResult> >(); var result = new SubscriptionExecutionResult { Streams = new Dictionary <string, IObservable <ExecutionResult> > { { "op", stream } } }; /* When */ var sut = new Subscription(id, payload, result, _writer, null, new NullLogger <Subscription>()); /* Then */ stream.Received().Subscribe(Arg.Is <Subscription>(sub => sub.Id == id)); }
public async Task Failed_Subscribe_does_not_add() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); _executer.ExecuteAsync(null, null, null).ReturnsForAnyArgs( new SubscriptionExecutionResult { Errors = new ExecutionErrors { new ExecutionError("error") } }); /* When */ await _sut.SubscribeOrExecuteAsync(id, payload, _writer); /* Then */ Assert.Empty(_sut); }
public void Subscribe_to_completed_stream_should_not_throw() { /* Given */ var id = "1"; var payload = new OperationMessagePayload(); var subject = new Subject <ExecutionResult>(); subject.OnCompleted(); var stream = subject; var result = new SubscriptionExecutionResult { Streams = new Dictionary <string, IObservable <ExecutionResult> > { { "op", stream } } }; /* When */ /* Then */ var sut = new Subscription(id, payload, result, _writer, null, new NullLogger <Subscription>()); }